diff options
author | Chirag Shah <chirag@cumulusnetworks.com> | 2017-04-22 00:08:03 +0200 |
---|---|---|
committer | Chirag Shah <chirag@cumulusnetworks.com> | 2017-05-07 02:38:18 +0200 |
commit | 4ba87bb9e2b6f36f9504c6468ec2a465a28fe43f (patch) | |
tree | 76ee62f306bfc7b9b08ae4c024f7f3f9179d30b1 /pimd/pim_msg.c | |
parent | pimd: replay IGMP static group upon if creation (diff) | |
download | frr-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.c | 4 |
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 { |