From 30ac19fd30f0d6f1396ea2fc2facdbe06bdfeee4 Mon Sep 17 00:00:00 2001 From: Nataliia Solomko Date: Wed, 9 Sep 2026 12:35:03 +0300 Subject: static_arp: T9268: Fix deletion of static ARP entries --- src/conf_mode/protocols_static_arp.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/conf_mode/protocols_static_arp.py b/src/conf_mode/protocols_static_arp.py index 87dc5229e..2b5570ab0 100755 --- a/src/conf_mode/protocols_static_arp.py +++ b/src/conf_mode/protocols_static_arp.py @@ -32,10 +32,18 @@ def get_config(config=None): base = ['protocols', 'static', 'arp'] arp = conf.get_config_dict(base, get_first_key=True) - if 'interface' in arp: - for interface in arp['interface']: - tmp = node_changed(conf, base + ['interface', interface, 'address'], recursive=True) - if tmp: arp['interface'][interface].update({'address_old' : tmp}) + # Collect both configured interfaces and interfaces removed in this commit + # (e.g. deleting the whole node), so their old ARP entries get cleaned up. + interfaces = set(arp.get('interface', {})) + interfaces.update(node_changed(conf, base + ['interface'])) + + for interface in interfaces: + tmp = node_changed( + conf, base + ['interface', interface, 'address'], recursive=True + ) + if tmp: + arp.setdefault('interface', {}).setdefault(interface, {}) + arp['interface'][interface].update({'address_old': tmp}) return arp -- cgit v1.2.3