]> git.puffer.fish Git - mirror/frr.git/commitdiff
Revert "bgpd: fix missing delete from the list in dampening"
authorDonatas Abraitis <donatas.abraitis@gmail.com>
Fri, 30 Jul 2021 13:50:05 +0000 (16:50 +0300)
committerDonatas Abraitis <donatas.abraitis@gmail.com>
Fri, 30 Jul 2021 13:50:05 +0000 (16:50 +0300)
This reverts commit 755a977b8aef231bae28994159eef2ffcfd5b599.

bgpd/bgp_damp.c

index 513cfffda9672e0438988595a44dcc8de0dd7e9d..6d2dc1a65a54a8193c81fd2bebbebf0cb4e9bcb8 100644 (file)
@@ -227,6 +227,7 @@ static int bgp_reuse_timer(struct thread *t)
                        }
 
                        if (bdi->penalty <= bdc->reuse_limit / 2.0) {
+                               bgp_reuselist_del(&plist, bdi);
                                bgp_damp_info_free(bdi, 1);
                        } else {
                                bdi->index = BGP_DAMP_NO_REUSE_LIST_INDEX;
@@ -375,8 +376,10 @@ int bgp_damp_update(struct bgp_path_info *path, struct bgp_dest *dest,
 
        if (bdi->penalty > bdc->reuse_limit / 2.0)
                bdi->t_updated = t_now;
-       else
+       else {
+               bgp_damp_info_unclaim(bdi);
                bgp_damp_info_free(bdi, 0);
+       }
 
        return status;
 }
@@ -385,8 +388,6 @@ void bgp_damp_info_free(struct bgp_damp_info *bdi, int withdraw)
 {
        assert(bdi);
 
-       bgp_damp_info_unclaim(bdi);
-
        bdi->path->extra->damp_info = NULL;
        bgp_path_info_unset_flag(bdi->dest, bdi->path,
                                 BGP_PATH_HISTORY | BGP_PATH_DAMPED);
@@ -504,12 +505,15 @@ void bgp_damp_info_clean(struct bgp *bgp, struct bgp_damp_config *bdc,
                                bgp_process(bgp, bdi->dest, bdi->afi,
                                            bdi->safi);
                        }
+                       bgp_reuselist_del(list, bdi);
                        bgp_damp_info_free(bdi, 1);
                }
        }
 
-       while ((bdi = SLIST_FIRST(&bdc->no_reuse_list)) != NULL)
+       while ((bdi = SLIST_FIRST(&bdc->no_reuse_list)) != NULL) {
+               bgp_reuselist_del(&bdc->no_reuse_list, bdi);
                bgp_damp_info_free(bdi, 1);
+       }
 
        /* Free decay array */
        XFREE(MTYPE_BGP_DAMP_ARRAY, bdc->decay_array);