From 01eac366f69ba58c090ddc2cb70aeb069adbdd5a Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Thu, 17 Jun 2021 17:33:49 +0200 Subject: luci-mod-network: fix tagging/pvid state parsing in bridge-vlan ports The previous code naively looked for a `t` in the entire port spec, wrongly matching untagged ports having a `t` in their name, such as `eth0`. Rework the logic to be more strict when parsing the port member specification to avoid this issue. Signed-off-by: Jo-Philipp Wich --- .../htdocs/luci-static/resources/tools/network.js | 23 +++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'modules/luci-mod-network') diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js b/modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js index 67fe4b9cef..bba0e80f87 100644 --- a/modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js +++ b/modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js @@ -264,15 +264,20 @@ var cbiTagValue = form.Value.extend({ }, cfgvalue: function(section_id) { - var pname = this.port, - spec = L.toArray(uci.get('network', section_id, 'ports')).filter(function(p) { return p.replace(/:[ut*]+$/, '') == pname })[0]; - - if (spec && spec.match(/t/)) - return spec.match(/\*/) ? ['t', '*'] : ['t']; - else if (spec) - return spec.match(/\*/) ? ['u', '*'] : ['u']; - else - return ['-']; + var ports = L.toArray(uci.get('network', section_id, 'ports')); + + for (var i = 0; i < ports.length; i++) { + var s = ports[i].split(/:/); + + if (s[0] != this.port) + continue; + + var t = s[1].match(/t/) ? 't' : 'u'; + + return s[1].match(/\*/) ? [t, '*'] : [t]; + } + + return ['-']; }, write: function(section_id, value) { -- cgit v1.2.3