luci-proto-qmi: allow v6apn and (v6)profile configuration 6426/head
authorLech Perczak <lech.perczak@gmail.com>
Thu, 8 Jun 2023 22:57:36 +0000 (00:57 +0200)
committerLech Perczak <lech.perczak@gmail.com>
Thu, 8 Jun 2023 23:22:03 +0000 (01:22 +0200)
To support split-APN dual-stack connections over QMI, add new parameters
supported in UCI to LuCI as well. Previously, connection profile wasn't
configurable from LuCI at all, so add options to set which APN profile
to match for each protocol.

Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js

index 98ae486d37110e1c35c02a60323bc53cdf8b98f1..1963bc0412d827ad59f74144ee58061ae6caef94 100644 (file)
@@ -65,8 +65,7 @@ return network.registerProtocol('qmi', {
                        }, this));
                };
 
-               o = s.taboption('general', form.Value, 'apn', _('APN'));
-               o.validate = function(section_id, value) {
+               var validate_apn = function(section_id, value) {
                        if (value == null || value == '')
                                return true;
 
@@ -75,6 +74,14 @@ return network.registerProtocol('qmi', {
 
                        return true;
                };
+               o = s.taboption('general', form.Value, 'apn', _('APN'));
+               o.validate = validate_apn;
+
+               if (L.hasSystemFeature('ipv6')) {
+                       o = s.taboption('general', form.Value, 'v6apn', _('IPv6 APN'));
+                       o.validate = validate_apn;
+                       o.depends('pdptype', 'ipv4v6')
+               };
 
                o = s.taboption('general', form.Value, 'pincode', _('PIN'));
                o.datatype = 'and(uinteger,minlength(4),maxlength(8))';
@@ -133,5 +140,17 @@ return network.registerProtocol('qmi', {
                        _('If unchecked, the advertised DNS server addresses are ignored'));
                o.default = o.enabled;
 
+               o = s.taboption('advanced', form.Value, 'profile',
+                       _('APN profile index'));
+               o.placeholder = '1';
+               o.datatype = 'uinteger';
+
+               if (L.hasSystemFeature('ipv6')) {
+                       o = s.taboption('advanced', form.Value, 'v6profile',
+                               _('IPv6 APN profile index'));
+                       o.placeholder = '1';
+                       o.datatype = 'uinteger';
+                       o.depends('pdptype', 'ipv4v6');
+               };
        }
 });