'use strict'; 'require uci'; 'require form'; 'require network'; network.registerPatternVirtual(/^l2tp-.+$/); return network.registerProtocol('l2tp', { getI18n: function() { return _('L2TP'); }, getIfname: function() { return this._ubus('l3_device') || 'l2tp-%s'.format(this.sid); }, getOpkgPackage: function() { return 'xl2tpd'; }, isFloating: function() { return true; }, isVirtual: function() { return true; }, getDevices: function() { return null; }, containsDevice: function(ifname) { return (network.getIfnameOf(ifname) == this.getIfname()); }, renderFormOptions: function(s) { var dev = this.getL3Device() || this.getDevice(), o; o = s.taboption('general', form.Value, 'server', _('L2TP Server')); o.datatype = 'or(host(1), hostport(1))'; s.taboption('general', form.Value, 'username', _('PAP/CHAP username')); o = s.taboption('general', form.Value, 'password', _('PAP/CHAP password')); o.password = true; if (L.hasSystemFeature('ipv6')) { o = s.taboption('advanced', form.ListValue, 'ppp_ipv6', _('Obtain IPv6 address'), _('Enable IPv6 negotiation on the PPP link')); o.ucioption = 'ipv6'; o.value('auto', _('Automatic')); o.value('0', _('Disabled')); o.value('1', _('Manual')); o.default = 'auto'; } o = s.taboption('advanced', form.Value, 'mtu', _('Override MTU')); o.placeholder = dev ? (dev.getMTU() || '1500') : '1500'; o.datatype = 'max(9200)'; } });