diff options
author | Christian Breunig <christian@breunig.cc> | 2025-02-23 13:38:13 +0100 |
---|---|---|
committer | Christian Breunig <christian@breunig.cc> | 2025-02-23 13:41:13 +0100 |
commit | 3c0033508e671db72057cfdb535c530423e3b44f (patch) | |
tree | ad36d494adcab2b8a557321d1adb5b8f1193bb3c /src/conf_mode | |
parent | 5d9d232fd93ad5bf89ba44a2d0ec3b196599fa74 (diff) | |
download | vyos-1x-3c0033508e671db72057cfdb535c530423e3b44f.tar.gz vyos-1x-3c0033508e671db72057cfdb535c530423e3b44f.zip |
bridge: T7192: fix verify() to not allow member interface used multiple times
When configuring
set interfaces bridge br10 member interface eth1
set interfaces bridge br20 member interface eth1
commit
Checking the interface assignment afterwards shows
242: br20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 62:34:3a:8a:fe:49 brd ff:ff:ff:ff:ff:ff
[edit]
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br20 state UP mode DEFAULT group default qlen 1000
link/ether 00:50:56:b3:cd:ba brd ff:ff:ff:ff:ff:ff
altname enp0s19
altname ens19
The later addition wins and the CLI reports eth1 is assigned to br20 "master
br20". A member interface can not be used multiple times.
Diffstat (limited to 'src/conf_mode')
-rwxr-xr-x | src/conf_mode/interfaces_bridge.py | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/conf_mode/interfaces_bridge.py b/src/conf_mode/interfaces_bridge.py index 637db442a..aff93af2a 100755 --- a/src/conf_mode/interfaces_bridge.py +++ b/src/conf_mode/interfaces_bridge.py @@ -74,8 +74,9 @@ def get_config(config=None): for interface in list(bridge['member']['interface']): # Check if member interface is already member of another bridge tmp = is_member(conf, interface, 'bridge') - if tmp and bridge['ifname'] not in tmp: - bridge['member']['interface'][interface].update({'is_bridge_member' : tmp}) + if ifname in tmp: + del tmp[ifname] + if tmp: bridge['member']['interface'][interface].update({'is_bridge_member' : tmp}) # Check if member interface is already member of a bond tmp = is_member(conf, interface, 'bonding') |