]> git.proxmox.com Git - mirror_frr.git/commitdiff
pimd: Lower Hello sent to be immediate
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 30 Nov 2016 00:19:51 +0000 (19:19 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 22 Dec 2016 01:26:17 +0000 (20:26 -0500)
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 <sharpd@cumulusnetworks.com>
Reviewed-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
pimd/pim_pim.c

index c7fee4a66f3e61e2b1117ab568f34094077c843d..b77f39f1c46dc7600d7b1fcb42730cafe01544ae 100644 (file)
@@ -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",