From a7c1a27f0ecfcf15013b73bc2efa78ca9d10a403 Mon Sep 17 00:00:00 2001 From: Punith Kumar S Date: Wed, 13 Jul 2022 09:51:16 +0000 Subject: [PATCH 1/3] ospf6d: routes are not synced by ABR. topology: C1--R1---R2---R3--C2 client C1 connected to router node R1 client C2 connected to router node R3 router nodes R1,R2 and R3 are back to back connected area 0 configured between R1 and R2 R1: all routes of area 0 are learnt successfully R2: all routes of area 0 are learnt successfully area 1 configured between R2 and R3 R2: all routes are learnt from R3 R3: routes learnt from C1 on ABR router R2 does not get forward to R3 root cause: on interface start, ABR schedule task is missing. fix: handle ABR schedule during interface start event Signed-off-by: Punith Kumar S --- ospf6d/ospf6_interface.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c index 2a503c6233..37aa51a406 100644 --- a/ospf6d/ospf6_interface.c +++ b/ospf6d/ospf6_interface.c @@ -37,6 +37,7 @@ #include "ospf6_route.h" #include "ospf6_area.h" #include "ospf6_abr.h" +#include "ospf6_nssa.h" #include "ospf6_interface.h" #include "ospf6_neighbor.h" #include "ospf6_intra.h" @@ -1742,8 +1743,10 @@ void ospf6_interface_start(struct ospf6_interface *oi) ospf6_interface_enable(oi); /* If the router is ABR, originate summary routes */ - if (ospf6_check_and_set_router_abr(ospf6)) + if (ospf6_check_and_set_router_abr(ospf6)) { ospf6_abr_enable_area(oa); + ospf6_schedule_abr_task(ospf6); + } } void ospf6_interface_stop(struct ospf6_interface *oi) From f3e93dc535a47c727f4facde5cd14879307927cf Mon Sep 17 00:00:00 2001 From: Punith Kumar S Date: Wed, 13 Jul 2022 10:01:11 +0000 Subject: [PATCH 2/3] ospf6d: fix test_ospf6_gr_topo1 topotest 1. topo test failure seen in below mentioned step of execution with routes not synced with ABR ospf6_gr_topo1/test_ospf6_gr_topo1.py::test_gr_rt3 - AssertionError: "rt1" JSON output mismatches the expected result. 2. as experimental, increasing the sleep interval(21), cleared the above step but failed in the step FAILED ospf6_gr_topo1/test_ospf6_gr_topo1.py::test_gr_rt5 - AssertionError: "rt2" JSON output mismatches the expected result fix: tuning retry parameter in check_routers cleared the topotest. so, changing default value of ospf6 ABR task delay to 5 seconds. Signed-off-by: Punith Kumar S --- ospf6d/ospf6_nssa.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ospf6d/ospf6_nssa.h b/ospf6d/ospf6_nssa.h index 02234cc8bd..3cc45d900d 100644 --- a/ospf6d/ospf6_nssa.h +++ b/ospf6d/ospf6_nssa.h @@ -45,7 +45,7 @@ extern unsigned char config_debug_ospf6_nssa; #define OSPF6_LSA_APPROVED 0x08 #define OSPF6_LSA_LOCAL_XLT 0x40 -#define OSPF6_ABR_TASK_DELAY 7 +#define OSPF6_ABR_TASK_DELAY 5 int ospf6_area_nssa_no_summary_set(struct ospf6 *ospf6, struct in_addr area_id); int ospf6_area_nssa_unset(struct ospf6 *ospf6, struct ospf6_area *area); From d19cae9f342003b5e8168807e189431141850fe0 Mon Sep 17 00:00:00 2001 From: Punith Kumar S Date: Wed, 12 Oct 2022 15:27:43 +0000 Subject: [PATCH 3/3] ospfd: change default ospf schedule abr task timer Signed-off-by: Punith Kumar S --- ospfd/ospf_abr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ospfd/ospf_abr.h b/ospfd/ospf_abr.h index e15f4a6bf7..c523638fb3 100644 --- a/ospfd/ospf_abr.h +++ b/ospfd/ospf_abr.h @@ -22,7 +22,7 @@ #ifndef _ZEBRA_OSPF_ABR_H #define _ZEBRA_OSPF_ABR_H -#define OSPF_ABR_TASK_DELAY 7 +#define OSPF_ABR_TASK_DELAY 5 #define OSPF_AREA_RANGE_ADVERTISE (1 << 0) #define OSPF_AREA_RANGE_SUBSTITUTE (1 << 1)