From d23756e938cd3cb3c0bfd2b286370282d0fb1c2d Mon Sep 17 00:00:00 2001 From: Sarita Patra Date: Thu, 7 Feb 2019 23:50:12 -0800 Subject: [PATCH] pimd: Don't refersh the oif_creation timer if S,G already present Issue: Shut the RP interface in the router RP. LHR will get to know RP becomes not-reachable, so it send a prune towards the RP. On receiving the prune, RP clear the (*, G) entry, but (S, G) should not get removed if present. Now no-shut the RP interface in the router RP. LHR will send a (*, G) join towards the RP. On receiving join FRR create the (*, G) entry. Along with this, it also add the interface(join received) in the OIL of (S, G) and also refresh the (S, G) timer. Fix: Dont refresh the timer for S, G or (*, G), if the flag for the channel OIL is PIM_OIF_FLAG_PROTO_ANY. Signed-off-by: Sarita Patra --- pimd/pim_oil.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pimd/pim_oil.c b/pimd/pim_oil.c index 1290bfe56b..2e12d728cf 100644 --- a/pimd/pim_oil.c +++ b/pimd/pim_oil.c @@ -392,8 +392,10 @@ int pim_channel_add_oif(struct channel_oil *channel_oil, struct interface *oif, if (channel_oil->oif_flags[pim_ifp->mroute_vif_index] & PIM_OIF_FLAG_PROTO_ANY) { - channel_oil->oif_creation[pim_ifp->mroute_vif_index] = - pim_time_monotonic_sec(); + /* Updating time here is not required as this time has to + * indicate when the interface is added + */ + channel_oil->oif_flags[pim_ifp->mroute_vif_index] |= proto_mask; /* Check the OIF really exists before returning, and only log warning otherwise */ -- 2.39.5