From: Donald Sharp Date: Wed, 11 Nov 2015 16:52:51 +0000 (-0800) Subject: BGP: changing remote-as from external to external resets connection X-Git-Tag: frr-2.0-rc1~1201 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=9da3a1a1917b3260d0a97efea9fac2109cd42bc1;p=mirror%2Ffrr.git BGP: changing remote-as from external to external resets connection Modify code to recognize that we are not actually reseting the neighbor if the user actually enters a remote-as of external->external for a neighbor. Ticket: CM-8100 Reviewed-by: CCR-3783 Testing: See bug Signed-off-by: Donald Sharp --- diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index cc160a52fe..db97810013 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -1616,7 +1616,8 @@ peer_remote_as (struct bgp *bgp, union sockunion *su, const char *conf_if, } /* Existing peer's AS number change. */ - if ((peer->as != *as) || (peer->as_type != as_type)) + if (((peer->as_type == AS_SPECIFIED) && peer->as != *as) || + (peer->as_type != as_type)) peer_as_change (peer, *as, as_type); } else @@ -2305,7 +2306,8 @@ peer_group_remote_as (struct bgp *bgp, const char *group_name, for (ALL_LIST_ELEMENTS (group->peer, node, nnode, peer)) { - if ((peer->as != *as) || (peer->as_type != as_type)) + if (((peer->as_type == AS_SPECIFIED) && peer->as != *as) || + (peer->as_type != as_type)) peer_as_change (peer, *as, as_type); }