]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd, pim6d: Fix join prune handling 12925/head
authorSarita Patra <saritap@vmware.com>
Fri, 24 Feb 2023 10:03:34 +0000 (02:03 -0800)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Thu, 2 Mar 2023 06:11:18 +0000 (06:11 +0000)
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 <saritap@vmware.com>
(cherry picked from commit d77da853f0f055244f5442e37b690809ab951a5a)

pimd/pim_upstream.c

index 4ef0bfaa489feebf8b9f50e6ddadd971ed84626f..2d542d6187c709239c06ee66d9aeb36ad4abbb56 100644 (file)
@@ -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);