diff options
Diffstat (limited to 'pimd/pim_rpf.c')
| -rw-r--r-- | pimd/pim_rpf.c | 18 | 
1 files changed, 4 insertions, 14 deletions
diff --git a/pimd/pim_rpf.c b/pimd/pim_rpf.c index 55f788b5bb..8cc8b7481c 100644 --- a/pimd/pim_rpf.c +++ b/pimd/pim_rpf.c @@ -201,7 +201,6 @@ enum pim_rpf_result pim_rpf_update(struct pim_instance *pim,  	struct pim_rpf *rpf = &up->rpf;  	struct pim_rpf saved;  	struct prefix nht_p; -	struct pim_nexthop_cache pnc;  	struct prefix src, grp;  	bool neigh_needed = true; @@ -232,23 +231,14 @@ enum pim_rpf_result pim_rpf_update(struct pim_instance *pim,  	grp.family = AF_INET;  	grp.prefixlen = IPV4_MAX_BITLEN;  	grp.u.prefix4 = up->sg.grp; -	memset(&pnc, 0, sizeof(struct pim_nexthop_cache));  	if ((up->sg.src.s_addr == INADDR_ANY && I_am_RP(pim, up->sg.grp)) ||  	    PIM_UPSTREAM_FLAG_TEST_FHR(up->flags))  		neigh_needed = FALSE; -	if (pim_find_or_track_nexthop(pim, &nht_p, up, NULL, &pnc)) { -		if (pnc.nexthop_num) { -			if (!pim_ecmp_nexthop_search(pim, &pnc, -						     &up->rpf.source_nexthop, -						     &src, &grp, neigh_needed)) -				return PIM_RPF_FAILURE; -		} -	} else { -		if (!pim_ecmp_nexthop_lookup(pim, &rpf->source_nexthop, &src, -					     &grp, neigh_needed)) -			return PIM_RPF_FAILURE; -	} +	pim_find_or_track_nexthop(pim, &nht_p, up, NULL, NULL); +	if (!pim_ecmp_nexthop_lookup(pim, &rpf->source_nexthop, &src, &grp, +				     neigh_needed)) +		return PIM_RPF_FAILURE;  	rpf->rpf_addr.family = AF_INET;  	rpf->rpf_addr.u.prefix4 = pim_rpf_find_rpf_addr(up);  | 
