From 0770149af7e7322c9854763d88bf06b5e4b170a4 Mon Sep 17 00:00:00 2001 From: Sarita Patra Date: Fri, 24 Feb 2023 02:03:34 -0800 Subject: [PATCH] pimd, pim6d: Fix join prune handling When upstream RPF address is secondary address, and neighborship is built with primary address, then pim_neighbor_find() fails. Verify the upstream RPF address is present in the neighbor primary and secondary address list. Signed-off-by: Sarita Patra (cherry picked from commit d77da853f0f055244f5442e37b690809ab951a5a) --- pimd/pim_upstream.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c index 4ef0bfaa48..2d542d6187 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -340,7 +340,7 @@ static void join_timer_stop(struct pim_upstream *up) if (up->rpf.source_nexthop.interface) nbr = pim_neighbor_find(up->rpf.source_nexthop.interface, - up->rpf.rpf_addr); + up->rpf.rpf_addr, true); if (nbr) pim_jp_agg_remove_group(nbr->upstream_jp_agg, up, nbr); @@ -354,7 +354,7 @@ void join_timer_start(struct pim_upstream *up) if (up->rpf.source_nexthop.interface) { nbr = pim_neighbor_find(up->rpf.source_nexthop.interface, - up->rpf.rpf_addr); + up->rpf.rpf_addr, true); if (PIM_DEBUG_PIM_EVENTS) { zlog_debug( @@ -446,7 +446,8 @@ void pim_upstream_join_suppress(struct pim_upstream *up, pim_addr rpf, else { /* Remove it from jp agg from the nbr for suppression */ nbr = pim_neighbor_find(up->rpf.source_nexthop.interface, - up->rpf.rpf_addr); + up->rpf.rpf_addr, true); + if (nbr) { join_timer_remain_msec = pim_time_timer_remain_msec(nbr->jp_timer); @@ -498,7 +499,8 @@ void pim_upstream_join_timer_decrease_to_t_override(const char *debug_label, struct pim_neighbor *nbr; nbr = pim_neighbor_find(up->rpf.source_nexthop.interface, - up->rpf.rpf_addr); + up->rpf.rpf_addr, true); + if (nbr) join_timer_remain_msec = pim_time_timer_remain_msec(nbr->jp_timer);