From 4ba87bb9e2b6f36f9504c6468ec2a465a28fe43f Mon Sep 17 00:00:00 2001 From: Chirag Shah Date: Fri, 21 Apr 2017 15:08:03 -0700 Subject: 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 --- pimd/pim_msg.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'pimd/pim_msg.c') 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 { -- cgit v1.2.3