summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_conditional_adv.c15
-rw-r--r--bgpd/bgp_route.c1
2 files changed, 9 insertions, 7 deletions
diff --git a/bgpd/bgp_conditional_adv.c b/bgpd/bgp_conditional_adv.c
index 329bd3d696..82eb8a815e 100644
--- a/bgpd/bgp_conditional_adv.c
+++ b/bgpd/bgp_conditional_adv.c
@@ -49,9 +49,9 @@ bgp_check_rmap_prefixes_in_bgp_table(struct bgp_table *table,
RESET_FLAG(dummy_attr.rmap_change_flags);
ret = route_map_apply(rmap, dest_p, &path);
- if (ret != RMAP_PERMITMATCH)
- bgp_attr_flush(&dummy_attr);
- else {
+ bgp_attr_flush(&dummy_attr);
+
+ if (ret == RMAP_PERMITMATCH) {
bgp_dest_unlock_node(dest);
if (BGP_DEBUG(update, UPDATE_OUT))
zlog_debug(
@@ -84,6 +84,7 @@ static void bgp_conditional_adv_routes(struct peer *peer, afi_t afi,
struct update_subgroup *subgrp;
struct attr dummy_attr = {0}, attr = {0};
struct bgp_path_info_extra path_extra = {0};
+ route_map_result_t ret;
paf = peer_af_find(peer, afi, safi);
if (!paf)
@@ -114,11 +115,11 @@ static void bgp_conditional_adv_routes(struct peer *peer, afi_t afi,
RESET_FLAG(dummy_attr.rmap_change_flags);
- if (route_map_apply(rmap, dest_p, &path)
- != RMAP_PERMITMATCH) {
- bgp_attr_flush(&dummy_attr);
+ ret = route_map_apply(rmap, dest_p, &path);
+ bgp_attr_flush(&dummy_attr);
+
+ if (ret != RMAP_PERMITMATCH)
continue;
- }
if (CHECK_FLAG(pi->flags, BGP_PATH_SELECTED)
|| (addpath_capable
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index bc8ce6b4f4..5a16fecc26 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -10806,6 +10806,7 @@ static int bgp_show_table(struct vty *vty, struct bgp *bgp, safi_t safi,
path.attr = &dummy_attr;
ret = route_map_apply(rmap, dest_p, &path);
+ bgp_attr_flush(&dummy_attr);
if (ret == RMAP_DENYMATCH)
continue;
}