diff --git a/i18n/english/luasrc/i18n/admin-core.en.lua b/i18n/english/luasrc/i18n/admin-core.en.lua
index b9d77ceb86..72d9a66f4a 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 e1f29ffbe5..231745c561 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 e0a6dc1908..8cf79cb3f6 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 aa32324e69..4232daf8a9 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