summaryrefslogtreecommitdiff
path: root/pimd/pim_join.c
diff options
context:
space:
mode:
authorChirag Shah <chirag@cumulusnetworks.com>2017-04-21 15:08:03 -0700
committerChirag Shah <chirag@cumulusnetworks.com>2017-05-06 17:38:18 -0700
commit4ba87bb9e2b6f36f9504c6468ec2a465a28fe43f (patch)
tree76ee62f306bfc7b9b08ae4c024f7f3f9179d30b1 /pimd/pim_join.c
parentdba88ccbb0a3b4f842671564e170755944e514e1 (diff)
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_join.c')
-rw-r--r--pimd/pim_join.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/pimd/pim_join.c b/pimd/pim_join.c
index a9ca349102..828781a467 100644
--- a/pimd/pim_join.c
+++ b/pimd/pim_join.c
@@ -374,7 +374,7 @@ int pim_joinprune_send(struct pim_rpf *rpf,
struct list *groups)
{
struct pim_jp_agg_group *group;
- struct pim_interface *pim_ifp;
+ struct pim_interface *pim_ifp = NULL;
struct pim_jp_groups *grp = NULL;
struct pim_jp *msg;
struct listnode *node, *nnode;
@@ -395,12 +395,13 @@ int pim_joinprune_send(struct pim_rpf *rpf,
return -1;
}
- if (!pim_ifp) {
- zlog_warn("%s: multicast not enabled on interface %s",
+ if (!pim_ifp)
+ {
+ zlog_warn ("%s: multicast not enabled on interface %s",
__PRETTY_FUNCTION__,
rpf->source_nexthop.interface->name);
- return -1;
- }
+ return -1;
+ }
if (PIM_INADDR_IS_ANY(rpf->rpf_addr.u.prefix4))
{