diff options
| author | Russ White <russ@riw.us> | 2022-02-07 14:03:53 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-07 14:03:53 -0500 |
| commit | 88f739c16bf82cbfe3d8d15c29f88c948c3b53cb (patch) | |
| tree | dda81949ec7f39499c09528c6901895ceab41a35 | |
| parent | 35215a013a43e447d1f5e7329c93c80529520a27 (diff) | |
| parent | 5f010b1205a9b4977d08329bd3e100fb5f41c0ff (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.c | 6 | ||||
| -rw-r--r-- | pimd/pim_nht.c | 8 |
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; |
