summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2015-11-11 08:52:51 -0800
committerDonald Sharp <sharpd@cumulusnetworks.com>2015-11-11 08:52:51 -0800
commit9da3a1a1917b3260d0a97efea9fac2109cd42bc1 (patch)
treef7f881d69d98db0ee9ee89bdccee2f54c8a62ac9
parent219178b6ba7efa520e4d19971f0021ff23ce0742 (diff)
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 <sharpd@cumulusnetworks.com>
-rw-r--r--bgpd/bgpd.c6
1 files changed, 4 insertions, 2 deletions
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);
}