Don't fail if we do not have v6 support
authorSteven Barth <steven@midlink.org>
Sun, 30 Nov 2008 18:43:38 +0000 (18:43 +0000)
committerSteven Barth <steven@midlink.org>
Sun, 30 Nov 2008 18:43:38 +0000 (18:43 +0000)
libs/sys/luasrc/sys.lua
modules/admin-full/luasrc/model/cbi/admin_network/routes.lua

index 948da5b1e3562393199aae63f8b3ab8135e4c2a6..e92adc1ad6ab8972f990baa4aff02eb160293535 100644 (file)
@@ -320,7 +320,11 @@ end
 --                       "flags", "device" }
 function net.defaultroute6()
        local route = nil
-       for _, r in pairs(net.routes6()) do
+       local routes6 = net.routes6()
+       if not routes6 then
+               return nil
+       end
+       for _, r in pairs(routes6) do
                if r.dest:prefix() == 0 and (not route or route.metric > r.metric) then
                        route = r
                end
@@ -417,6 +421,10 @@ end
 function net.routes6()
        local routes = { }
 
+       if not luci.fs.access("/proc/net/ipv6_route", "r") then
+               return nil
+       end
+
        for line in io.lines("/proc/net/ipv6_route") do
 
                local dst_ip, dst_prefix, src_ip, src_prefix, nexthop,
index aa22cf63f290886b99a6c77e017505fb8e9c5a62..0d20d67223bdfd0d43dbb31ca7db706925edf603 100644 (file)
@@ -14,6 +14,8 @@ $Id$
 require("luci.tools.webadmin")
 m = Map("network", translate("a_n_routes"), translate("a_n_routes1"))
 
+local routes6 = luci.sys.net.routes6()
+
 if not arg or not arg[1] then
        local routes = luci.sys.net.routes()
 
@@ -42,31 +44,30 @@ if not arg or not arg[1] then
 
        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].dest:string()
-       end
-
-       gateway = v:option(DummyValue, "gateway", translate("gateway6"))
-       function gateway.cfgvalue(self, section)
-               return routes6[section].source:string()
+       if routes6 then
+               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].dest:string()
+               end
+
+               gateway = v:option(DummyValue, "gateway", translate("gateway6"))
+               function gateway.cfgvalue(self, section)
+                       return routes6[section].source:string()
+               end
+
+               metric = v:option(DummyValue, "Metric", translate("metric"))
+           function metric.cfgvalue(self, section)
+               return string.format( "%08X", routes6[section].metric )
+           end
        end
-
-       metric = v:option(DummyValue, "Metric", translate("metric"))
-    function metric.cfgvalue(self, section)
-        return string.format( "%08X", routes6[section].metric )
-    end
 end
 
 
@@ -89,23 +90,24 @@ s:option(Value, "netmask", translate("netmask"), translate("a_n_r_netmask1")).rm
 
 s:option(Value, "gateway", translate("gateway"))
 
+if routes6 then
+       s = m:section(TypedSection, "route6", translate("a_n_routes_static6"))
+       s.addremove = true
+       s.anonymous = true
 
-s = m:section(TypedSection, "route6", translate("a_n_routes_static6"))
-s.addremove = true
-s.anonymous = true
+       s.template  = "cbi/tblsection"
 
-s.template  = "cbi/tblsection"
+       iface = s:option(ListValue, "interface", translate("interface"))
+       luci.tools.webadmin.cbi_add_networks(iface)
 
-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
+       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, "target", translate("target"), translate("a_n_r_target6"))
 
-s:option(Value, "gateway", translate("gateway6")).rmempty = true
+       s:option(Value, "gateway", translate("gateway6")).rmempty = true
+end
 
 
 return m