pimd: Stop sending Register under certain situations

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>
This commit is contained in:
Donald Sharp 2016-12-05 07:39:59 -05:00
parent 833331fbce
commit 70e7fda8a4

View 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;