summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSarita Patra <saritap@vmware.com>2019-05-16 09:55:34 -0700
committerSarita Patra <saritap@vmware.com>2019-05-20 06:51:42 -0700
commit0cdbb2cf1a98da66c584e04d92745d3831391d6c (patch)
treeb014f9504fd6f2bb51df68b2924dfb5d9379fc5e
parent764252d0ab48563eb171e09ce9d53e249e6e8a27 (diff)
pimd: fix (s,g) expiry.
Fix: When RP receives a (*, G) join and corresponding (s,g) is present, then check for OIL is not-empty, then only switch upstream (s, g) state to JOINED. Signed-off-by: Sarita Patra <saritap@vmware.com>
-rw-r--r--pimd/pim_ifchannel.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c
index 3a68176510..d4898f332d 100644
--- a/pimd/pim_ifchannel.c
+++ b/pimd/pim_ifchannel.c
@@ -1404,7 +1404,9 @@ void pim_ifchannel_set_star_g_join_state(struct pim_ifchannel *ch, int eom,
PIM_IF_FLAG_UNSET_S_G_RPT(child->flags);
child->ifjoin_state = PIM_IFJOIN_NOINFO;
- if (I_am_RP(pim, child->sg.grp)) {
+ if ((I_am_RP(pim, child->sg.grp)) &&
+ (!pim_upstream_empty_inherited_olist(
+ child->upstream))) {
pim_channel_add_oif(
child->upstream->channel_oil,
ch->interface, PIM_OIF_FLAG_PROTO_STAR);