luci-app-firewall: consolidate duplicate option code
[project/luci.git] / applications / luci-app-firewall / htdocs / luci-static / resources / view / firewall / forwards.js
index f8b9e19e121418c48a1d2449003bb97f7c91622e..500e68fb174fd6222ca3157dd6c74076d630b8dd 100644 (file)
@@ -299,57 +299,9 @@ return L.view.extend({
                        return _('Unknown or not installed conntrack helper "%s"').format(value);
                };
 
-               o = s.taboption('advanced', form.Value, 'mark', _('Match mark'),
-                       _('Matches a specific firewall mark or a range of different marks.'));
-               o.modalonly = true;
-               o.rmempty = true;
-               o.validate = function(section_id, value) {
-                       if (value == '')
-                               return true;
-
-                       var m = String(value).match(/^(?:!\s*)?(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i);
-
-                       if (!m || +m[1] > 0xffffffff || (m[2] != null && +m[2] > 0xffffffff))
-                               return _('Expecting: %s').format(_('valid firewall mark'));
-
-                       return true;
-               };
-
-               o = s.taboption('advanced', form.Value, 'limit', _('Limit matching'),
-                       _('Limits traffic matching to the specified rate.'));
-               o.modalonly = true;
-               o.rmempty = true;
-               o.placeholder = _('unlimited');
-               o.value('10/second');
-               o.value('60/minute');
-               o.value('3/hour');
-               o.value('500/day');
-               o.validate = function(section_id, value) {
-                       if (value == '')
-                               return true;
-
-                       var m = String(value).toLowerCase().match(/^(?:0x[0-9a-f]{1,8}|[0-9]{1,10})\/([a-z]+)$/),
-                           u = ['second', 'minute', 'hour', 'day'],
-                           i = 0;
-
-                       if (m)
-                               for (i = 0; i < u.length; i++)
-                                       if (u[i].indexOf(m[1]) == 0)
-                                               break;
-
-                       if (!m || i >= u.length)
-                               return _('Invalid limit value');
-
-                       return true;
-               };
-
-               o = s.taboption('advanced', form.Value, 'limit_burst', _('Limit burst'),
-                       _('Maximum initial number of packets to match: this number gets recharged by one every time the limit specified above is not reached, up to this number.'));
-               o.modalonly = true;
-               o.rmempty = true;
-               o.placeholder = '5';
-               o.datatype = 'uinteger';
-               o.depends({ limit: null, '!reverse': true });
+               fwtool.addMarkOption(s, false);
+               fwtool.addLimitOption(s);
+               fwtool.addLimitBurstOption(s);
 
                o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'),
                        _('Passes additional arguments to iptables. Use with care!'));