luci-mod-network: make condition for disabling legacy bridging more specific

Only disable legacy bridging if an existing network.device section with type
bridge is found, ignore non-type sections since those do not declare a
bridge but set attributes on top of an existing one.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
Jo-Philipp Wich 2021-03-29 16:30:32 +02:00
parent b9fad85f2e
commit f48f9f11e7

View file

@ -46,11 +46,11 @@ function validateQoSMap(section_id, value) {
return true;
}
function deviceSectionExists(section_id, devname) {
function deviceSectionExists(section_id, devname, devtype) {
var exists = false;
uci.sections('network', 'device', function(ss) {
exists = exists || (ss['.name'] != section_id && ss.name == devname /* && !ss.type*/);
exists = exists || (ss['.name'] != section_id && ss.name == devname && (!devtype || devtype == ss.type));
});
return exists;
@ -379,7 +379,7 @@ return baseclass.extend({
gensection = ifc ? 'physical' : 'devgeneral',
advsection = ifc ? 'physical' : 'devadvanced',
simpledep = ifc ? { type: '', ifname_single: /^[^@]/ } : { type: '' },
disableLegacyBridging = isIface && deviceSectionExists(null, 'br-%s'.format(ifc.getName())),
disableLegacyBridging = isIface && deviceSectionExists(null, 'br-%s'.format(ifc.getName()), 'bridge'),
o, ss;
/* If an externally configured br-xxx interface already exists,