luci-mod-admin-full: switch to luci.ip route functions
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
This commit is contained in:
parent
e9bfa5fe79
commit
5b94c1cca2
2 changed files with 97 additions and 32 deletions
|
@ -1,14 +1,14 @@
|
||||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||||
-- Licensed to the public under the Apache License 2.0.
|
-- Licensed to the public under the Apache License 2.0.
|
||||||
|
|
||||||
require("luci.tools.webadmin")
|
local wa = require "luci.tools.webadmin"
|
||||||
|
local fs = require "nixio.fs"
|
||||||
|
|
||||||
m = Map("network",
|
m = Map("network",
|
||||||
translate("Routes"),
|
translate("Routes"),
|
||||||
translate("Routes specify over which interface and gateway a certain host or network " ..
|
translate("Routes specify over which interface and gateway a certain host or network " ..
|
||||||
"can be reached."))
|
"can be reached."))
|
||||||
|
|
||||||
local routes6 = luci.sys.net.routes6()
|
|
||||||
|
|
||||||
s = m:section(TypedSection, "route", translate("Static IPv4 Routes"))
|
s = m:section(TypedSection, "route", translate("Static IPv4 Routes"))
|
||||||
s.addremove = true
|
s.addremove = true
|
||||||
s.anonymous = true
|
s.anonymous = true
|
||||||
|
@ -16,7 +16,7 @@ s.anonymous = true
|
||||||
s.template = "cbi/tblsection"
|
s.template = "cbi/tblsection"
|
||||||
|
|
||||||
iface = s:option(ListValue, "interface", translate("Interface"))
|
iface = s:option(ListValue, "interface", translate("Interface"))
|
||||||
luci.tools.webadmin.cbi_add_networks(iface)
|
wa.cbi_add_networks(iface)
|
||||||
|
|
||||||
t = s:option(Value, "target", translate("Target"), translate("Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"))
|
t = s:option(Value, "target", translate("Target"), translate("Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"))
|
||||||
t.datatype = "ip4addr"
|
t.datatype = "ip4addr"
|
||||||
|
@ -41,7 +41,7 @@ mtu.placeholder = 1500
|
||||||
mtu.datatype = "range(64,9000)"
|
mtu.datatype = "range(64,9000)"
|
||||||
mtu.rmempty = true
|
mtu.rmempty = true
|
||||||
|
|
||||||
if routes6 then
|
if fs.access("/proc/net/ipv6_route") then
|
||||||
s = m:section(TypedSection, "route6", translate("Static IPv6 Routes"))
|
s = m:section(TypedSection, "route6", translate("Static IPv6 Routes"))
|
||||||
s.addremove = true
|
s.addremove = true
|
||||||
s.anonymous = true
|
s.anonymous = true
|
||||||
|
@ -49,7 +49,7 @@ if routes6 then
|
||||||
s.template = "cbi/tblsection"
|
s.template = "cbi/tblsection"
|
||||||
|
|
||||||
iface = s:option(ListValue, "interface", translate("Interface"))
|
iface = s:option(ListValue, "interface", translate("Interface"))
|
||||||
luci.tools.webadmin.cbi_add_networks(iface)
|
wa.cbi_add_networks(iface)
|
||||||
|
|
||||||
t = s:option(Value, "target", translate("Target"), translate("<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network (CIDR)"))
|
t = s:option(Value, "target", translate("Target"), translate("<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network (CIDR)"))
|
||||||
t.datatype = "ip6addr"
|
t.datatype = "ip6addr"
|
||||||
|
|
|
@ -1,15 +1,33 @@
|
||||||
<%#
|
<%#
|
||||||
Copyright 2008-2009 Steven Barth <steven@midlink.org>
|
Copyright 2008-2009 Steven Barth <steven@midlink.org>
|
||||||
Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org>
|
Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org>
|
||||||
Licensed to the public under the Apache License 2.0.
|
Licensed to the public under the Apache License 2.0.
|
||||||
-%>
|
-%>
|
||||||
|
|
||||||
<%-
|
<%-
|
||||||
require "luci.sys"
|
|
||||||
require "luci.tools.webadmin"
|
require "luci.tools.webadmin"
|
||||||
require "nixio.fs"
|
require "nixio.fs"
|
||||||
|
|
||||||
|
local ip = require "luci.ip"
|
||||||
local style = true
|
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%>
|
<%+header%>
|
||||||
|
@ -18,7 +36,7 @@
|
||||||
<h2><a id="content" name="content"><%:Routes%></a></h2>
|
<h2><a id="content" name="content"><%:Routes%></a></h2>
|
||||||
<div class="cbi-map-descr"><%:The following rules are currently active on this system.%></div>
|
<div class="cbi-map-descr"><%:The following rules are currently active on this system.%></div>
|
||||||
|
|
||||||
<fieldset class="cbi-section" id="cbi-table-table">
|
<fieldset class="cbi-section">
|
||||||
<legend>ARP</legend>
|
<legend>ARP</legend>
|
||||||
<div class="cbi-section-node">
|
<div class="cbi-section-node">
|
||||||
<table class="cbi-section-table">
|
<table class="cbi-section-table">
|
||||||
|
@ -28,19 +46,26 @@
|
||||||
<th class="cbi-section-table-cell"><%:Interface%></th>
|
<th class="cbi-section-table-cell"><%:Interface%></th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<% luci.sys.net.arptable(function(e) %>
|
<%
|
||||||
|
for _, v in ipairs(ip.neighbors({ family = 4 })) do
|
||||||
|
if v.mac then
|
||||||
|
%>
|
||||||
<tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
|
<tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
|
||||||
<td class="cbi-value-field"><%=e["IP address"]%></td>
|
<td class="cbi-value-field"><%=v.dest%></td>
|
||||||
<td class="cbi-value-field"><%=e["HW address"]%></td>
|
<td class="cbi-value-field"><%=v.mac%></td>
|
||||||
<td class="cbi-value-field"><%=e["Device"]%></td>
|
<td class="cbi-value-field"><%=v.dev%></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% style = not style; end) %>
|
<%
|
||||||
|
style = not style
|
||||||
|
end
|
||||||
|
end
|
||||||
|
%>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<fieldset class="cbi-section" id="cbi-table-table">
|
<fieldset class="cbi-section">
|
||||||
<legend><%_Active <abbr title="Internet Protocol Version 4">IPv4</abbr>-Routes%></legend>
|
<legend><%_Active <abbr title="Internet Protocol Version 4">IPv4</abbr>-Routes%></legend>
|
||||||
|
|
||||||
<div class="cbi-section-node">
|
<div class="cbi-section-node">
|
||||||
|
@ -50,25 +75,27 @@
|
||||||
<th class="cbi-section-table-cell"><%:Target%></th>
|
<th class="cbi-section-table-cell"><%:Target%></th>
|
||||||
<th class="cbi-section-table-cell"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Gateway%></th>
|
<th class="cbi-section-table-cell"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Gateway%></th>
|
||||||
<th class="cbi-section-table-cell"><%:Metric%></th>
|
<th class="cbi-section-table-cell"><%:Metric%></th>
|
||||||
|
<th class="cbi-section-table-cell"><%:Table%></th>
|
||||||
</tr>
|
</tr>
|
||||||
<% luci.sys.net.routes(function(rt) %>
|
<% for _, v in ipairs(ip.routes({ family = 4, type = 1 })) do %>
|
||||||
<tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
|
<tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
|
||||||
<td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(rt.device) or rt.device%></td>
|
<td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or v.dev%></td>
|
||||||
<td class="cbi-value-field"><%=rt.dest:string()%></td>
|
<td class="cbi-value-field"><%=v.dest%></td>
|
||||||
<td class="cbi-value-field"><%=rt.gateway:string()%></td>
|
<td class="cbi-value-field"><%=v.gw%></td>
|
||||||
<td class="cbi-value-field"><%=rt.metric%></td>
|
<td class="cbi-value-field"><%=v.metric or 0%></td>
|
||||||
|
<td class="cbi-value-field"><%=rtn[v.table] or v.table%></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% style = not style; end) %>
|
<% style = not style end %>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<% if nixio.fs.access("/proc/net/ipv6_route") then
|
<%
|
||||||
|
if nixio.fs.access("/proc/net/ipv6_route") then
|
||||||
style = true
|
style = true
|
||||||
fe80 = luci.ip.IPv6("fe80::/10")
|
|
||||||
%>
|
%>
|
||||||
<fieldset class="cbi-section" id="cbi-table-table">
|
<fieldset class="cbi-section">
|
||||||
<legend><%_Active <abbr title="Internet Protocol Version 6">IPv6</abbr>-Routes%></legend>
|
<legend><%_Active <abbr title="Internet Protocol Version 6">IPv6</abbr>-Routes%></legend>
|
||||||
|
|
||||||
<div class="cbi-section-node">
|
<div class="cbi-section-node">
|
||||||
|
@ -76,17 +103,55 @@
|
||||||
<tr class="cbi-section-table-titles">
|
<tr class="cbi-section-table-titles">
|
||||||
<th class="cbi-section-table-cell"><%:Network%></th>
|
<th class="cbi-section-table-cell"><%:Network%></th>
|
||||||
<th class="cbi-section-table-cell"><%:Target%></th>
|
<th class="cbi-section-table-cell"><%:Target%></th>
|
||||||
<th class="cbi-section-table-cell"><%_<abbr title="Internet Protocol Version 6">IPv6</abbr>-Gateway%></th>
|
<th class="cbi-section-table-cell"><%:Source%></th>
|
||||||
<th class="cbi-section-table-cell"><%:Metric%></th>
|
<th class="cbi-section-table-cell"><%:Metric%></th>
|
||||||
|
<th class="cbi-section-table-cell"><%:Table%></th>
|
||||||
</tr>
|
</tr>
|
||||||
<% luci.sys.net.routes6(function(rt) if fe80:contains(rt.dest) then return end %>
|
<%
|
||||||
|
for _, v in ipairs(ip.routes({ family = 6, type = 1 })) do
|
||||||
|
if v.dest and not v.dest:is6linklocal() then
|
||||||
|
%>
|
||||||
<tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
|
<tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
|
||||||
<td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(rt.device) or '(' .. rt.device .. ')'%></td>
|
<td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></td>
|
||||||
<td class="cbi-value-field"><%=rt.dest:string()%></td>
|
<td class="cbi-value-field"><%=v.dest%></td>
|
||||||
<td class="cbi-value-field"><%=rt.source:string()%></td>
|
<td class="cbi-value-field"><%=v.from%></td>
|
||||||
<td class="cbi-value-field"><%=rt.metric_raw:upper()%></td>
|
<td class="cbi-value-field"><%=v.metric or 0%></td>
|
||||||
|
<td class="cbi-value-field"><%=rtn[v.table] or v.table%></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% style = not style; end) %>
|
<%
|
||||||
|
style = not style
|
||||||
|
end
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<fieldset class="cbi-section">
|
||||||
|
<legend><%:IPv6 Neighbours%></legend>
|
||||||
|
|
||||||
|
<div class="cbi-section-node">
|
||||||
|
<table class="cbi-section-table">
|
||||||
|
<tr class="cbi-section-table-titles">
|
||||||
|
<th class="cbi-section-table-cell"><%:IPv6-Address%></th>
|
||||||
|
<th class="cbi-section-table-cell"><%:MAC-Address%></th>
|
||||||
|
<th class="cbi-section-table-cell"><%:Interface%></th>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
for _, v in ipairs(ip.neighbors({ family = 6 })) do
|
||||||
|
if v.dest and not v.dest:is6linklocal() and v.mac then
|
||||||
|
%>
|
||||||
|
<tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
|
||||||
|
<td class="cbi-value-field"><%=v.dest%></td>
|
||||||
|
<td class="cbi-value-field"><%=v.mac%></td>
|
||||||
|
<td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
style = not style
|
||||||
|
end
|
||||||
|
end
|
||||||
|
%>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
Loading…
Reference in a new issue