]> git.proxmox.com Git - mirror_frr.git/commitdiff
tools: fix pce-config removal
authorEmanuele Di Pascale <emanuele@voltanet.io>
Tue, 22 Dec 2020 17:40:47 +0000 (18:40 +0100)
committerEmanuele Di Pascale <emanuele@voltanet.io>
Sat, 9 Jan 2021 14:50:17 +0000 (15:50 +0100)
make sure that the order in which the pcep-related commands are
removed by frr-reload.py is the correct one, i.e., pce followed
by pce-config followed by pcc.

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
tools/frr-reload.py

index e95f0529c505e97f365ea2584a45b4c38a1915aa..d5fa8ab6a3d5294b855cc8134a9c3ea384615775 100755 (executable)
@@ -1393,6 +1393,8 @@ def compare_context_objects(newconf, running):
     lines_to_del = []
     pollist_to_del = []
     seglist_to_del = []
+    pceconf_to_del = []
+    pcclist_to_del = []
     candidates_to_add = []
     delete_bgpd = False
 
@@ -1478,9 +1480,8 @@ def compare_context_objects(newconf, running):
 
             # Segment routing and traffic engineering never need to be deleted
             elif (
-                len(running_ctx_keys) > 1
+                running_ctx_keys[0].startswith('segment-routing')
                 and len(running_ctx_keys) < 3
-                and running_ctx_keys[0].startswith('segment-routing')
             ):
                 continue
 
@@ -1510,6 +1511,23 @@ def compare_context_objects(newconf, running):
             ):
                 pollist_to_del.append((running_ctx_keys, None))
 
+            # pce-config must be deleted after the pce, to be sure we add them
+            # to a separate array that is going to be appended at the end
+            elif (
+                len(running_ctx_keys) >= 4
+                and running_ctx_keys[0].startswith('segment-routing')
+                and running_ctx_keys[3].startswith('pce-config')
+            ):
+                pceconf_to_del.append((running_ctx_keys, None))
+
+            # pcc must be deleted after the pce and pce-config too
+            elif (
+                len(running_ctx_keys) >= 4
+                and running_ctx_keys[0].startswith('segment-routing')
+                and running_ctx_keys[3].startswith('pcc')
+            ):
+                pcclist_to_del.append((running_ctx_keys, None))
+
             # Non-global context
             elif running_ctx_keys and not any(
                 "address-family" in key for key in running_ctx_keys
@@ -1532,6 +1550,14 @@ def compare_context_objects(newconf, running):
     if len(seglist_to_del) > 0:
         lines_to_del.extend(seglist_to_del)
 
+    # if we have some pce list commands to delete, append them to lines_to_del
+    if len(pceconf_to_del) > 0:
+        lines_to_del.extend(pceconf_to_del)
+
+    # if we have some pcc list commands to delete, append them to lines_to_del
+    if len(pcclist_to_del) > 0:
+        lines_to_del.extend(pcclist_to_del)
+
     # Find the lines within each context to add
     # Find the lines within each context to del
     for (newconf_ctx_keys, newconf_ctx) in iteritems(newconf.contexts):