]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: fix (s,g) expiry. 4350/head
authorSarita Patra <saritap@vmware.com>
Thu, 16 May 2019 16:55:34 +0000 (09:55 -0700)
committerSarita Patra <saritap@vmware.com>
Mon, 20 May 2019 13:51:42 +0000 (06:51 -0700)
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>
pimd/pim_ifchannel.c

index 3a68176510213dbd9210c13351a16fe3167a5219..d4898f332d167075d5b4be90877ef9ec52d1db6c 100644 (file)
@@ -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);