From: rgirada Date: Fri, 1 Oct 2021 18:59:11 +0000 (-0700) Subject: ospfd: GR helper functionality change in helper exit X-Git-Tag: base_8.2~374^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=89eb4727defa522140bfa5b1476d4d050384e78a;p=matthieu%2Ffrr.git ospfd: GR helper functionality change in helper exit Description: As per the RFC 3623 section 3.2, OSPF nbr shouldn't be deleted even in unsuccessful helper exit. 1. Made the changes to keep neighbour even after exit. 2. Restart the dead timer after expiry in helper. Otherwise, Restarter will be in FULL state in helper forever until it receives the 'hello'. Signed-off-by: Rajesh Girada --- diff --git a/ospfd/ospf_gr_helper.c b/ospfd/ospf_gr_helper.c index 11ad45d30f..b3eaf7bbdb 100644 --- a/ospfd/ospf_gr_helper.c +++ b/ospfd/ospf_gr_helper.c @@ -723,14 +723,10 @@ void ospf_gr_helper_exit(struct ospf_neighbor *nbr, /* check exit triggered due to successful completion * of graceful restart. - * If no, bring down the neighbour. */ if (reason != OSPF_GR_HELPER_COMPLETED) { if (IS_DEBUG_OSPF_GR) - zlog_debug( - "%s, Failed GR exit, so bringing down the neighbour", - __func__); - OSPF_NSM_EVENT_SCHEDULE(nbr, NSM_KillNbr); + zlog_debug("%s, Unsuccessful GR exit", __func__); } /*Recalculate the DR for the network segment */ diff --git a/ospfd/ospf_nsm.c b/ospfd/ospf_nsm.c index 268fb81e52..dee25275d6 100644 --- a/ospfd/ospf_nsm.c +++ b/ospfd/ospf_nsm.c @@ -76,10 +76,13 @@ static int ospf_inactivity_timer(struct thread *thread) */ if (!OSPF_GR_IS_ACTIVE_HELPER(nbr)) OSPF_NSM_EVENT_SCHEDULE(nbr, NSM_InactivityTimer); - else if (IS_DEBUG_OSPF_GR) + else if (IS_DEBUG_OSPF_GR) { zlog_debug( - "%s, Acting as HELPER for this neighbour, So inactivitytimer event will not be fired.", + "%s, Acting as HELPER for this neighbour, So restart the dead timer", __func__); + OSPF_NSM_TIMER_ON(nbr->t_inactivity, ospf_inactivity_timer, + nbr->v_inactivity); + } return 0; }