From 128ba2828a93ae6f5de9573bf48a117ed02c3b6a Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Wed, 26 Nov 2008 23:38:30 +0000 Subject: [PATCH] modules/admin-core: extend network scheme to cover ipv6 routes and metric options modules/admin-full: add route6 support i18n/english: add required strings --- i18n/english/luasrc/i18n/admin-core.en.lua | 10 +++- i18n/english/luasrc/i18n/admin-core.en.xml | 10 +++- .../admin-core/root/lib/uci/schema/default/network | 40 ++++++++++++++ .../luasrc/model/cbi/admin_network/routes.lua | 64 +++++++++++++++++++--- 4 files changed, 111 insertions(+), 13 deletions(-) diff --git a/i18n/english/luasrc/i18n/admin-core.en.lua b/i18n/english/luasrc/i18n/admin-core.en.lua index b9d77ceb8..72d9a66f4 100644 --- a/i18n/english/luasrc/i18n/admin-core.en.lua +++ b/i18n/english/luasrc/i18n/admin-core.en.lua @@ -168,7 +168,8 @@ dhcp_dnsmasq_dhcpboot = 'Network Boot Image' a_n_switch = 'Switch' a_n_conntrack = 'Active Connections' a_n_conntrack_desc = 'This page gives an overview over currently active network connections.' -a_n_routes = 'Routes' +a_n_routes = 'IPv4 Routes' +a_n_routes6 = 'IPv6 Routes' a_network1 = 'In this area you find all network-related settings.' a_network2 = 'On most routers the network switch can be freely configured and splitted up into several VLANs.' a_network3 = 'Interfaces and PPPoE / PPTP-Settings allow a custom organisation of the network and connections to other networks like the internet.' @@ -222,9 +223,12 @@ network_interface_service = 'Service type' network_interface_maxwait = 'Setup wait time' network_interface_maxwait_desc = 'Seconds to wait for the modem to become ready before attempting to connect' a_n_r_routes1 = 'Routes specify over which interface and gateway a certain host or network can be reached.' -a_n_routes_static = 'Static Routes' +a_n_routes_static = 'Static IPv4 Routes' +a_n_routes_static6 = 'Static IPv6 Routes' a_n_routes_kernel4 = 'Active IPv4-Routes' -a_n_r_target1 = 'host-IP or network' +a_n_routes_kernel6 = 'Active IPv6-Routes' +a_n_r_target1 = 'Host-IP or Network' +a_n_r_target6 = 'IPv6-Address or Network (CIDR)' a_n_r_netmask1 = 'if target is a network' m_n_inet = 'Internet Connection' m_n_local = 'Local Network' diff --git a/i18n/english/luasrc/i18n/admin-core.en.xml b/i18n/english/luasrc/i18n/admin-core.en.xml index e1f29ffbe..231745c56 100644 --- a/i18n/english/luasrc/i18n/admin-core.en.xml +++ b/i18n/english/luasrc/i18n/admin-core.en.xml @@ -172,7 +172,8 @@ Switch Active Connections This page gives an overview over currently active network connections. -Routes +IPv4 Routes +IPv6 Routes In this area you find all network-related settings. On most routers the network switch can be freely configured and splitted up into several VLANs. Interfaces and PPPoE / PPTP-Settings allow a custom organisation of the network and connections to other networks like the internet. @@ -226,9 +227,12 @@ Setup wait time Seconds to wait for the modem to become ready before attempting to connect Routes specify over which interface and gateway a certain host or network can be reached. -Static Routes +Static IPv4 Routes +Static IPv6 Routes Active IPv4-Routes -host-IP or network +Active IPv6-Routes +Host-IP or Network +IPv6-Address or Network (CIDR) if target is a network Internet Connection Local Network diff --git a/modules/admin-core/root/lib/uci/schema/default/network b/modules/admin-core/root/lib/uci/schema/default/network index e0a6dc190..8cf79cb3f 100644 --- a/modules/admin-core/root/lib/uci/schema/default/network +++ b/modules/admin-core/root/lib/uci/schema/default/network @@ -386,6 +386,46 @@ config variable option datatype 'ip4addr' option required 'true' +config variable + option name 'metric' + option title 'Metric' + option section 'network.route6' + option datatype 'uint' + + + +config section + option name 'route6' + option title 'Static IPv6 route definition' + option package 'network' + +config variable + option name 'interface' + option title 'Interface' + option section 'network.route6' + option valueof 'network.interface' + option required 'true' + +config variable + option name 'target' + option title 'Target IPv6 host or network (CIDR)' + option section 'network.route6' + option datatype 'ip6addr' + option required 'true' + +config variable + option name 'gateway' + option title 'IPv6 gateway' + option section 'network.route6' + option datatype 'ip6addr' + option required 'true' + +config variable + option name 'metric' + option title 'Metric' + option section 'network.route6' + option datatype 'uint' + config section 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 aa32324e6..4232daf8a 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/routes.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/routes.lua @@ -16,31 +16,62 @@ m = Map("network", translate("a_n_routes"), translate("a_n_routes1")) if not arg or not arg[1] then local routes = luci.sys.net.routes() - + v = m:section(Table, routes, translate("a_n_routes_kernel4")) - + net = v:option(DummyValue, "iface", translate("network")) function net.cfgvalue(self, section) return luci.tools.webadmin.iface_get_network(routes[section].Iface) or routes[section].Iface end - + target = v:option(DummyValue, "target", translate("target")) function target.cfgvalue(self, section) return luci.ip.Hex(routes[section].Destination, 32):string() end - + netmask = v:option(DummyValue, "netmask", translate("netmask")) function netmask.cfgvalue(self, section) return luci.ip.Hex(routes[section].Mask, 32):string() end - + gateway = v:option(DummyValue, "gateway", translate("gateway")) function gateway.cfgvalue(self, section) return luci.ip.Hex(routes[section].Gateway, 32):string() end - + + metric = v:option(DummyValue, "Metric", translate("metric")) + + + local routes6 = luci.sys.net.routes6() + + v = m:section(Table, routes6, translate("a_n_routes_kernel6")) + + net = v:option(DummyValue, "iface", translate("network")) + function net.cfgvalue(self, section) + return luci.tools.webadmin.iface_get_network(routes6[section].device) + or routes6[section].device + end + + target = v:option(DummyValue, "target", translate("target")) + function target.cfgvalue(self, section) + return routes6[section].dst_ip .. "/" .. routes6[section].dst_prefix + end +--[[ + netmask = v:option(DummyValue, "prefix", translate("prefix")) + function netmask.cfgvalue(self, section) + return luci.ip.Hex(routes6[section].Mask, 32):string() + end +]] + gateway = v:option(DummyValue, "gateway", translate("gateway6")) + function gateway.cfgvalue(self, section) + return routes6[section].src_ip .. "/" .. routes6[section].src_prefix + end + metric = v:option(DummyValue, "Metric", translate("metric")) + function metric.cfgvalue(self, section) + return string.format( "%08X", routes6[section].metric ) + end end @@ -63,4 +94,23 @@ s:option(Value, "netmask", translate("netmask"), translate("a_n_r_netmask1")).rm s:option(Value, "gateway", translate("gateway")) -return m \ No newline at end of file + +s = m:section(TypedSection, "route6", translate("a_n_routes_static6")) +s.addremove = true +s.anonymous = true + +s.template = "cbi/tblsection" + +iface = s:option(ListValue, "interface", translate("interface")) +luci.tools.webadmin.cbi_add_networks(iface) + +if not arg or not arg[1] then + net.titleref = iface.titleref +end + +s:option(Value, "target", translate("target"), translate("a_n_r_target6")) + +s:option(Value, "gateway", translate("gateway6")).rmempty = true + + +return m -- 2.11.0