modules/admin-core: extend network scheme to cover ipv6 routes and metric options
[project/luci.git] / modules / admin-full / luasrc / model / cbi / admin_network / routes.lua
index d7b8519..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()
-       
+
        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
 
 
@@ -48,11 +79,6 @@ s = m:section(TypedSection, "route", translate("a_n_routes_static"))
 s.addremove = true
 s.anonymous = true
 
-function s.render(...)
-       luci.model.uci.load_config("network")
-       TypedSection.render(...)
-end
-
 s.template  = "cbi/tblsection"
 
 iface = s:option(ListValue, "interface", translate("interface"))
@@ -68,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