From 9c41e88cc336e3d76087834bad5975140451916c Mon Sep 17 00:00:00 2001 From: Daniel Walton Date: Wed, 5 Apr 2017 15:19:00 +0000 Subject: [PATCH] bgpd: removing "allowas-in" for peer-group member still allows AS_PATHS with our ASN Signed-off-by: Daniel Walton Reviewed-by: Don Slice --- bgpd/bgpd.c | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 1733f2956c..36483f0307 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -5013,8 +5013,28 @@ int peer_allowas_in_unset (struct peer *peer, afi_t afi, safi_t safi) { struct peer_group *group; + struct peer *tmp_peer; struct listnode *node, *nnode; + /* If this is a peer-group we must first clear the flags for all of the + * peer-group members + */ + if (CHECK_FLAG (peer->sflags, PEER_STATUS_GROUP)) + { + group = peer->group; + for (ALL_LIST_ELEMENTS (group->peer, node, nnode, tmp_peer)) + { + if (CHECK_FLAG (tmp_peer->af_flags[afi][safi], PEER_FLAG_ALLOWAS_IN) || + CHECK_FLAG (tmp_peer->af_flags[afi][safi], PEER_FLAG_ALLOWAS_IN_ORIGIN)) + { + tmp_peer->allowas_in[afi][safi] = 0; + peer_af_flag_unset (tmp_peer, afi, safi, PEER_FLAG_ALLOWAS_IN); + peer_af_flag_unset (tmp_peer, afi, safi, PEER_FLAG_ALLOWAS_IN_ORIGIN); + peer_on_policy_change (tmp_peer, afi, safi, 0); + } + } + } + if (CHECK_FLAG (peer->af_flags[afi][safi], PEER_FLAG_ALLOWAS_IN) || CHECK_FLAG (peer->af_flags[afi][safi], PEER_FLAG_ALLOWAS_IN_ORIGIN)) { @@ -5024,21 +5044,6 @@ peer_allowas_in_unset (struct peer *peer, afi_t afi, safi_t safi) peer_on_policy_change (peer, afi, safi, 0); } - if (! CHECK_FLAG (peer->sflags, PEER_STATUS_GROUP)) - return 0; - - group = peer->group; - for (ALL_LIST_ELEMENTS (group->peer, node, nnode, peer)) - { - if (CHECK_FLAG (peer->af_flags[afi][safi], PEER_FLAG_ALLOWAS_IN) || - CHECK_FLAG (peer->af_flags[afi][safi], PEER_FLAG_ALLOWAS_IN_ORIGIN)) - { - peer->allowas_in[afi][safi] = 0; - peer_af_flag_unset (peer, afi, safi, PEER_FLAG_ALLOWAS_IN); - peer_af_flag_unset (peer, afi, safi, PEER_FLAG_ALLOWAS_IN_ORIGIN); - peer_on_policy_change (peer, afi, safi, 0); - } - } return 0; } -- 2.39.5