if (rmap) {
if (!peer->default_rmap[afi][safi].name
|| strcmp(rmap, peer->default_rmap[afi][safi].name) != 0) {
- if (peer->default_rmap[afi][safi].name)
+ struct route_map *map = NULL;
+
+ if (peer->default_rmap[afi][safi].name) {
+ map = route_map_lookup_by_name(
+ peer->default_rmap[afi][safi].name);
XFREE(MTYPE_ROUTE_MAP_NAME,
peer->default_rmap[afi][safi].name);
+ }
/*
* When there is a change in route-map policy,
UNSET_FLAG(subgrp->sflags,
SUBGRP_STATUS_DEFAULT_ORIGINATE);
- route_map_counter_decrement(peer->default_rmap[afi][safi].map);
+ route_map_counter_decrement(map);
peer->default_rmap[afi][safi].name =
XSTRDUP(MTYPE_ROUTE_MAP_NAME, rmap);
peer->default_rmap[afi][safi].map = route_map;
route_map_counter_increment(route_map);
}
} else if (!rmap) {
- if (peer->default_rmap[afi][safi].name)
+ struct route_map *map = NULL;
+
+ if (peer->default_rmap[afi][safi].name) {
+ map = route_map_lookup_by_name(
+ peer->default_rmap[afi][safi].name);
XFREE(MTYPE_ROUTE_MAP_NAME,
peer->default_rmap[afi][safi].name);
+ }
/*
* This is triggered in case of route-map deletion.
UNSET_FLAG(subgrp->sflags,
SUBGRP_STATUS_DEFAULT_ORIGINATE);
- route_map_counter_decrement(peer->default_rmap[afi][safi].map);
+ route_map_counter_decrement(map);
peer->default_rmap[afi][safi].name = NULL;
peer->default_rmap[afi][safi].map = NULL;
}
SET_FLAG(member->af_flags[afi][safi],
PEER_FLAG_DEFAULT_ORIGINATE);
if (rmap) {
- if (member->default_rmap[afi][safi].name)
+ struct route_map *map = NULL;
+
+ if (member->default_rmap[afi][safi].name) {
+ map = route_map_lookup_by_name(
+ member->default_rmap[afi][safi].name);
XFREE(MTYPE_ROUTE_MAP_NAME,
member->default_rmap[afi][safi].name);
- route_map_counter_decrement(
- member->default_rmap[afi][safi].map);
+ }
+
+ route_map_counter_decrement(map);
member->default_rmap[afi][safi].name =
XSTRDUP(MTYPE_ROUTE_MAP_NAME, rmap);
member->default_rmap[afi][safi].map = route_map;
PEER_ATTR_INHERIT(peer, peer->group,
default_rmap[afi][safi].map);
} else {
+ struct route_map *map = NULL;
+
/* Otherwise remove flag and configuration from peer. */
peer_af_flag_unset(peer, afi, safi,
PEER_FLAG_DEFAULT_ORIGINATE);
- if (peer->default_rmap[afi][safi].name)
+ if (peer->default_rmap[afi][safi].name) {
+ map = route_map_lookup_by_name(
+ peer->default_rmap[afi][safi].name);
XFREE(MTYPE_ROUTE_MAP_NAME,
peer->default_rmap[afi][safi].name);
- route_map_counter_decrement(peer->default_rmap[afi][safi].map);
+ }
+ route_map_counter_decrement(map);
peer->default_rmap[afi][safi].name = NULL;
peer->default_rmap[afi][safi].map = NULL;
}
* they are explicitly overriding peer-group configuration.
*/
for (ALL_LIST_ELEMENTS(peer->group->peer, node, nnode, member)) {
+ struct route_map *map;
+
+ map = NULL;
+
/* Skip peers with overridden configuration. */
if (CHECK_FLAG(member->af_flags_override[afi][safi],
PEER_FLAG_DEFAULT_ORIGINATE))
/* Remove flag and configuration on peer-group member. */
UNSET_FLAG(member->af_flags[afi][safi],
PEER_FLAG_DEFAULT_ORIGINATE);
- if (member->default_rmap[afi][safi].name)
+ if (member->default_rmap[afi][safi].name) {
+ map = route_map_lookup_by_name(
+ member->default_rmap[afi][safi].name);
XFREE(MTYPE_ROUTE_MAP_NAME,
member->default_rmap[afi][safi].name);
- route_map_counter_decrement(member->default_rmap[afi][safi].map);
+ }
+ route_map_counter_decrement(map);
member->default_rmap[afi][safi].name = NULL;
member->default_rmap[afi][safi].map = NULL;
struct peer *member;
struct bgp_filter *filter;
struct listnode *node, *nnode;
+ struct route_map *map = NULL;
if (direct != RMAP_IN && direct != RMAP_OUT)
return BGP_ERR_INVALID_VALUE;
if (strcmp(filter->map[direct].name, name) == 0)
return 0;
+ map = route_map_lookup_by_name(filter->map[direct].name);
XFREE(MTYPE_BGP_FILTER_NAME, filter->map[direct].name);
}
- route_map_counter_decrement(filter->map[direct].map);
+ route_map_counter_decrement(map);
filter->map[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, name);
filter->map[direct].map = route_map;
route_map_counter_increment(route_map);
* explicitly overriding peer-group configuration.
*/
for (ALL_LIST_ELEMENTS(peer->group->peer, node, nnode, member)) {
+ map = NULL;
/* Skip peers with overridden configuration. */
if (CHECK_FLAG(member->filter_override[afi][safi][direct],
PEER_FT_ROUTE_MAP))
/* Set configuration on peer-group member. */
filter = &member->filter[afi][safi];
- if (filter->map[direct].name)
+ if (filter->map[direct].name) {
+ map = route_map_lookup_by_name(filter->map[direct].name);
XFREE(MTYPE_BGP_FILTER_NAME, filter->map[direct].name);
- route_map_counter_decrement(filter->map[direct].map);
+ }
+ route_map_counter_decrement(map);
filter->map[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, name);
filter->map[direct].map = route_map;
route_map_counter_increment(route_map);
PEER_ATTR_INHERIT(peer, peer->group,
filter[afi][safi].map[direct].map);
} else {
+ struct route_map *map = NULL;
+
/* Otherwise remove configuration from peer. */
filter = &peer->filter[afi][safi];
- if (filter->map[direct].name)
+
+ if (filter->map[direct].name) {
+ map = route_map_lookup_by_name(filter->map[direct].name);
XFREE(MTYPE_BGP_FILTER_NAME, filter->map[direct].name);
- route_map_counter_decrement(filter->map[direct].map);
+ }
+ route_map_counter_decrement(map);
filter->map[direct].name = NULL;
filter->map[direct].map = NULL;
}
* explicitly overriding peer-group configuration.
*/
for (ALL_LIST_ELEMENTS(peer->group->peer, node, nnode, member)) {
+ struct route_map *map;
+
+ map = NULL;
+
/* Skip peers with overridden configuration. */
if (CHECK_FLAG(member->filter_override[afi][safi][direct],
PEER_FT_ROUTE_MAP))
/* Remove configuration on peer-group member. */
filter = &member->filter[afi][safi];
- if (filter->map[direct].name)
+ if (filter->map[direct].name) {
+ map = route_map_lookup_by_name(filter->map[direct].name);
XFREE(MTYPE_BGP_FILTER_NAME, filter->map[direct].name);
- route_map_counter_decrement(filter->map[direct].map);
+ }
+ route_map_counter_decrement(map);
filter->map[direct].name = NULL;
filter->map[direct].map = NULL;
* explicitly overriding peer-group configuration.
*/
for (ALL_LIST_ELEMENTS(peer->group->peer, node, nnode, member)) {
+ struct route_map *map;
+
+ map = NULL;
+
/* Skip peers with overridden configuration. */
if (CHECK_FLAG(member->filter_override[afi][safi][0],
PEER_FT_UNSUPPRESS_MAP))
/* Set configuration on peer-group member. */
filter = &member->filter[afi][safi];
- if (filter->usmap.name)
+ if (filter->usmap.name) {
+ map = route_map_lookup_by_name(filter->usmap.name);
XFREE(MTYPE_BGP_FILTER_NAME, filter->usmap.name);
- route_map_counter_decrement(filter->usmap.map);
+ }
+ route_map_counter_decrement(map);
filter->usmap.name = XSTRDUP(MTYPE_BGP_FILTER_NAME, name);
filter->usmap.map = route_map;
route_map_counter_increment(route_map);
PEER_ATTR_INHERIT(peer, peer->group,
filter[afi][safi].usmap.map);
} else {
+ struct route_map *map = NULL;
+
/* Otherwise remove configuration from peer. */
filter = &peer->filter[afi][safi];
- if (filter->usmap.name)
+ if (filter->usmap.name) {
+ map = route_map_lookup_by_name(filter->usmap.name);
XFREE(MTYPE_BGP_FILTER_NAME, filter->usmap.name);
- route_map_counter_decrement(filter->usmap.map);
+ }
+ route_map_counter_decrement(map);
filter->usmap.name = NULL;
filter->usmap.map = NULL;
}
* explicitly overriding peer-group configuration.
*/
for (ALL_LIST_ELEMENTS(peer->group->peer, node, nnode, member)) {
+ struct route_map *map;
+
+ map = NULL;
+
/* Skip peers with overridden configuration. */
if (CHECK_FLAG(member->filter_override[afi][safi][0],
PEER_FT_UNSUPPRESS_MAP))
/* Remove configuration on peer-group member. */
filter = &member->filter[afi][safi];
- if (filter->usmap.name)
+ if (filter->usmap.name) {
+ map = route_map_lookup_by_name(filter->usmap.name);
XFREE(MTYPE_BGP_FILTER_NAME, filter->usmap.name);
- route_map_counter_decrement(filter->usmap.map);
+ }
+ route_map_counter_decrement(map);
filter->usmap.name = NULL;
filter->usmap.map = NULL;