1 dsp = require "luci.dispatcher"
5 m5 = Map("mwan3", translatef("MWAN Interface Configuration - %s", arg[1]))
6 m5.redirect = dsp.build_url("admin", "network", "mwan", "interface")
9 mwan_interface = m5:section(NamedSection, arg[1], "interface", "")
10 mwan_interface.addremove = false
11 mwan_interface.dynamic = false
14 enabled = mwan_interface:option(ListValue, "enabled", translate("Enabled"))
16 enabled:value("1", translate("Yes"))
17 enabled:value("0", translate("No"))
19 initial_state = mwan_interface:option(ListValue, "initial_state", translate("Initial state"),
20 translate("Expect interface state on up event"))
21 initial_state.default = "online"
22 initial_state:value("online", translate("Online"))
23 initial_state:value("offline", translate("Offline"))
25 family = mwan_interface:option(ListValue, "family", translate("Internet Protocol"))
26 family.default = "ipv4"
27 family:value("ipv4", translate("IPv4"))
28 family:value("ipv6", translate("IPv6"))
30 track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking hostname or IP address"),
31 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"))
32 track_ip.datatype = "host"
34 track_method = mwan_interface:option(ListValue, "track_method", translate("Tracking method"))
35 track_method.default = "ping"
36 track_method:value("ping")
37 track_method:value("arping")
38 track_method:value("httping")
40 reliability = mwan_interface:option(Value, "reliability", translate("Tracking reliability"),
41 translate("Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up"))
42 reliability.datatype = "range(1, 100)"
43 reliability.default = "1"
45 count = mwan_interface:option(ListValue, "count", translate("Ping count"))
53 size = mwan_interface:option(Value, "size", translate("Ping size"))
64 size.datatype = "range(1, 65507)"
68 timeout = mwan_interface:option(ListValue, "timeout", translate("Ping timeout"))
70 timeout:value("1", translatef("%d second", 1))
71 timeout:value("2", translatef("%d seconds", 2))
72 timeout:value("3", translatef("%d seconds", 3))
73 timeout:value("4", translatef("%d seconds", 4))
74 timeout:value("5", translatef("%d seconds", 5))
75 timeout:value("6", translatef("%d seconds", 6))
76 timeout:value("7", translatef("%d seconds", 7))
77 timeout:value("8", translatef("%d seconds", 8))
78 timeout:value("9", translatef("%d seconds", 9))
79 timeout:value("10", translatef("%d seconds", 10))
81 interval = mwan_interface:option(ListValue, "interval", translate("Ping interval"))
82 interval.default = "5"
83 interval:value("1", translatef("%d second", 1))
84 interval:value("3", translatef("%d seconds", 3))
85 interval:value("5", translatef("%d seconds", 5))
86 interval:value("10", translatef("%d seconds", 10))
87 interval:value("20", translatef("%d seconds", 20))
88 interval:value("30", translatef("%d seconds", 30))
89 interval:value("60", translatef("%d minute", 1))
90 interval:value("300", translatef("%d minutes", 5))
91 interval:value("600", translatef("%d minutes", 10))
92 interval:value("900", translatef("%d minutes", 15))
93 interval:value("1800", translatef("%d minutes", 30))
94 interval:value("3600", translatef("%d hour", 1))
96 failure = mwan_interface:option(Value, "failure_interval", translate("Failure interval"),
97 translate("Ping interval during failure detection"))
99 failure:value("1", translatef("%d second", 1))
100 failure:value("3", translatef("%d seconds", 3))
101 failure:value("5", translatef("%d seconds", 5))
102 failure:value("10", translatef("%d seconds", 10))
103 failure:value("20", translatef("%d seconds", 20))
104 failure:value("30", translatef("%d seconds", 30))
105 failure:value("60", translatef("%d minute", 1))
106 failure:value("300", translatef("%d minutes", 5))
107 failure:value("600", translatef("%d minutes", 10))
108 failure:value("900", translatef("%d minutes", 15))
109 failure:value("1800", translatef("%d minutes", 30))
110 failure:value("3600", translatef("%d hour", 1))
112 keep_failure = mwan_interface:option(Flag, "keep_failure_interval", translate("Keep failure interval"),
113 translate("Keep ping failure interval during failure state"))
114 keep_failure.default = keep_failure.disabled
116 recovery = mwan_interface:option(Value, "recovery_interval", translate("Recovery interval"),
117 translate("Ping interval during failure recovering"))
118 recovery.default = "5"
119 recovery:value("1", translatef("%d second", 1))
120 recovery:value("3", translatef("%d seconds", 3))
121 recovery:value("5", translatef("%d seconds", 5))
122 recovery:value("10", translatef("%d seconds", 10))
123 recovery:value("20", translatef("%d seconds", 20))
124 recovery:value("30", translatef("%d seconds", 30))
125 recovery:value("60", translatef("%d minute", 1))
126 recovery:value("300", translatef("%d minutes", 5))
127 recovery:value("600", translatef("%d minutes", 10))
128 recovery:value("900", translatef("%d minutes", 15))
129 recovery:value("1800", translatef("%d minutes", 30))
130 recovery:value("3600", translatef("%d hour", 1))
132 down = mwan_interface:option(ListValue, "down", translate("Interface down"),
133 translate("Interface will be deemed down after this many failed ping tests"))
146 up = mwan_interface:option(ListValue, "up", translate("Interface up"),
147 translate("Downed interface will be deemed up after this many successful ping tests"))
160 flush = mwan_interface:option(ListValue, "flush_conntrack", translate("Flush conntrack table"),
161 translate("Flush global firewall conntrack table on interface events"))
162 flush.default = "never"
163 flush:value("ifup", translate("ifup"))
164 flush:value("ifdown", translate("ifdown"))
165 flush:value("never", translate("never"))
166 flush:value("always", translate("always"))
168 metric = mwan_interface:option(DummyValue, "metric", translate("Metric"),
169 translate("This displays the metric assigned to this interface in /etc/config/network"))
170 metric.rawhtml = true
171 function metric.cfgvalue(self, s)
172 local uci = uci.cursor(nil, "/var/state")
173 local metric = uci:get("network", arg[1], "metric")