]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Single Upstream join when Keepalive timer pops
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 10 Aug 2017 18:41:38 +0000 (14:41 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 11 Aug 2017 11:36:47 +0000 (07:36 -0400)
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 <sharpd@cumulusnetworks.com>
pimd/pim_upstream.c

index 95d1a840ff8eed0347f5d89716c45e035f2ecaf7..cc90cef3ae95af77606dff1dfe09564c5795b360 100644 (file)
@@ -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;