]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pimd: Initiate *,G S,G RPT Prune in some cases
authorDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 5 Apr 2019 12:40:51 +0000 (08:40 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 5 Apr 2019 15:12:59 +0000 (11:12 -0400)
On the LHR after we decide that traffic is flowing and
we set the SPT bit for the S,G *and* the incoming IIF
of the S,G is different than the incoming IIF of the *,G
we should immediately send the *,G S,G RPT Prune as
a triggered response instead of waiting for the next
cycle.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_upstream.c

index 2a0804e10bc5707d85c1e86f33f17f22c9306352..8c59207246a6d1d2957f3e62fe92d3a1154f8e12 100644 (file)
@@ -1292,11 +1292,15 @@ void pim_upstream_set_sptbit(struct pim_upstream *up,
        if (!starup
            || up->rpf.source_nexthop
                               .interface != starup->rpf.source_nexthop.interface) {
+               struct pim_upstream *starup = up->parent;
+
                if (PIM_DEBUG_TRACE)
                        zlog_debug(
                                "%s: %s RPF_interface(S) != RPF_interface(RP(G))",
                                __PRETTY_FUNCTION__, up->sg_str);
                up->sptbit = PIM_UPSTREAM_SPTBIT_TRUE;
+
+               pim_jp_agg_single_upstream_send(&starup->rpf, starup, true);
                return;
        }