From 0aaa34db89f7f222fe7fa91f899949221ffb60d1 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Thu, 31 Mar 2016 12:41:58 -0400 Subject: [PATCH] bgp: Order neighbor information in show run When displaying the output of a 'show run', display the neighbor information in an ordered manner. Ticket: CM-10184 Signed-off-by: Donald Sharp Reviewed-by: Daniel Walton --- bgpd/bgpd.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index a16cf34a6f..499f72bfd1 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -685,6 +685,26 @@ peer_af_delete (struct peer *peer, afi_t afi, safi_t safi) int peer_cmp (struct peer *p1, struct peer *p2) { + if (p1->group && !p2->group) + return -1; + + if (!p1->group && p2->group) + return 1; + + if (p1->group == p2->group) + { + if (p1->conf_if && !p2->conf_if) + return -1; + + if (!p1->conf_if && p2->conf_if) + return 1; + + if (p1->conf_if && p2->conf_if) + return if_cmp_name_func (p1->conf_if, p2->conf_if); + } + else + return strcmp (p1->group->name, p2->group->name); + return sockunion_cmp (&p1->su, &p2->su); } @@ -2550,7 +2570,11 @@ peer_group_bind (struct bgp *bgp, union sockunion *su, struct peer *peer, } else { + struct listnode *pn; + pn = listnode_lookup (bgp->peer, peer); + list_delete_node (bgp->peer, pn); peer->group = group; + listnode_add_sort (bgp->peer, peer); peer = peer_lock (peer); /* group->peer list reference */ listnode_add (group->peer, peer); -- 2.39.5