]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Fix default-originate clearing from peer-groups.
authorzyxwvu Shi <shiyuchen.syc@bytedance.com>
Tue, 5 Jan 2021 06:15:07 +0000 (06:15 +0000)
committerzyxwvu Shi <shiyuchen.syc@bytedance.com>
Tue, 5 Jan 2021 07:17:48 +0000 (07:17 +0000)
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 <shiyuchen.syc@bytedance.com>
bgpd/bgpd.c

index b6afa391f34528e8d6ecf0b60d9aba71e2cb4c32..a13746176a3641cca9a057ba3e43e2e5c85bac0b 100644 (file)
@@ -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);
                }
        }