]> git.puffer.fish Git - mirror/frr.git/commitdiff
tools: fix frr-reload for no ip msdp peer cmd 15794/head
authorChirag Shah <chirag@nvidia.com>
Tue, 23 Apr 2024 02:47:27 +0000 (19:47 -0700)
committerChirag Shah <chirag@nvidia.com>
Tue, 23 Apr 2024 20:40:13 +0000 (13:40 -0700)
no form of 'ip pm msdp peer <> source <>' does not
accept source argument. Stip the 'source <>' part from
config line being deleted via frr-reload.

Ticket: #3874971
Testing:

Config:
vrf blue
 ip msdp peer 1.1.1.1 source 1.1.1.1

frr-reload failure log:
2024-04-23 02:08:32,501  INFO: Failed to execute vrf blue  no ip
msdp peer 1.1.1.1 source 1.1.1.1 exit
2024-04-23 02:08:32,501 ERROR: "vrf blue --  no ip msdp peer 1.1.1.1
source 1.1.1.1 -- exit" we failed to remove this command
2024-04-23 02:08:32,501 ERROR: % Unknown command:  no ip msdp peer
1.1.1.1 source 1.1.1.1

Signed-off-by: Chirag Shah <chirag@nvidia.com>
tools/frr-reload.py

index 0b30571939416cca6b50dfa42936ace18fbae20c..84360f632bfa5e9dc1a40b5bc4e658c582816bff 100755 (executable)
@@ -1085,10 +1085,21 @@ def pim_delete_move_lines(lines_to_add, lines_to_del):
     pim_disable = False
     lines_to_del_to_del = []
 
+    index = -1
     for ctx_keys, line in lines_to_del:
+        index = index + 1
         if ctx_keys[0].startswith("interface") and line and line == "ip pim":
             pim_disable = True
 
+        # no ip msdp peer <> does not accept source so strip it off.
+        if line and line.startswith("ip msdp peer "):
+            pim_msdp_peer = re.search("ip msdp peer (\S+) source (\S+)", line)
+            if pim_msdp_peer:
+                source_sub_str = "source %s" % pim_msdp_peer.group(2)
+                new_line = line.replace(source_sub_str, "").strip()
+                lines_to_del.remove((ctx_keys, line))
+                lines_to_del.insert(index, (ctx_keys, new_line))
+
     if pim_disable:
         for ctx_keys, line in lines_to_del:
             if (