From 70e7fda8a43de4368b71560a0b6cffdb6504db82 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Mon, 5 Dec 2016 07:39:59 -0500 Subject: [PATCH] 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 --- pimd/pim_upstream.c | 7 +++++++ 1 file changed, 7 insertions(+) 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; -- 2.39.5