summaryrefslogtreecommitdiffstats
path: root/pimd/pim_msg.c
diff options
context:
space:
mode:
authorChirag Shah <chirag@cumulusnetworks.com>2017-04-22 00:08:03 +0200
committerChirag Shah <chirag@cumulusnetworks.com>2017-05-07 02:38:18 +0200
commit4ba87bb9e2b6f36f9504c6468ec2a465a28fe43f (patch)
tree76ee62f306bfc7b9b08ae4c024f7f3f9179d30b1 /pimd/pim_msg.c
parentpimd: replay IGMP static group upon if creation (diff)
downloadfrr-4ba87bb9e2b6f36f9504c6468ec2a465a28fe43f.tar.xz
frr-4ba87bb9e2b6f36f9504c6468ec2a465a28fe43f.zip
pimd: Fix WG/SGRpt & WG J/P processing
During processing of Join/Prune, for a S,G entry, current state is SGRpt, when only *,G is received, need to clear SGRpt and add/inherit the *,G OIF to S,G so it can forward traffic to downstream where *,G is received. Upon receiving SGRpt prune remove the inherited *,G OIF. From, downstream router received *,G Prune along with SGRpt prune. Avoid sending *,G and SGRpt Prune together. Reset upstream_del reset ifchannel to NULL. Testing Done: Run failed smoke test of sending data packets, trigger SPT switchover, *,G path received SGRpt later data traffic stopped S,G ages out from LHR, sends only *,G join to upstream, verified S,G entry inherit the OIF. Upon receiving SGRpt deletes inherited oif and retains in SGRpt state. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_msg.c')
-rw-r--r--pimd/pim_msg.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/pimd/pim_msg.c b/pimd/pim_msg.c
index e19893f5d..a9e013090 100644
--- a/pimd/pim_msg.c
+++ b/pimd/pim_msg.c
@@ -195,7 +195,9 @@ pim_msg_build_jp_groups (struct pim_jp_groups *grp, struct pim_jp_agg_group *sgs
struct pim_rpf *rpf = pim_rp_g (source->up->sg.grp);
bits = PIM_ENCODE_SPARSE_BIT | PIM_ENCODE_WC_BIT | PIM_ENCODE_RPT_BIT;
stosend = rpf->rpf_addr.u.prefix4;
- up = source->up;
+ /* Only Send SGRpt in case of *,G Join */
+ if (source->is_join)
+ up = source->up;
}
else
{