From 8022df6a6dae1c7e8d127e1ec064bd10e1ccaf2d Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Thu, 10 Aug 2017 14:41:38 -0400 Subject: [PATCH] pimd: Single Upstream join when Keepalive timer pops If a single S,G is being deleted because the keepalive timer has timed out, Send a *,G join upstream to clear the S,G RPT prune bit. 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 95d1a840ff..cc90cef3ae 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -1111,8 +1111,15 @@ static int pim_upstream_keep_alive_timer(struct thread *t) PIM_UPSTREAM_FLAG_UNSET_SRC_STREAM(up->flags); pim_upstream_del(pim, up, __PRETTY_FUNCTION__); } else if (PIM_UPSTREAM_FLAG_TEST_SRC_LHR(up->flags)) { + struct pim_upstream *parent = up->parent; + PIM_UPSTREAM_FLAG_UNSET_SRC_LHR(up->flags); pim_upstream_del(pim, up, __PRETTY_FUNCTION__); + + if (parent) { + pim_jp_agg_single_upstream_send(&parent->rpf, + parent, true); + } } return 0; -- 2.39.5