diff options
| author | Chirag Shah <chirag@cumulusnetworks.com> | 2017-04-21 15:08:03 -0700 |
|---|---|---|
| committer | Chirag Shah <chirag@cumulusnetworks.com> | 2017-05-06 17:38:18 -0700 |
| commit | 4ba87bb9e2b6f36f9504c6468ec2a465a28fe43f (patch) | |
| tree | 76ee62f306bfc7b9b08ae4c024f7f3f9179d30b1 /pimd/pim_join.c | |
| parent | dba88ccbb0a3b4f842671564e170755944e514e1 (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.c | 11 |
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)) { |
