]> git.puffer.fish Git - matthieu/frr.git/commitdiff
BGP: changing remote-as from external to external resets connection
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 11 Nov 2015 16:52:51 +0000 (08:52 -0800)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 11 Nov 2015 16:52:51 +0000 (08:52 -0800)
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>
bgpd/bgpd.c

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