luci-mod-network: properly handle wireless devices when adding interfaces
authorJo-Philipp Wich <jo@mein.io>
Sat, 12 Dec 2020 11:15:33 +0000 (12:15 +0100)
committerJo-Philipp Wich <jo@mein.io>
Sat, 12 Dec 2020 11:16:45 +0000 (12:16 +0100)
Wireless device names must not be added as list/option ifname, but the
network must be backreferenced in config wifi-iface instead in these
cases.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js

index bee57530550bf98ec50d1d7b3f8d5b6245a47543..80b02c96fb6f15b7216e61f033a02a2589e63dfb 100644 (file)
@@ -766,7 +766,7 @@ return view.extend({
                                                        'click': ui.createHandlerFn(this, function(ev) {
                                                                var nameval = name.isValid('_new_') ? name.formvalue('_new_') : null,
                                                                    protoval = proto.isValid('_new_') ? proto.formvalue('_new_') : null,
-                                                                   protoclass = protoval ? network.getProtocol(protoval) : null;
+                                                                   protoclass = protoval ? network.getProtocol(protoval, nameval) : null;
 
                                                                if (nameval == null || protoval == null || nameval == '' || protoval == '')
                                                                        return;
@@ -780,16 +780,18 @@ return view.extend({
                                                                        }
 
                                                                        return m.save(function() {
-                                                                               var section_id = uci.add('network', 'interface', nameval);
+                                                                               uci.add('network', 'interface', nameval);
 
-                                                                               uci.set('network', section_id, 'proto', protoval);
+                                                                               protoclass.set('proto', protoval);
 
                                                                                if (ifname_single.isActive('_new_')) {
-                                                                                       uci.set('network', section_id, 'ifname', ifname_single.formvalue('_new_'));
+                                                                                       protoclass.addDevice(ifname_single.formvalue('_new_'));
                                                                                }
                                                                                else if (ifname_multi.isActive('_new_')) {
-                                                                                       uci.set('network', section_id, 'type', 'bridge');
-                                                                                       uci.set('network', section_id, 'ifname', L.toArray(ifname_multi.formvalue('_new_')).join(' '));
+                                                                                       protoclass.set('type', 'bridge');
+                                                                                       L.toArray(ifname_multi.formvalue('_new_')).map(function(dev) {
+                                                                                               protoclass.addDevice(dev);
+                                                                                       });
                                                                                }
                                                                        }).then(L.bind(m.children[0].renderMoreOptionsModal, m.children[0], nameval));