From 609ac8dd49402e01a8a13d19e38b2eb8b33ff1f2 Mon Sep 17 00:00:00 2001 From: Emanuele Di Pascale Date: Tue, 12 Nov 2019 15:36:15 +0100 Subject: [PATCH] tools, vtysh: improved fix for ldpd ifaces instead of suppressing the 'exit' markers at the end of each 'interface XXX' clause in the mpls ldp configuration, mark those with a special marker 'exit-ldp-if' and teach the reload script to correctly recognize the new sub-subcontext Signed-off-by: Emanuele Di Pascale --- tools/frr-reload.py | 14 +++++++++++++- vtysh/vtysh.c | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tools/frr-reload.py b/tools/frr-reload.py index cf31da38b8..cc383e06d8 100755 --- a/tools/frr-reload.py +++ b/tools/frr-reload.py @@ -473,7 +473,7 @@ end current_context_lines = [] log.debug('LINE %-50s: popping from subcontext to ctx%-50s', line, ctx_keys) - elif line == "exit-vni": + elif line in ["exit-vni", "exit-ldp-if"]: if sub_main_ctx_key: self.save_contexts(ctx_keys, current_context_lines) @@ -525,6 +525,18 @@ end sub_main_ctx_key = copy.deepcopy(ctx_keys) log.debug('LINE %-50s: entering sub-sub-context, append to ctx_keys', line) ctx_keys.append(line) + + elif ((line.startswith("interface ") and + len(ctx_keys) == 2 and + ctx_keys[0].startswith('mpls ldp') and + ctx_keys[1].startswith('address-family'))): + + # Save old context first + self.save_contexts(ctx_keys, current_context_lines) + current_context_lines = [] + sub_main_ctx_key = copy.deepcopy(ctx_keys) + log.debug('LINE %-50s: entering sub-sub-context, append to ctx_keys', line) + ctx_keys.append(line) else: # Continuing in an existing context, add non-commented lines to it diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c index f8292c530f..5c4e8a313b 100644 --- a/vtysh/vtysh.c +++ b/vtysh/vtysh.c @@ -725,11 +725,13 @@ int vtysh_mark_file(const char *filename) switch (vty->node) { case LDP_IPV4_IFACE_NODE: if (strncmp(vty_buf_copy, " ", 3)) { + vty_out(vty, " exit-ldp-if\n"); vty->node = LDP_IPV4_NODE; } break; case LDP_IPV6_IFACE_NODE: if (strncmp(vty_buf_copy, " ", 3)) { + vty_out(vty, " exit-ldp-if\n"); vty->node = LDP_IPV6_NODE; } break; -- 2.39.5