From: zyxwvu Shi Date: Tue, 5 Jan 2021 06:15:07 +0000 (+0000) Subject: bgpd: Fix default-originate clearing from peer-groups. X-Git-Tag: frr-7.5.1~16^2~10 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=91e1adec9372756383889af00e3376f9c9edb87f;p=matthieu%2Ffrr.git 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 --- diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index deab6e1bfb..561878d01d 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -4883,20 +4883,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); } }