diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2019-04-05 08:40:51 -0400 |
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2019-04-05 11:12:59 -0400 |
| commit | 2de05c606e34e8ea2bb60fce110228caeb356e48 (patch) | |
| tree | 8a0b8a18df341a242c8796fde3e54f0f1356ac35 | |
| parent | 2cb7234faff0ac0c0b51cb4c0585d0500bb48f7e (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.c | 4 |
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; } |
