]> git.puffer.fish Git - mirror/frr.git/commitdiff
tools: fix frr-reload BFD profile support 7891/head
authorRafael Zalamena <rzalamena@opensourcerouting.org>
Tue, 19 Jan 2021 11:49:23 +0000 (08:49 -0300)
committerRafael Zalamena <rzalamena@opensourcerouting.org>
Wed, 20 Jan 2021 14:42:59 +0000 (11:42 -0300)
Fix the handling of multiple BFD profiles by adding the appropriated
code to push/pop contexts inside BFD configuration node.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
tools/frr-reload.py

index 0aa5f1e51668f90ab46a282e9e21f042d978cf63..dca877dbfedd9f77a909a8e9481f6545fca648fc 100755 (executable)
@@ -580,6 +580,18 @@ end
             if line.startswith("!") or line.startswith("#"):
                 continue
 
+            if (len(ctx_keys) == 2
+                and ctx_keys[0].startswith('bfd')
+                and ctx_keys[1].startswith('profile ')
+                and line == 'end'):
+                log.debug('LINE %-50s: popping from sub context, %-50s', line, ctx_keys)
+
+                if main_ctx_key:
+                    self.save_contexts(ctx_keys, current_context_lines)
+                    ctx_keys = copy.deepcopy(main_ctx_key)
+                    current_context_lines = []
+                    continue
+
             # one line contexts
             # there is one exception though: ldpd accepts a 'router-id' clause
             # as part of its 'mpls ldp' config context. If we are processing
@@ -882,6 +894,22 @@ end
                 )
                 ctx_keys.append(line)
 
+            elif (
+                line.startswith('profile ')
+                and len(ctx_keys) == 1
+                and ctx_keys[0].startswith('bfd')
+            ):
+
+                # Save old context first
+                self.save_contexts(ctx_keys, current_context_lines)
+                current_context_lines = []
+                main_ctx_key = copy.deepcopy(ctx_keys)
+                log.debug(
+                    "LINE %-50s: entering BFD profile sub-context, append to ctx_keys",
+                    line
+                )
+                ctx_keys.append(line)
+
             else:
                 # Continuing in an existing context, add non-commented lines to it
                 current_context_lines.append(line)