summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss White <russ@riw.us>2022-02-07 14:03:53 -0500
committerGitHub <noreply@github.com>2022-02-07 14:03:53 -0500
commit88f739c16bf82cbfe3d8d15c29f88c948c3b53cb (patch)
treedda81949ec7f39499c09528c6901895ceab41a35
parent35215a013a43e447d1f5e7329c93c80529520a27 (diff)
parent5f010b1205a9b4977d08329bd3e100fb5f41c0ff (diff)
Merge pull request #10441 from donaldsharp/pim_bsr_warning_remove
pimd: Only remove bsr NHT if we actually have tracked something
-rw-r--r--pimd/pim_bsm.c6
-rw-r--r--pimd/pim_nht.c8
2 files changed, 10 insertions, 4 deletions
diff --git a/pimd/pim_bsm.c b/pimd/pim_bsm.c
index 238c19d2cc..c8b6d4e404 100644
--- a/pimd/pim_bsm.c
+++ b/pimd/pim_bsm.c
@@ -557,8 +557,7 @@ static void pim_bsm_update(struct pim_instance *pim, struct in_addr bsr,
uint32_t bsr_prio)
{
if (bsr.s_addr != pim->global_scope.current_bsr.s_addr) {
- if (pim->global_scope.current_bsr.s_addr)
- pim_nht_bsr_del(pim, pim->global_scope.current_bsr);
+ pim_nht_bsr_del(pim, pim->global_scope.current_bsr);
pim_nht_bsr_add(pim, bsr);
pim->global_scope.current_bsr = bsr;
@@ -582,8 +581,7 @@ void pim_bsm_clear(struct pim_instance *pim)
struct rp_info *rp_info;
bool upstream_updated = false;
- if (pim->global_scope.current_bsr.s_addr)
- pim_nht_bsr_del(pim, pim->global_scope.current_bsr);
+ pim_nht_bsr_del(pim, pim->global_scope.current_bsr);
/* Reset scope zone data */
pim->global_scope.accept_nofwd_bsm = false;
diff --git a/pimd/pim_nht.c b/pimd/pim_nht.c
index cd6f4c45fa..94a624e2c4 100644
--- a/pimd/pim_nht.c
+++ b/pimd/pim_nht.c
@@ -259,6 +259,14 @@ void pim_nht_bsr_del(struct pim_instance *pim, struct in_addr addr)
struct pim_nexthop_cache *pnc = NULL;
struct pim_nexthop_cache lookup;
+ /*
+ * Nothing to do here if the address to unregister
+ * is 0.0.0.0 as that the BSR has not been registered
+ * for tracking yet.
+ */
+ if (addr.s_addr == INADDR_ANY)
+ return;
+
lookup.rpf.rpf_addr.family = AF_INET;
lookup.rpf.rpf_addr.prefixlen = IPV4_MAX_BITLEN;
lookup.rpf.rpf_addr.u.prefix4 = addr;