]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Stop sending Register under certain situations
authorDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 5 Dec 2016 12:39:59 +0000 (07:39 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 22 Dec 2016 01:26:18 +0000 (20:26 -0500)
When the switch in question is both a FHR and the RP
for the received multicast group stream.  When we go
to send the NULL register to the RP( ourselves )
do not send it if we have not seen packets for
that stream in time greater than PIM_KEEPALIVE_PERIOD
and I_am_RP(G).

Ticket: CM-13880
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_upstream.c

index d823934e8cd5f8b059335e4d153d33bd26e204a5..cfa8a3bc5c94058588158d09d057aa7bb0cf0363 100644 (file)
@@ -1211,6 +1211,13 @@ pim_upstream_register_stop_timer (struct thread *t)
       up->join_state = PIM_UPSTREAM_JOIN_PENDING;
       pim_upstream_start_register_stop_timer (up, 1);
 
+      if (((up->channel_oil->cc.lastused/100) > PIM_KEEPALIVE_PERIOD) &&
+         (I_am_RP (up->sg.grp)))
+       {
+         if (PIM_DEBUG_TRACE)
+           zlog_debug ("%s: Stop sending the register, because I am the RP and we haven't seen a packet in a while", __PRETTY_FUNCTION__);
+         return 0;
+       }
       rpg = RP (up->sg.grp);
       memset (&ip_hdr, 0, sizeof (struct ip));
       ip_hdr.ip_p = PIM_IP_PROTO_PIM;