From 66de9680209447cf46b888f99c6c1fde2e717766 Mon Sep 17 00:00:00 2001 From: zyxwvu Shi Date: Tue, 5 Jan 2021 06:15:07 +0000 Subject: [PATCH] bgpd: Fix default-originate clearing from peer-groups. Fix `peer_default_originate_unset` so default route can be withdrawn when `default-originate` option is being unset from a peer-group. The loop calling `bgp_default_originate` is clearing default-originate from the peer-group peer `peer` instead of the peer-group member peer `member`. Signed-off-by: zyxwvu Shi --- bgpd/bgpd.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index b6afa391f3..a13746176a 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -5032,20 +5032,20 @@ int peer_default_originate_unset(struct peer *peer, afi_t afi, safi_t safi) continue; /* Remove flag and configuration on peer-group member. */ - UNSET_FLAG(peer->af_flags[afi][safi], + UNSET_FLAG(member->af_flags[afi][safi], PEER_FLAG_DEFAULT_ORIGINATE); - if (peer->default_rmap[afi][safi].name) + if (member->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); - peer->default_rmap[afi][safi].name = NULL; - peer->default_rmap[afi][safi].map = NULL; + member->default_rmap[afi][safi].name); + route_map_counter_decrement(member->default_rmap[afi][safi].map); + member->default_rmap[afi][safi].name = NULL; + member->default_rmap[afi][safi].map = NULL; /* Update peer route announcements. */ - if (peer->status == Established && peer->afc_nego[afi][safi]) { - update_group_adjust_peer(peer_af_find(peer, afi, safi)); - bgp_default_originate(peer, afi, safi, 1); - bgp_announce_route(peer, afi, safi); + if (member->status == Established && member->afc_nego[afi][safi]) { + update_group_adjust_peer(peer_af_find(member, afi, safi)); + bgp_default_originate(member, afi, safi, 1); + bgp_announce_route(member, afi, safi); } } -- 2.39.5