From: Donald Sharp Date: Wed, 30 Nov 2016 00:19:51 +0000 (-0500) Subject: pimd: Lower Hello sent to be immediate X-Git-Tag: frr-3.0-branchpoint~64^2~10^2~52 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=cf3cd99f5db25a54d568c8766548b8e15fb11b6f;p=mirror%2Ffrr.git pimd: Lower Hello sent to be immediate There exists situations where an interface flaps and routing recovers and we attempt to install an upstream but since we have no neighbor out that interface still. Let's cause the hello to go out immediately for the 3.1 release to allow mrouting to recover in this situation. We will need to revisit this issue after we have proper nexthop tracking in place Ticket: CM-13185 Signed-off-by: Donald Sharp Reviewed-by: Anuradha Karuppiah --- diff --git a/pimd/pim_pim.c b/pimd/pim_pim.c index c7fee4a66f..b77f39f1c4 100644 --- a/pimd/pim_pim.c +++ b/pimd/pim_pim.c @@ -746,7 +746,20 @@ void pim_hello_restart_triggered(struct interface *ifp) pim_ifp = ifp->info; zassert(pim_ifp); - triggered_hello_delay_msec = 1000 * pim_ifp->pim_triggered_hello_delay; + /* + * There exists situations where we have the a RPF out this + * interface, but we haven't formed a neighbor yet. This + * happens especially during interface flaps. While + * we would like to handle this more gracefully in other + * parts of the code. In order to get us up and running + * let's just send the hello immediate'ish + * This should be revisited when we get nexthop tracking + * in and when we have a better handle on safely + * handling the rpf information for upstreams that + * we cannot legally reach yet. + */ + triggered_hello_delay_msec = 1; + //triggered_hello_delay_msec = 1000 * pim_ifp->pim_triggered_hello_delay; if (pim_ifp->t_pim_hello_timer) { long remain_msec = pim_time_timer_remain_msec(pim_ifp->t_pim_hello_timer); @@ -760,7 +773,8 @@ void pim_hello_restart_triggered(struct interface *ifp) pim_ifp->t_pim_hello_timer = NULL; } - random_msec = random() % (triggered_hello_delay_msec + 1); + random_msec = triggered_hello_delay_msec; + //random_msec = random() % (triggered_hello_delay_msec + 1); if (PIM_DEBUG_PIM_HELLO) { zlog_debug("Scheduling %d msec triggered hello on interface %s",