summaryrefslogtreecommitdiffstats
path: root/pimd/pim_upstream.c
diff options
context:
space:
mode:
authorChirag Shah <chirag@cumulusnetworks.com>2017-05-12 21:05:46 +0200
committerChirag Shah <chirag@cumulusnetworks.com>2017-05-18 23:36:25 +0200
commitee22bbae78d0a17c0f34da106f77ba2fd80e6b0d (patch)
treece348e7fe2c83258799ae8eb89f93bf9cda3e1c0 /pimd/pim_upstream.c
parentpimd: Fix indentation issue that is causing clang unhappiness (diff)
downloadfrr-ee22bbae78d0a17c0f34da106f77ba2fd80e6b0d.tar.xz
frr-ee22bbae78d0a17c0f34da106f77ba2fd80e6b0d.zip
pimd: Fix to Tx S,G Join when SGRpt->Join state
-Upon Rx (*,G) Join w/o SGRpt at RP, trigger (S,G) Join towards FHR, unset SGRpt flag from channel, add (*,G) oif to (S,G) entry. -Add I am not RP check to triger SGRpt on *,G path otherwise, send S,G Prune on SPT path from RP to FHR upon receving *,G Prune. -Upon Rx SGRpt receive, remove OIF(downstream where Prune received) from specific S,G. Testing Done: pim-smoke Ran 95 tests in 11790.552s FAILED (SKIP=10, failures=4) Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_upstream.c')
-rw-r--r--pimd/pim_upstream.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index 6fadfc2f2..af9c3913a 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -582,8 +582,9 @@ pim_upstream_switch(struct pim_upstream *up,
if (old_state == PIM_UPSTREAM_JOINED)
pim_msdp_up_join_state_changed(up);
- /* IHR, Trigger SGRpt on *,G IIF to prune S,G from RPT */
- if (pim_upstream_is_sg_rpt(up) && up->parent)
+ /* IHR, Trigger SGRpt on *,G IIF to prune S,G from RPT towards RP.
+ If I am RP for G then send S,G prune to its IIF. */
+ if (pim_upstream_is_sg_rpt(up) && up->parent && !I_am_RP(up->sg.grp))
{
if (PIM_DEBUG_PIM_TRACE_DETAIL)
zlog_debug ("%s: *,G IIF %s S,G IIF %s ", __PRETTY_FUNCTION__,