treewide: filter shell arguments through shellquote() where applicable
[project/luci.git] / modules / luci-mod-admin-full / luasrc / model / cbi / admin_network / routes.lua
index 209bdf1..1970f36 100644 (file)
@@ -1,25 +1,14 @@
---[[
-LuCI - Lua Configuration Interface
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
 
-Copyright 2008 Steven Barth <steven@midlink.org>
+local wa = require "luci.tools.webadmin"
+local fs = require "nixio.fs"
 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-$Id$
-]]--
-
-require("luci.tools.webadmin")
 m = Map("network",
        translate("Routes"),
        translate("Routes specify over which interface and gateway a certain host or network " ..
                "can be reached."))
 
-local routes6 = luci.sys.net.routes6()
-
 s = m:section(TypedSection, "route", translate("Static IPv4 Routes"))
 s.addremove = true
 s.anonymous = true
@@ -27,7 +16,7 @@ s.anonymous = true
 s.template  = "cbi/tblsection"
 
 iface = s:option(ListValue, "interface", translate("Interface"))
-luci.tools.webadmin.cbi_add_networks(iface)
+wa.cbi_add_networks(iface)
 
 t = s:option(Value, "target", translate("Target"), translate("Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"))
 t.datatype = "ip4addr"
@@ -45,14 +34,28 @@ g.rmempty = true
 metric = s:option(Value, "metric", translate("Metric"))
 metric.placeholder = 0
 metric.datatype = "range(0,255)"
+metric.size = 5
 metric.rmempty = true
 
 mtu = s:option(Value, "mtu", translate("MTU"))
 mtu.placeholder = 1500
 mtu.datatype = "range(64,9000)"
+mtu.size = 5
 mtu.rmempty = true
 
-if routes6 then
+routetype = s:option(Value, "type", translate("Route type"))
+routetype:value("", "unicast")
+routetype:value("local", "local")
+routetype:value("broadcast", "broadcast")
+routetype:value("multicast", "multicast")
+routetype:value("unreachable", "unreachable")
+routetype:value("prohibit", "prohibit")
+routetype:value("blackhole", "blackhole")
+routetype:value("anycast", "anycast")
+routetype.default = ""
+routetype.rmempty = true
+
+if fs.access("/proc/net/ipv6_route") then
        s = m:section(TypedSection, "route6", translate("Static IPv6 Routes"))
        s.addremove = true
        s.anonymous = true
@@ -60,7 +63,7 @@ if routes6 then
        s.template  = "cbi/tblsection"
 
        iface = s:option(ListValue, "interface", translate("Interface"))
-       luci.tools.webadmin.cbi_add_networks(iface)
+       wa.cbi_add_networks(iface)
 
        t = s:option(Value, "target", translate("Target"), translate("<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network (CIDR)"))
        t.datatype = "ip6addr"
@@ -73,12 +76,26 @@ if routes6 then
        metric = s:option(Value, "metric", translate("Metric"))
        metric.placeholder = 0
        metric.datatype = "range(0,65535)" -- XXX: not sure
+       metric.size = 5
        metric.rmempty = true
 
        mtu = s:option(Value, "mtu", translate("MTU"))
        mtu.placeholder = 1500
        mtu.datatype = "range(64,9000)"
+       mtu.size = 5
        mtu.rmempty = true
+
+       routetype = s:option(Value, "type", translate("Route type"))
+       routetype:value("", "unicast")
+       routetype:value("local", "local")
+       routetype:value("broadcast", "broadcast")
+       routetype:value("multicast", "multicast")
+       routetype:value("unreachable", "unreachable")
+       routetype:value("prohibit", "prohibit")
+       routetype:value("blackhole", "blackhole")
+       routetype:value("anycast", "anycast")
+       routetype.default = ""
+       routetype.rmempty = true
 end