luci-app-mwan3: refactoring warning compilation on the interface config pages
[project/luci.git] / applications / luci-app-mwan3 / luasrc / model / cbi / mwan / interfaceconfig.lua
1 dsp = require "luci.dispatcher"
2 sys = require "luci.sys"
3 ut = require "luci.util"
4 arg[1] = arg[1] or ""
5
6
7 m5 = Map("mwan3", translatef("MWAN Interface Configuration - %s", arg[1]))
8         m5.redirect = dsp.build_url("admin", "network", "mwan", "interface")
9
10
11 mwan_interface = m5:section(NamedSection, arg[1], "interface", "")
12         mwan_interface.addremove = false
13         mwan_interface.dynamic = false
14
15
16 enabled = mwan_interface:option(ListValue, "enabled", translate("Enabled"))
17         enabled.default = "1"
18         enabled:value("1", translate("Yes"))
19         enabled:value("0", translate("No"))
20
21 initial_state = mwan_interface:option(ListValue, "initial_state", translate("Initial state"),
22         translate("Expect interface state on up event"))
23         initial_state.default = "online"
24         initial_state:value("online", translate("Online"))
25         initial_state:value("offline", translate("Offline"))
26
27 family = mwan_interface:option(ListValue, "family", translate("Internet Protocol"))
28         family.default = "ipv4"
29         family:value("ipv4", translate("IPv4"))
30         family:value("ipv6", translate("IPv6"))
31
32 track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking hostname or IP address"),
33         translate("This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online"))
34         track_ip.datatype = "host"
35
36 track_method = mwan_interface:option(ListValue, "track_method", translate("Tracking method"))
37         track_method.default = "ping"
38         track_method:value("ping")
39         track_method:value("arping")
40         track_method:value("httping")
41
42 reliability = mwan_interface:option(Value, "reliability", translate("Tracking reliability"),
43         translate("Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up"))
44         reliability.datatype = "range(1, 100)"
45         reliability.default = "1"
46
47 count = mwan_interface:option(ListValue, "count", translate("Ping count"))
48         count.default = "1"
49         count:value("1")
50         count:value("2")
51         count:value("3")
52         count:value("4")
53         count:value("5")
54
55 size = mwan_interface:option(Value, "size", translate("Ping size"))
56         size.default = "56"
57         size:value("8")
58         size:value("24")
59         size:value("56")
60         size:value("120")
61         size:value("248")
62         size:value("504")
63         size:value("1016")
64         size:value("1472")
65         size:value("2040")
66         size.datatype = "range(1, 65507)"
67         size.rmempty = false
68         size.optional = false
69
70 timeout = mwan_interface:option(ListValue, "timeout", translate("Ping timeout"))
71         timeout.default = "2"
72         timeout:value("1", translatef("%d second", 1))
73         timeout:value("2", translatef("%d seconds", 2))
74         timeout:value("3", translatef("%d seconds", 3))
75         timeout:value("4", translatef("%d seconds", 4))
76         timeout:value("5", translatef("%d seconds", 5))
77         timeout:value("6", translatef("%d seconds", 6))
78         timeout:value("7", translatef("%d seconds", 7))
79         timeout:value("8", translatef("%d seconds", 8))
80         timeout:value("9", translatef("%d seconds", 9))
81         timeout:value("10", translatef("%d seconds", 10))
82
83 interval = mwan_interface:option(ListValue, "interval", translate("Ping interval"))
84         interval.default = "5"
85         interval:value("1", translatef("%d second", 1))
86         interval:value("3", translatef("%d seconds", 3))
87         interval:value("5", translatef("%d seconds", 5))
88         interval:value("10", translatef("%d seconds", 10))
89         interval:value("20", translatef("%d seconds", 20))
90         interval:value("30", translatef("%d seconds", 30))
91         interval:value("60", translatef("%d minute", 1))
92         interval:value("300", translatef("%d minutes", 5))
93         interval:value("600", translatef("%d minutes", 10))
94         interval:value("900", translatef("%d minutes", 15))
95         interval:value("1800", translatef("%d minutes", 30))
96         interval:value("3600", translatef("%d hour", 1))
97
98 failure = mwan_interface:option(Value, "failure_interval", translate("Failure interval"),
99         translate("Ping interval during failure detection"))
100         failure.default = "5"
101         failure:value("1", translatef("%d second", 1))
102         failure:value("3", translatef("%d seconds", 3))
103         failure:value("5", translatef("%d seconds", 5))
104         failure:value("10", translatef("%d seconds", 10))
105         failure:value("20", translatef("%d seconds", 20))
106         failure:value("30", translatef("%d seconds", 30))
107         failure:value("60", translatef("%d minute", 1))
108         failure:value("300", translatef("%d minutes", 5))
109         failure:value("600", translatef("%d minutes", 10))
110         failure:value("900", translatef("%d minutes", 15))
111         failure:value("1800", translatef("%d minutes", 30))
112         failure:value("3600", translatef("%d hour", 1))
113
114 keep_failure = mwan_interface:option(Flag, "keep_failure_interval", translate("Keep failure interval"),
115         translate("Keep ping failure interval during failure state"))
116         keep_failure.default = keep_failure.disabled
117
118 recovery = mwan_interface:option(Value, "recovery_interval", translate("Recovery interval"),
119         translate("Ping interval during failure recovering"))
120         recovery.default = "5"
121         recovery:value("1", translatef("%d second", 1))
122         recovery:value("3", translatef("%d seconds", 3))
123         recovery:value("5", translatef("%d seconds", 5))
124         recovery:value("10", translatef("%d seconds", 10))
125         recovery:value("20", translatef("%d seconds", 20))
126         recovery:value("30", translatef("%d seconds", 30))
127         recovery:value("60", translatef("%d minute", 1))
128         recovery:value("300", translatef("%d minutes", 5))
129         recovery:value("600", translatef("%d minutes", 10))
130         recovery:value("900", translatef("%d minutes", 15))
131         recovery:value("1800", translatef("%d minutes", 30))
132         recovery:value("3600", translatef("%d hour", 1))
133
134 down = mwan_interface:option(ListValue, "down", translate("Interface down"),
135         translate("Interface will be deemed down after this many failed ping tests"))
136         down.default = "3"
137         down:value("1")
138         down:value("2")
139         down:value("3")
140         down:value("4")
141         down:value("5")
142         down:value("6")
143         down:value("7")
144         down:value("8")
145         down:value("9")
146         down:value("10")
147
148 up = mwan_interface:option(ListValue, "up", translate("Interface up"),
149         translate("Downed interface will be deemed up after this many successful ping tests"))
150         up.default = "3"
151         up:value("1")
152         up:value("2")
153         up:value("3")
154         up:value("4")
155         up:value("5")
156         up:value("6")
157         up:value("7")
158         up:value("8")
159         up:value("9")
160         up:value("10")
161
162 flush = mwan_interface:option(ListValue, "flush_conntrack", translate("Flush conntrack table"),
163         translate("Flush global firewall conntrack table on interface events"))
164         flush.default = "never"
165         flush:value("ifup", translate("ifup"))
166         flush:value("ifdown", translate("ifdown"))
167         flush:value("never", translate("never"))
168         flush:value("always", translate("always"))
169
170 metric = mwan_interface:option(DummyValue, "metric", translate("Metric"),
171         translate("This displays the metric assigned to this interface in /etc/config/network"))
172         metric.rawhtml = true
173         function metric.cfgvalue(self, s)
174                 local uci = uci.cursor(nil, "/var/state")
175                 local metric = uci:get("network", arg[1], "metric")
176                 if metric then
177                         return metric
178                 else
179                         return "—"
180                 end
181         end
182
183 return m5