Linux wireless interface names have the following restrictions:
* It must not be an empty string
* It must not be '.' or '..'
* It must not contain any /, : or space character ( , \t, \n, ...)
* It must be less than 16 chars
* It likely must not contain any % either
Fixes: 8673aef8db ("luci-mod-network: remove uciname validation from wireless interface")
Signed-off-by: Glenn Washburn <development@efficientek.com>
[reword validation error messages, remove extended description text as it would be
shown as part of the validation errors]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit
6ad6a241c32ebd4d62f6021a2e3cbe4e1bc192c2)
return this.assert(this.value.match(/^[a-zA-Z0-9_]+$/), _('valid UCI identifier'));
},
+ netdevname: function() {
+ var v = this.value;
+
+ if (v == '.' || v == '..')
+ return this.assert(false, _('valid network device name, not "." or ".."'));
+
+ return this.assert(v.match(/^[^:/%\s]{1,15}$/), _('valid network device name between 1 and 15 characters not containing ":", "/", "%" or spaces'));
+ },
+
range: function(min, max) {
var val = this.factory.parseDecimal(this.value);
return this.assert(val >= +min && val <= +max, _('value between %f and %f').format(min, max));
o = ss.taboption('advanced', form.Value, 'ifname', _('Interface name'), _('Override default interface name'));
o.optional = true;
- o.datatype = 'maxlength(15)';
+ o.datatype = 'netdevname';
o.placeholder = radioNet.getIfname();
if (/^radio\d+\.network/.test(o.placeholder))
o.placeholder = '';