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 <emanuele@voltanet.io>
This commit is contained in:
Emanuele Di Pascale 2019-11-12 15:36:15 +01:00
parent ccef6e47a3
commit 609ac8dd49
2 changed files with 15 additions and 1 deletions

View File

@ -473,7 +473,7 @@ end
current_context_lines = [] current_context_lines = []
log.debug('LINE %-50s: popping from subcontext to ctx%-50s', line, ctx_keys) 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: if sub_main_ctx_key:
self.save_contexts(ctx_keys, current_context_lines) self.save_contexts(ctx_keys, current_context_lines)
@ -525,6 +525,18 @@ end
sub_main_ctx_key = copy.deepcopy(ctx_keys) sub_main_ctx_key = copy.deepcopy(ctx_keys)
log.debug('LINE %-50s: entering sub-sub-context, append to ctx_keys', line) log.debug('LINE %-50s: entering sub-sub-context, append to ctx_keys', line)
ctx_keys.append(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: else:
# Continuing in an existing context, add non-commented lines to it # Continuing in an existing context, add non-commented lines to it

View File

@ -725,11 +725,13 @@ int vtysh_mark_file(const char *filename)
switch (vty->node) { switch (vty->node) {
case LDP_IPV4_IFACE_NODE: case LDP_IPV4_IFACE_NODE:
if (strncmp(vty_buf_copy, " ", 3)) { if (strncmp(vty_buf_copy, " ", 3)) {
vty_out(vty, " exit-ldp-if\n");
vty->node = LDP_IPV4_NODE; vty->node = LDP_IPV4_NODE;
} }
break; break;
case LDP_IPV6_IFACE_NODE: case LDP_IPV6_IFACE_NODE:
if (strncmp(vty_buf_copy, " ", 3)) { if (strncmp(vty_buf_copy, " ", 3)) {
vty_out(vty, " exit-ldp-if\n");
vty->node = LDP_IPV6_NODE; vty->node = LDP_IPV6_NODE;
} }
break; break;