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-04-25 12:51:58 -0700
commit1f58d560da1544b103a6b665e825e367f10cbb33 (patch)
tree26ca6db33fb3e3993fbfa0bb5d5f81048650fbe5 /pimd/pim_join.c
parent36b1fa863162a6b1a3a5e657c73258c3fade4b21 (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. Testing Done: 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.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/pimd/pim_join.c b/pimd/pim_join.c
index 884aa35bc5..dc3a3cff8a 100644
--- a/pimd/pim_join.c
+++ b/pimd/pim_join.c
@@ -276,7 +276,7 @@ int pim_joinprune_recv(struct interface *ifp,
{
ch = pim_ifchannel_find (ifp, &sg);
if (ch)
- pim_ifchannel_set_star_g_join_state (ch, 0);
+ pim_ifchannel_set_star_g_join_state (ch, 0, msg_source_flags, 1);
}
}
@@ -297,7 +297,7 @@ int pim_joinprune_recv(struct interface *ifp,
msg_source_flags);
}
if (ch)
- pim_ifchannel_set_star_g_join_state (ch, 1);
+ pim_ifchannel_set_star_g_join_state (ch, 1, msg_source_flags, 0);
ch = NULL;
} /* scan groups */