diff options
| author | sarita patra <saritap@vmware.com> | 2022-02-16 03:45:34 -0800 | 
|---|---|---|
| committer | Sarita Patra <saritap@vmware.com> | 2022-07-07 07:53:40 -0700 | 
| commit | 53bbfd535a835c5965d4a23cded25aa5d2aad535 (patch) | |
| tree | 5f4cf3ff5592e15ea8b49e19a061c127f398cfee | |
| parent | e309769ae7cad3eb2f8536839be804a886e815f4 (diff) | |
pim6d: bsr nht handling for IPV6
Signed-off-by: sarita patra <saritap@vmware.com>
| -rw-r--r-- | pimd/pim6_stubs.c | 39 | ||||
| -rw-r--r-- | pimd/pim_bsm.c | 1 | ||||
| -rw-r--r-- | pimd/pim_nht.c | 16 | ||||
| -rw-r--r-- | pimd/pim_nht.h | 6 | 
4 files changed, 10 insertions, 52 deletions
diff --git a/pimd/pim6_stubs.c b/pimd/pim6_stubs.c index 8213b9e97f..44796236ab 100644 --- a/pimd/pim6_stubs.c +++ b/pimd/pim6_stubs.c @@ -27,42 +27,3 @@  #include "pim_cmd.h"  #include "pim_bsm.h" -/* - * NH lookup / NHT - */ -void pim_nht_bsr_add(struct pim_instance *pim, struct in_addr addr) -{ -} - -void pim_nht_bsr_del(struct pim_instance *pim, struct in_addr addr) -{ -} - -bool pim_bsm_new_nbr_fwd(struct pim_neighbor *neigh, struct interface *ifp) -{ -	return false; -} - -void pim_bsm_proc_free(struct pim_instance *pim) -{ -} - -void pim_bsm_proc_init(struct pim_instance *pim) -{ -} - -struct bsgrp_node *pim_bsm_get_bsgrp_node(struct bsm_scope *scope, -					  struct prefix *grp) -{ -	return NULL; -} - -void pim_bsm_write_config(struct vty *vty, struct interface *ifp) -{ -} - -int pim_bsm_process(struct interface *ifp, pim_sgaddr *sg, uint8_t *buf, -		    uint32_t buf_size, bool no_fwd) -{ -	return 0; -} diff --git a/pimd/pim_bsm.c b/pimd/pim_bsm.c index a89939e491..722851cc16 100644 --- a/pimd/pim_bsm.c +++ b/pimd/pim_bsm.c @@ -1388,6 +1388,7 @@ int pim_bsm_process(struct interface *ifp, pim_sgaddr *sg, uint8_t *buf,  	if (0)  #endif  	{ +#if PIM_IPV == 4  		/* Multicast BSMs are only accepted if source interface & IP  		 * match RPF towards the BSR's IP address, or they have  		 * no-forward set diff --git a/pimd/pim_nht.c b/pimd/pim_nht.c index 94906d3426..ac1315bd42 100644 --- a/pimd/pim_nht.c +++ b/pimd/pim_nht.c @@ -163,8 +163,7 @@ int pim_find_or_track_nexthop(struct pim_instance *pim, pim_addr addr,  	return 0;  } -#if PIM_IPV == 4 -void pim_nht_bsr_add(struct pim_instance *pim, struct in_addr addr) +void pim_nht_bsr_add(struct pim_instance *pim, pim_addr addr)  {  	struct pim_nexthop_cache *pnc; @@ -172,7 +171,6 @@ void pim_nht_bsr_add(struct pim_instance *pim, struct in_addr addr)  	pnc->bsr_count++;  } -#endif /* PIM_IPV == 4 */  static void pim_nht_drop_maybe(struct pim_instance *pim,  			       struct pim_nexthop_cache *pnc) @@ -242,8 +240,7 @@ void pim_delete_tracked_nexthop(struct pim_instance *pim, pim_addr addr,  	pim_nht_drop_maybe(pim, pnc);  } -#if PIM_IPV == 4 -void pim_nht_bsr_del(struct pim_instance *pim, struct in_addr addr) +void pim_nht_bsr_del(struct pim_instance *pim, pim_addr addr)  {  	struct pim_nexthop_cache *pnc = NULL;  	struct pim_nexthop_cache lookup; @@ -253,7 +250,7 @@ void pim_nht_bsr_del(struct pim_instance *pim, struct in_addr addr)  	 * is 0.0.0.0 as that the BSR has not been registered  	 * for tracking yet.  	 */ -	if (addr.s_addr == INADDR_ANY) +	if (pim_addr_is_any(addr))  		return;  	lookup.rpf.rpf_addr = addr; @@ -261,18 +258,18 @@ void pim_nht_bsr_del(struct pim_instance *pim, struct in_addr addr)  	pnc = hash_lookup(pim->rpf_hash, &lookup);  	if (!pnc) { -		zlog_warn("attempting to delete nonexistent NHT BSR entry %pI4", +		zlog_warn("attempting to delete nonexistent NHT BSR entry %pPA",  			  &addr);  		return;  	} -	assertf(pnc->bsr_count > 0, "addr=%pI4", &addr); +	assertf(pnc->bsr_count > 0, "addr=%pPA", &addr);  	pnc->bsr_count--;  	pim_nht_drop_maybe(pim, pnc);  } -bool pim_nht_bsr_rpf_check(struct pim_instance *pim, struct in_addr bsr_addr, +bool pim_nht_bsr_rpf_check(struct pim_instance *pim, pim_addr bsr_addr,  			   struct interface *src_ifp, pim_addr src_ip)  {  	struct pim_nexthop_cache *pnc = NULL; @@ -392,7 +389,6 @@ bool pim_nht_bsr_rpf_check(struct pim_instance *pim, struct in_addr bsr_addr,  	}  	return false;  } -#endif /* PIM_IPV == 4 */  void pim_rp_nexthop_del(struct rp_info *rp_info)  { diff --git a/pimd/pim_nht.h b/pimd/pim_nht.h index c5c607e5ab..240e61d98f 100644 --- a/pimd/pim_nht.h +++ b/pimd/pim_nht.h @@ -72,10 +72,10 @@ int pim_ecmp_fib_lookup_if_vif_index(struct pim_instance *pim, pim_addr src,  void pim_rp_nexthop_del(struct rp_info *rp_info);  /* for RPF check on BSM message receipt */ -void pim_nht_bsr_add(struct pim_instance *pim, struct in_addr bsr_addr); -void pim_nht_bsr_del(struct pim_instance *pim, struct in_addr bsr_addr); +void pim_nht_bsr_add(struct pim_instance *pim, pim_addr bsr_addr); +void pim_nht_bsr_del(struct pim_instance *pim, pim_addr bsr_addr);  /* RPF(bsr_addr) == src_ip%src_ifp? */ -bool pim_nht_bsr_rpf_check(struct pim_instance *pim, struct in_addr bsr_addr, +bool pim_nht_bsr_rpf_check(struct pim_instance *pim, pim_addr bsr_addr,  			   struct interface *src_ifp, pim_addr src_ip);  #endif  | 
