summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorChirag Shah <chirag@nvidia.com>2024-04-18 11:44:00 -0700
committerChirag Shah <chirag@nvidia.com>2024-04-23 13:40:07 -0700
commitbb52e5ebdcd450d718bef31917c476c43fb9a082 (patch)
tree86069982b3138f22fb04cf442db61143d1acd917 /tools
parent1c49f93b5f19054eec1d975898b19cf3d9f118bc (diff)
tools: fix pim interface config deletionII
When no ip pim is performed subsequent pim related configs under the interface also implicitly deleted. The previous fix was attempting to remove from the same list which was being integrated. First collect the lines to remove in separate list then at the end remove from the original lines_to_del. commit 623af04e1c does not work properly if tries to delete an entry from existing list which is being walked on. Ticket: #3869779 Testing done: frr.conf: no interface config running-config: -------------- interface swp1 ip pim ip pim active-active ip pim allow-rp rp-list sample ip pim bfd ip pim use-source 1.1.1.1 ip multicast boundary oil test exit frr-reload log pointing only no ip pim config is removed under interface: 2024-04-18 18:44:37,202 INFO: "frr defaults datacenter" cannot be removed 2024-04-18 18:44:37,202 INFO: "service integrated-vtysh-config" cannot be removed 2024-04-18 18:44:37,504 INFO: Executed "interface swp1 no ip pim exit" 2024-04-18 18:44:37,505 INFO: /var/run/frr/reload-YHS51E.txt content Signed-off-by: Chirag Shah <chirag@nvidia.com>
Diffstat (limited to 'tools')
-rwxr-xr-xtools/frr-reload.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/tools/frr-reload.py b/tools/frr-reload.py
index b6e67fc7d2..0b30571939 100755
--- a/tools/frr-reload.py
+++ b/tools/frr-reload.py
@@ -1083,6 +1083,7 @@ def pim_delete_move_lines(lines_to_add, lines_to_del):
# Remove all such depdendent options from delete
# pending list.
pim_disable = False
+ lines_to_del_to_del = []
for ctx_keys, line in lines_to_del:
if ctx_keys[0].startswith("interface") and line and line == "ip pim":
@@ -1093,9 +1094,12 @@ def pim_delete_move_lines(lines_to_add, lines_to_del):
if (
ctx_keys[0].startswith("interface")
and line
- and line.startswith("ip pim ")
+ and (line.startswith("ip pim ") or line.startswith("ip multicast "))
):
- lines_to_del.remove((ctx_keys, line))
+ lines_to_del_to_del.append((ctx_keys, line))
+
+ for ctx_keys, line in lines_to_del_to_del:
+ lines_to_del.remove((ctx_keys, line))
return (lines_to_add, lines_to_del)