modules/admin-core: extend network scheme to cover ipv6 routes and metric options
authorJo-Philipp Wich <jow@openwrt.org>
Wed, 26 Nov 2008 23:38:30 +0000 (23:38 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Wed, 26 Nov 2008 23:38:30 +0000 (23:38 +0000)
modules/admin-full: add route6 support
i18n/english: add required strings

i18n/english/luasrc/i18n/admin-core.en.lua
i18n/english/luasrc/i18n/admin-core.en.xml
modules/admin-core/root/lib/uci/schema/default/network
modules/admin-full/luasrc/model/cbi/admin_network/routes.lua

index b9d77ce..72d9a66 100644 (file)
@@ -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_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 <abbr title="Virtual Local Area Network">VLAN</abbr>s.'
 a_network3 = 'Interfaces and <abbr title="Point-to-Point Protocol over Ethernet">PPPoE</abbr> / <abbr title="Point-to-Point Tunneling Protocol">PPTP</abbr>-Settings allow a custom organisation of the network and connections to other networks like the internet.'
 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 <abbr title="Virtual Local Area Network">VLAN</abbr>s.'
 a_network3 = 'Interfaces and <abbr title="Point-to-Point Protocol over Ethernet">PPPoE</abbr> / <abbr title="Point-to-Point Tunneling Protocol">PPTP</abbr>-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.'
 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 <abbr title="Internet Protocol Version 4">IPv4</abbr>-Routes'
 a_n_routes_kernel4 = 'Active <abbr title="Internet Protocol Version 4">IPv4</abbr>-Routes'
-a_n_r_target1 = 'host-<abbr title="Internet Protocol Address">IP</abbr> or network'
+a_n_routes_kernel6 = 'Active <abbr title="Internet Protocol Version 6">IPv6</abbr>-Routes'
+a_n_r_target1 = 'Host-<abbr title="Internet Protocol Address">IP</abbr> or Network'
+a_n_r_target6 = '<abbr title="Internet Protocol Version 6">IPv6</abbr>-Address or Network (CIDR)'
 a_n_r_netmask1 = 'if target is a network'
 m_n_inet = 'Internet Connection'
 m_n_local = 'Local Network'
 a_n_r_netmask1 = 'if target is a network'
 m_n_inet = 'Internet Connection'
 m_n_local = 'Local Network'
index e1f29ff..231745c 100644 (file)
 <i18n:msg xml:id="a_n_switch">Switch</i18n:msg>
 <i18n:msg xml:id="a_n_conntrack">Active Connections</i18n:msg>
 <i18n:msg xml:id="a_n_conntrack_desc">This page gives an overview over currently active network connections.</i18n:msg>
 <i18n:msg xml:id="a_n_switch">Switch</i18n:msg>
 <i18n:msg xml:id="a_n_conntrack">Active Connections</i18n:msg>
 <i18n:msg xml:id="a_n_conntrack_desc">This page gives an overview over currently active network connections.</i18n:msg>
-<i18n:msg xml:id="a_n_routes">Routes</i18n:msg>
+<i18n:msg xml:id="a_n_routes">IPv4 Routes</i18n:msg>
+<i18n:msg xml:id="a_n_routes6">IPv6 Routes</i18n:msg>
 <i18n:msg xml:id="a_network1">In this area you find all network-related settings.</i18n:msg>
 <i18n:msg xml:id="a_network2">On most routers the network switch can be freely configured and splitted up into several <abbr title="Virtual Local Area Network">VLAN</abbr>s.</i18n:msg>
 <i18n:msg xml:id="a_network3">Interfaces and <abbr title="Point-to-Point Protocol over Ethernet">PPPoE</abbr> / <abbr title="Point-to-Point Tunneling Protocol">PPTP</abbr>-Settings allow a custom organisation of the network and connections to other networks like the internet.</i18n:msg>
 <i18n:msg xml:id="a_network1">In this area you find all network-related settings.</i18n:msg>
 <i18n:msg xml:id="a_network2">On most routers the network switch can be freely configured and splitted up into several <abbr title="Virtual Local Area Network">VLAN</abbr>s.</i18n:msg>
 <i18n:msg xml:id="a_network3">Interfaces and <abbr title="Point-to-Point Protocol over Ethernet">PPPoE</abbr> / <abbr title="Point-to-Point Tunneling Protocol">PPTP</abbr>-Settings allow a custom organisation of the network and connections to other networks like the internet.</i18n:msg>
 <i18n:msg xml:id="network_interface_maxwait">Setup wait time</i18n:msg>
 <i18n:msg xml:id="network_interface_maxwait_desc">Seconds to wait for the modem to become ready before attempting to connect</i18n:msg>
 <i18n:msg xml:id="a_n_r_routes1">Routes specify over which interface and gateway a certain host or network can be reached.</i18n:msg>
 <i18n:msg xml:id="network_interface_maxwait">Setup wait time</i18n:msg>
 <i18n:msg xml:id="network_interface_maxwait_desc">Seconds to wait for the modem to become ready before attempting to connect</i18n:msg>
 <i18n:msg xml:id="a_n_r_routes1">Routes specify over which interface and gateway a certain host or network can be reached.</i18n:msg>
-<i18n:msg xml:id="a_n_routes_static">Static Routes</i18n:msg>
+<i18n:msg xml:id="a_n_routes_static">Static IPv4 Routes</i18n:msg>
+<i18n:msg xml:id="a_n_routes_static6">Static IPv6 Routes</i18n:msg>
 <i18n:msg xml:id="a_n_routes_kernel4">Active <abbr title="Internet Protocol Version 4">IPv4</abbr>-Routes</i18n:msg>
 <i18n:msg xml:id="a_n_routes_kernel4">Active <abbr title="Internet Protocol Version 4">IPv4</abbr>-Routes</i18n:msg>
-<i18n:msg xml:id="a_n_r_target1">host-<abbr title="Internet Protocol Address">IP</abbr> or network</i18n:msg>
+<i18n:msg xml:id="a_n_routes_kernel6">Active <abbr title="Internet Protocol Version 6">IPv6</abbr>-Routes</i18n:msg>
+<i18n:msg xml:id="a_n_r_target1">Host-<abbr title="Internet Protocol Address">IP</abbr> or Network</i18n:msg>
+<i18n:msg xml:id="a_n_r_target6"><abbr title="Internet Protocol Version 6">IPv6</abbr>-Address or Network (CIDR)</i18n:msg>
 <i18n:msg xml:id="a_n_r_netmask1">if target is a network</i18n:msg>
 <i18n:msg xml:id="m_n_inet">Internet Connection</i18n:msg>
 <i18n:msg xml:id="m_n_local">Local Network</i18n:msg>
 <i18n:msg xml:id="a_n_r_netmask1">if target is a network</i18n:msg>
 <i18n:msg xml:id="m_n_inet">Internet Connection</i18n:msg>
 <i18n:msg xml:id="m_n_local">Local Network</i18n:msg>
index e0a6dc1..8cf79cb 100644 (file)
@@ -386,6 +386,46 @@ config variable
        option datatype 'ip4addr'
        option required 'true'
 
        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
 
 
 config section
index aa32324..4232daf 100644 (file)
@@ -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()
 
 if not arg or not arg[1] then
        local routes = luci.sys.net.routes()
-       
+
        v = m:section(Table, routes, translate("a_n_routes_kernel4"))
        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
        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
        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
        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
        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"))
        metric = v:option(DummyValue, "Metric", translate("metric"))
+    function metric.cfgvalue(self, section)
+        return string.format( "%08X", routes6[section].metric )
+    end
 end
 
 
 end
 
 
@@ -63,4 +94,23 @@ s:option(Value, "netmask", translate("netmask"), translate("a_n_r_netmask1")).rm
 
 s:option(Value, "gateway", translate("gateway"))
 
 
 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