summaryrefslogtreecommitdiff
path: root/src/conf_mode/interfaces_bridge.py
diff options
context:
space:
mode:
authorNataliia Solomko <natalirs1985@gmail.com>2025-11-05 13:20:42 +0200
committerNataliia Solomko <natalirs1985@gmail.com>2025-11-12 13:48:44 +0200
commitccf4972f8dd9ddf370fe6376480c1244a138c4bd (patch)
treec572124fe48db464fb48c912e070c0f322f12908 /src/conf_mode/interfaces_bridge.py
parent21d509d6c639f2a94c43c3af7f845ef0e544555f (diff)
downloadvyos-1x-ccf4972f8dd9ddf370fe6376480c1244a138c4bd.tar.gz
vyos-1x-ccf4972f8dd9ddf370fe6376480c1244a138c4bd.zip
T7731: Static ARP entries are missing after an interface status change
Diffstat (limited to 'src/conf_mode/interfaces_bridge.py')
-rwxr-xr-xsrc/conf_mode/interfaces_bridge.py24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/conf_mode/interfaces_bridge.py b/src/conf_mode/interfaces_bridge.py
index 8cb0c515a..c6792404b 100755
--- a/src/conf_mode/interfaces_bridge.py
+++ b/src/conf_mode/interfaces_bridge.py
@@ -124,6 +124,10 @@ def get_config(config=None):
if len(bridge['member']) == 0:
del bridge['member']
+ # Protocols static arp dependency
+ if 'static_arp' in bridge:
+ set_dependents('static_arp', conf)
+
return bridge
def verify(bridge):
@@ -213,12 +217,20 @@ def apply(bridge):
if 'interface' in bridge['member']:
tmp.extend(bridge['member']['interface'])
- for interface in tmp:
- if interface.startswith(tuple(['vxlan', 'wlan'])) and interface_exists(interface):
- try:
- call_dependents()
- except ConfigError:
- raise ConfigError(f'Error updating member interface {interface} configuration after changing bridge!')
+ # collect member interfaces that require dependent updates
+ interfaces_need_update = [
+ iface
+ for iface in tmp
+ if iface.startswith(('vxlan', 'wlan')) and interface_exists(iface)
+ ]
+
+ if interfaces_need_update or 'static_arp' in bridge:
+ try:
+ call_dependents()
+ except ConfigError:
+ raise ConfigError(
+ 'Error updating member interface configuration after changing bridge!'
+ )
return None