summaryrefslogtreecommitdiff
path: root/bgpd/bgp_route.c
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2025-01-01 21:16:39 +0200
committerGitHub <noreply@github.com>2025-01-01 21:16:39 +0200
commitf3daeda935e5be5f9519d265c46faba75e87f42b (patch)
treefd3385c47684da06f923fde0685aa7e801716fde /bgpd/bgp_route.c
parent3acfcef7789a0e19549349bc44b349f7add7b1cf (diff)
parent663281ca6a6b71cda391e3f64db8d51bfbac1a2f (diff)
Merge pull request #17716 from ykholod/master-17463
bgpd: Clean address-family config on daemon restart
Diffstat (limited to 'bgpd/bgp_route.c')
-rw-r--r--bgpd/bgp_route.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 7645c67734..0f899d9617 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -15777,6 +15777,28 @@ static int bgp_distance_unset(struct vty *vty, const char *distance_str,
return CMD_SUCCESS;
}
+void bgp_address_family_distance_delete(void)
+{
+ afi_t afi = AFI_UNSPEC;
+ safi_t safi = SAFI_UNSPEC;
+ struct bgp_dest *dest = NULL;
+ struct bgp_distance *bdistance = NULL;
+
+ FOREACH_AFI_SAFI (afi, safi) {
+ for (dest = bgp_table_top(bgp_distance_table[afi][safi]); dest;
+ dest = bgp_route_next(dest)) {
+ if (!bgp_dest_has_bgp_path_info_data(dest))
+ continue;
+ bdistance = bgp_dest_get_bgp_distance_info(dest);
+ XFREE(MTYPE_AS_LIST, bdistance->access_list);
+ bgp_distance_free(bdistance);
+
+ bgp_dest_set_bgp_distance_info(dest, NULL);
+ bgp_dest_unlock_node(dest);
+ }
+ }
+}
+
/* Apply BGP information to distance method. */
uint8_t bgp_distance_apply(const struct prefix *p, struct bgp_path_info *pinfo,
afi_t afi, safi_t safi, struct bgp *bgp)