summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_damp.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/bgpd/bgp_damp.c b/bgpd/bgp_damp.c
index 21e42ae820..fcf1e4cdaa 100644
--- a/bgpd/bgp_damp.c
+++ b/bgpd/bgp_damp.c
@@ -342,7 +342,14 @@ int bgp_damp_withdraw(struct bgp_path_info *path, struct bgp_dest *dest,
(bgp_path_info_extra_get(path))->damp_info = bdi;
bgp_no_reuse_list_add(bdi, bdc);
} else {
- bgp_damp_info_claim(bdi, bdc);
+ if (bdi->config != bdc) {
+ bgp_damp_info_claim(bdi, bdc);
+ if (bdi->index == BGP_DAMP_NO_REUSE_LIST_INDEX)
+ bgp_reuselist_add(&bdc->no_reuse_list, bdi);
+ else
+ bgp_reuselist_add(&bdc->reuse_list[bdi->index],
+ bdi);
+ }
last_penalty = bdi->penalty;
/* 1. Set t-diff = t-now - t-updated. */