summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsarita patra <saritap@vmware.com>2022-02-16 03:45:34 -0800
committerSarita Patra <saritap@vmware.com>2022-07-07 07:53:40 -0700
commit53bbfd535a835c5965d4a23cded25aa5d2aad535 (patch)
tree5f4cf3ff5592e15ea8b49e19a061c127f398cfee
parente309769ae7cad3eb2f8536839be804a886e815f4 (diff)
pim6d: bsr nht handling for IPV6
Signed-off-by: sarita patra <saritap@vmware.com>
-rw-r--r--pimd/pim6_stubs.c39
-rw-r--r--pimd/pim_bsm.c1
-rw-r--r--pimd/pim_nht.c16
-rw-r--r--pimd/pim_nht.h6
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