luci-mod-admin-full: routes: specify sizes for metric and MTU
[project/luci.git] / modules / luci-mod-admin-full / luasrc / model / cbi / admin_network / routes.lua
1 -- Copyright 2008 Steven Barth <steven@midlink.org>
2 -- Licensed to the public under the Apache License 2.0.
3
4 local wa = require "luci.tools.webadmin"
5 local fs = require "nixio.fs"
6
7 m = Map("network",
8 translate("Routes"),
9 translate("Routes specify over which interface and gateway a certain host or network " ..
10 "can be reached."))
11
12 s = m:section(TypedSection, "route", translate("Static IPv4 Routes"))
13 s.addremove = true
14 s.anonymous = true
15
16 s.template = "cbi/tblsection"
17
18 iface = s:option(ListValue, "interface", translate("Interface"))
19 wa.cbi_add_networks(iface)
20
21 t = s:option(Value, "target", translate("Target"), translate("Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"))
22 t.datatype = "ip4addr"
23 t.rmempty = false
24
25 n = s:option(Value, "netmask", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"), translate("if target is a network"))
26 n.placeholder = "255.255.255.255"
27 n.datatype = "ip4addr"
28 n.rmempty = true
29
30 g = s:option(Value, "gateway", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"))
31 g.datatype = "ip4addr"
32 g.rmempty = true
33
34 metric = s:option(Value, "metric", translate("Metric"))
35 metric.placeholder = 0
36 metric.datatype = "range(0,255)"
37 metric.size = 5
38 metric.rmempty = true
39
40 mtu = s:option(Value, "mtu", translate("MTU"))
41 mtu.placeholder = 1500
42 mtu.datatype = "range(64,9000)"
43 mtu.size = 5
44 mtu.rmempty = true
45
46 routetype = s:option(Value, "type", translate("Route type"))
47 routetype:value("", "unicast")
48 routetype:value("local", "local")
49 routetype:value("broadcast", "broadcast")
50 routetype:value("multicast", "multicast")
51 routetype:value("unreachable", "unreachable")
52 routetype:value("prohibit", "prohibit")
53 routetype:value("blackhole", "blackhole")
54 routetype:value("anycast", "anycast")
55 routetype.default = ""
56 routetype.rmempty = true
57
58 if fs.access("/proc/net/ipv6_route") then
59 s = m:section(TypedSection, "route6", translate("Static IPv6 Routes"))
60 s.addremove = true
61 s.anonymous = true
62
63 s.template = "cbi/tblsection"
64
65 iface = s:option(ListValue, "interface", translate("Interface"))
66 wa.cbi_add_networks(iface)
67
68 t = s:option(Value, "target", translate("Target"), translate("<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network (CIDR)"))
69 t.datatype = "ip6addr"
70 t.rmempty = false
71
72 g = s:option(Value, "gateway", translate("<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"))
73 g.datatype = "ip6addr"
74 g.rmempty = true
75
76 metric = s:option(Value, "metric", translate("Metric"))
77 metric.placeholder = 0
78 metric.datatype = "range(0,65535)" -- XXX: not sure
79 metric.size = 5
80 metric.rmempty = true
81
82 mtu = s:option(Value, "mtu", translate("MTU"))
83 mtu.placeholder = 1500
84 mtu.datatype = "range(64,9000)"
85 mtu.size = 5
86 mtu.rmempty = true
87
88 routetype = s:option(Value, "type", translate("Route type"))
89 routetype:value("", "unicast")
90 routetype:value("local", "local")
91 routetype:value("broadcast", "broadcast")
92 routetype:value("multicast", "multicast")
93 routetype:value("unreachable", "unreachable")
94 routetype:value("prohibit", "prohibit")
95 routetype:value("blackhole", "blackhole")
96 routetype:value("anycast", "anycast")
97 routetype.default = ""
98 routetype.rmempty = true
99 end
100
101
102 return m