diff options
| author | Sarita Patra <saritap@vmware.com> | 2023-02-24 02:03:34 -0800 | 
|---|---|---|
| committer | Sarita Patra <saritap@vmware.com> | 2023-02-24 04:40:38 -0800 | 
| commit | d77da853f0f055244f5442e37b690809ab951a5a (patch) | |
| tree | 191776eeadea672cbc02438efacf3e00e940c153 /pimd/pim_upstream.c | |
| parent | 689b9f10fc33387414c8077cd8cacd2eb2fc7198 (diff) | |
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 <saritap@vmware.com>
Diffstat (limited to 'pimd/pim_upstream.c')
| -rw-r--r-- | pimd/pim_upstream.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c index d63d530f93..b0f1158596 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -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);  | 
