summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2019-04-05 08:40:51 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2019-04-05 11:12:59 -0400
commit2de05c606e34e8ea2bb60fce110228caeb356e48 (patch)
tree8a0b8a18df341a242c8796fde3e54f0f1356ac35
parent2cb7234faff0ac0c0b51cb4c0585d0500bb48f7e (diff)
pimd: Initiate *,G S,G RPT Prune in some cases
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>
-rw-r--r--pimd/pim_upstream.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index 2a0804e10b..8c59207246 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -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;
}