diff options
| author | sarita patra <saritap@vmware.com> | 2022-04-06 07:35:11 -0700 | 
|---|---|---|
| committer | sarita patra <saritap@vmware.com> | 2022-04-06 22:37:58 -0700 | 
| commit | dac86a0a2d68f17dcc27d2d0bc8952dddb2808c9 (patch) | |
| tree | 0d11a80805caaf524d2d8f8cb380c4dfef4fce5a /pimd/pim_nht.c | |
| parent | cbe1dbba30d9be61b6f3fb2e81161b3b9704cd68 (diff) | |
pim6d: Handle mrib_nexthop_addr & pim_zlookup_nexthop in pim_nht
Signed-off-by: sarita patra <saritap@vmware.com>
Diffstat (limited to 'pimd/pim_nht.c')
| -rw-r--r-- | pimd/pim_nht.c | 44 | 
1 files changed, 16 insertions, 28 deletions
diff --git a/pimd/pim_nht.c b/pimd/pim_nht.c index 106bce61db..eec763a4ff 100644 --- a/pimd/pim_nht.c +++ b/pimd/pim_nht.c @@ -331,13 +331,12 @@ bool pim_nht_bsr_rpf_check(struct pim_instance *pim, struct in_addr bsr_addr,  			if (if_is_loopback(ifp) && if_is_loopback(src_ifp))  				return true; -			nbr = pim_neighbor_find_prefix(ifp, &znh->nexthop_addr); +			nbr = pim_neighbor_find(ifp, znh->nexthop_addr);  			if (!nbr)  				continue; -			return znh->ifindex == src_ifp->ifindex -			       && znh->nexthop_addr.u.prefix4.s_addr -					  == src_ip.s_addr; +			return znh->ifindex == src_ifp->ifindex && +			       (!pim_addr_cmp(znh->nexthop_addr, src_ip));  		}  		return false;  	} @@ -406,8 +405,7 @@ bool pim_nht_bsr_rpf_check(struct pim_instance *pim, struct in_addr bsr_addr,  void pim_rp_nexthop_del(struct rp_info *rp_info)  {  	rp_info->rp.source_nexthop.interface = NULL; -	pim_addr_to_prefix(&rp_info->rp.source_nexthop.mrib_nexthop_addr, -			   PIMADDR_ANY); +	rp_info->rp.source_nexthop.mrib_nexthop_addr = PIMADDR_ANY;  	rp_info->rp.source_nexthop.mrib_metric_preference =  		router->infinite_assert_metric.metric_preference;  	rp_info->rp.source_nexthop.mrib_route_metric = @@ -510,7 +508,7 @@ static int pim_ecmp_nexthop_search(struct pim_instance *pim,  	uint32_t hash_val = 0, mod_val = 0;  	uint8_t nh_iter = 0, found = 0;  	uint32_t i, num_nbrs = 0; -	pim_addr nh_addr = pim_addr_from_prefix(&(nexthop->mrib_nexthop_addr)); +	pim_addr nh_addr = nexthop->mrib_nexthop_addr;  	pim_addr src_addr = pim_addr_from_prefix(src);  	pim_addr grp_addr = pim_addr_from_prefix(grp); @@ -546,9 +544,9 @@ static int pim_ecmp_nexthop_search(struct pim_instance *pim,  			if (curr_route_valid &&  			    !pim_if_connected_to_source(nexthop->interface,  							src_addr)) { -				nbr = pim_neighbor_find_prefix( +				nbr = pim_neighbor_find(  					nexthop->interface, -					&nexthop->mrib_nexthop_addr); +					nexthop->mrib_nexthop_addr);  				if (!nbr  				    && !if_is_loopback(nexthop->interface)) {  					if (PIM_DEBUG_PIM_NHT) @@ -655,14 +653,10 @@ static int pim_ecmp_nexthop_search(struct pim_instance *pim,  		if (nh_iter == mod_val) {  			nexthop->interface = ifp; -			nexthop->mrib_nexthop_addr.family = PIM_AF; -			nexthop->mrib_nexthop_addr.prefixlen = PIM_MAX_BITLEN;  #if PIM_IPV == 4 -			nexthop->mrib_nexthop_addr.u.prefix4 = -				nh_node->gate.ipv4; +			nexthop->mrib_nexthop_addr = nh_node->gate.ipv4;  #else -			nexthop->mrib_nexthop_addr.u.prefix6 = -				nh_node->gate.ipv6; +			nexthop->mrib_nexthop_addr = nh_node->gate.ipv6;  #endif  			nexthop->mrib_metric_preference = pnc->distance;  			nexthop->mrib_route_metric = pnc->metric; @@ -942,8 +936,8 @@ int pim_ecmp_nexthop_lookup(struct pim_instance *pim,  		ifps[i] = if_lookup_by_index(nexthop_tab[i].ifindex,  					     pim->vrf->vrf_id);  		if (ifps[i]) { -			nbrs[i] = pim_neighbor_find_prefix( -				ifps[i], &nexthop_tab[i].nexthop_addr); +			nbrs[i] = pim_neighbor_find( +				ifps[i], nexthop_tab[i].nexthop_addr);  			if (nbrs[i] ||  			    pim_if_connected_to_source(ifps[i], src_addr))  				num_nbrs++; @@ -1006,7 +1000,7 @@ int pim_ecmp_nexthop_lookup(struct pim_instance *pim,  					mod_val++;  				if (PIM_DEBUG_PIM_NHT)  					zlog_debug( -						"%s: NBR (%pFXh) not found on input interface %s(%s) (RPF for source %pPA)", +						"%s: NBR (%pPA) not found on input interface %s(%s) (RPF for source %pPA)",  						__func__,  						&nexthop_tab[i].nexthop_addr,  						ifp->name, pim->vrf->name, @@ -1017,19 +1011,13 @@ int pim_ecmp_nexthop_lookup(struct pim_instance *pim,  		}  		if (i == mod_val) { -			if (PIM_DEBUG_PIM_NHT) { -				char nexthop_str[PREFIX_STRLEN]; - -				pim_addr_dump("<nexthop?>", -					      &nexthop_tab[i].nexthop_addr, -					      nexthop_str, sizeof(nexthop_str)); +			if (PIM_DEBUG_PIM_NHT)  				zlog_debug( -					"%s: found nhop %s for addr %pPA interface %s(%s) metric %d dist %d", -					__func__, nexthop_str, &src_addr, -					ifp->name, pim->vrf->name, +					"%s: found nhop %pPA for addr %pPA interface %s(%s) metric %d dist %d", +					__func__, &nexthop_tab[i].nexthop_addr, +					&src_addr, ifp->name, pim->vrf->name,  					nexthop_tab[i].route_metric,  					nexthop_tab[i].protocol_distance); -			}  			/* update nexthop data */  			nexthop->interface = ifp;  			nexthop->mrib_nexthop_addr =  | 
