diff options
| author | Nataliia Solomko <natalirs1985@gmail.com> | 2025-11-05 13:20:42 +0200 |
|---|---|---|
| committer | Nataliia Solomko <natalirs1985@gmail.com> | 2025-11-12 13:48:44 +0200 |
| commit | ccf4972f8dd9ddf370fe6376480c1244a138c4bd (patch) | |
| tree | c572124fe48db464fb48c912e070c0f322f12908 /src/conf_mode/interfaces_bridge.py | |
| parent | 21d509d6c639f2a94c43c3af7f845ef0e544555f (diff) | |
| download | vyos-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-x | src/conf_mode/interfaces_bridge.py | 24 |
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 |
