From: Donald Sharp Date: Mon, 5 Dec 2016 12:39:59 +0000 (-0500) Subject: pimd: Stop sending Register under certain situations X-Git-Tag: frr-3.0-branchpoint~64^2~10^2~35 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=70e7fda8a43de4368b71560a0b6cffdb6504db82;p=matthieu%2Ffrr.git 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 --- diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c index d823934e8c..cfa8a3bc5c 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -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;