]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Add decision point to send register message
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 14 Jul 2016 21:16:42 +0000 (17:16 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 22 Dec 2016 01:26:02 +0000 (20:26 -0500)
When we receive a register stop we will have created a
timer for this.  As such if the t_rs_timer pointer will
be non-NULL at this point.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_mroute.c
pimd/pim_upstream.h

index 41672b1b19ffad8da57aa8830ee6bf2820b408d2..bf996a738b1c293497d8884382ee2e055c721c0a 100644 (file)
@@ -194,7 +194,12 @@ pim_mroute_msg_wholepkt (int fd, struct interface *ifp, const char *buf,
     return 0;
   }
 
-  pim_register_send((const struct ip *)(buf + sizeof(struct ip)), rpg);
+  /*
+   * If we've received a register suppress
+   */
+  if (!up->t_rs_timer)
+    pim_register_send((const struct ip *)(buf + sizeof(struct ip)), rpg);
+
   return 0;
 }
 
index ea44707c54f69b804139ecb04c34b160c1ed58bb..71a4c85f18a790460cb5b0584a701aa1386182c8 100644 (file)
@@ -100,6 +100,13 @@ struct pim_upstream {
 
   struct thread           *t_join_timer;
 
+  /*
+   * RST(S,G)
+   */
+  struct thread           *t_rs_timer;
+#define PIM_REGISTER_SUPPRESSION_PERIOD (60)
+#define PIM_REGISTER_PROBE_PERIOD        (5)
+
   /*
    * KAT(S,G)
    */