[PATCH LuCI] luci-mod-network: migrate config to use "ports" option

Rafał Miłecki zajec5 at gmail.com
Thu May 20 06:03:43 PDT 2021


From: Rafał Miłecki <rafal at milecki.pl>

LuCI supports only the newer method of specifying bridge ports using the
"ports" option. Offer users migration so they can configure their
network.

Example:

1. Before
config device
        option name 'br-lan'
        option type 'bridge'
        list ifname 'lan1'
        list ifname 'lan2'
        list ifname 'lan3'
        list ifname 'lan4'

2. After
config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'lan1'
        list ports 'lan2'
        list ports 'lan3'
        list ports 'lan4'

Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
---
 .../resources/view/network/interfaces.js       | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js
index cec5a6406c..a1def24b07 100644
--- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js
+++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js
@@ -304,6 +304,12 @@ return view.extend({
 		});
 	},
 
+	deviceWithIfnameSections: function() {
+		return uci.sections('network', 'device').filter(function(ns) {
+			return ns.type == 'bridge' && !ns.ports && ns.ifname;
+		});
+	},
+
 	handleMigration: function(ev) {
 		var interfaces = this.interfaceWithIfnameSections();
 		var tasks = [];
@@ -323,6 +329,13 @@ return view.extend({
 			}));
 		});
 
+		this.deviceWithIfnameSections().forEach(function(ds) {
+			tasks.push(uci.callSet('network', ds['.name'], {
+				'ifname': '',
+				'ports': L.toArray(ds.ifname)
+			}));
+		});
+
 		return Promise.all(tasks)
 			.then(L.bind(ui.changes.init, ui.changes))
 			.then(L.bind(ui.changes.apply, ui.changes));
@@ -331,7 +344,7 @@ return view.extend({
 	renderMigration: function() {
 		ui.showModal(_('Network bridge configuration migration'), [
 			E('p', _('The existing network configuration needs to be changed for LuCI to function properly.')),
-			E('p', _('Upon pressing "Continue", bridges configuration will be moved from "interface" sections to "device" sections the network will be restarted to apply the updated configuration.')),
+			E('p', _('Upon pressing "Continue", bridges configuration will be updated and the network will be restarted to apply the updated configuration.')),
 			E('div', { 'class': 'right' },
 				E('button', {
 					'class': 'btn cbi-button-action important',
@@ -341,7 +354,8 @@ return view.extend({
 	},
 
 	render: function(data) {
-		if (this.interfaceWithIfnameSections().length)
+		if (this.interfaceWithIfnameSections().length ||
+		    this.deviceWithIfnameSections().length)
 			return this.renderMigration();
 
 		var dslModemType = data[0],
-- 
2.26.2




More information about the openwrt-devel mailing list