]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd, pim6d: Fix join prune handling 12008/head
authorSarita Patra <saritap@vmware.com>
Fri, 24 Feb 2023 10:03:34 +0000 (02:03 -0800)
committerSarita Patra <saritap@vmware.com>
Fri, 24 Feb 2023 12:40:38 +0000 (04:40 -0800)
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>
pimd/pim_upstream.c

index d63d530f93966d799e49876a8e9c7c78cb2c80cc..b0f11585961faeb8a22a82d4cb27114b78847168 100644 (file)
@@ -327,7 +327,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);
@@ -341,7 +341,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(
@@ -433,7 +433,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);
@@ -485,7 +486,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);