From b79c30700ce9174fa854018e789dad06fd262c02 Mon Sep 17 00:00:00 2001 From: ckishimo Date: Tue, 24 Nov 2020 06:53:22 -0800 Subject: [PATCH] ospfd: fix cosmetic show ip ospf when NSSA When executing the following command to change the NSSA translator role from OSPF_NSSA_ROLE_ALWAYS to OSPF_NSSA_ROLE_NEVER r2(config-router)# area 1 nssa translate-never During the time the `ospf_abr_nssa_check_status()` function is not executed, we are in a situation where the role is OSPF_NSSA_ROLE_NEVER (just configured) but the NSSATranslatorState is still ENABLED During this time the output of "show ip ospf" displays the following: r2# show ip ospf Area ID: 0.0.0.1 (NSSA) Shortcutting mode: Default, S-bit consensus: no Number of interfaces in this area: Total: 1, Active: 1 It is an NSSA configuration. Elected NSSA/ABR performs type-7/type-5 LSA translation. We are an ABR and Number of fully adjacent neighbors in this area: 1 (**) Basically the case TranslatorState=ENABLED && TranslatorRole=ROLE_NEVER is not covered in `ospf_vty.c` This PR adds the case TranslatorState=ENABLED and TranslatorRole=ROLE_NEVER which should only happen for a small period of time Signed-off-by: ckishimo --- ospfd/ospf_vty.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index 71dea80538..304f1400f5 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -2702,6 +2702,10 @@ static void show_ip_ospf_area(struct vty *vty, struct ospf_area *area, json_object_boolean_true_add( json_area, "nssaTranslatorAlways"); + else + json_object_boolean_true_add( + json_area, + "nssaTranslatorNever"); } else { json_object_boolean_true_add(json_area, "abr"); if (area->NSSATranslatorRole @@ -2716,29 +2720,32 @@ static void show_ip_ospf_area(struct vty *vty, struct ospf_area *area, } } else { vty_out(vty, - " It is an NSSA configuration. \n Elected NSSA/ABR performs type-7/type-5 LSA translation. \n"); + " It is an NSSA configuration.\n Elected NSSA/ABR performs type-7/type-5 LSA translation.\n"); if (!IS_OSPF_ABR(area->ospf)) vty_out(vty, - " It is not ABR, therefore not Translator. \n"); + " It is not ABR, therefore not Translator.\n"); else if (area->NSSATranslatorState) { vty_out(vty, " We are an ABR and "); if (area->NSSATranslatorRole == OSPF_NSSA_ROLE_CANDIDATE) vty_out(vty, - "the NSSA Elected Translator. \n"); + "the NSSA Elected Translator.\n"); else if (area->NSSATranslatorRole == OSPF_NSSA_ROLE_ALWAYS) vty_out(vty, - "always an NSSA Translator. \n"); + "always an NSSA Translator.\n"); + else + vty_out(vty, + "never an NSSA Translator.\n"); } else { vty_out(vty, " We are an ABR, but "); if (area->NSSATranslatorRole == OSPF_NSSA_ROLE_CANDIDATE) vty_out(vty, - "not the NSSA Elected Translator. \n"); + "not the NSSA Elected Translator.\n"); else vty_out(vty, - "never an NSSA Translator. \n"); + "never an NSSA Translator.\n"); } } } -- 2.39.5