Merge bgpd changeset 1176 from Zebra repository by Rivo Nurges.
diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c
index 5c8224c..d28cd93 100644
--- a/bgpd/bgp_fsm.c
+++ b/bgpd/bgp_fsm.c
@@ -307,6 +307,33 @@
   peer->uptime = time (NULL);
 }
 
+/* BGP Peer Down Cause */
+char *peer_down_str[] =
+{
+  "",
+  "Router ID changed",
+  "Remote AS changed",
+  "Local AS change",
+  "Cluster ID changed",
+  "Confederation identifier changed",
+  "Confederation peer changed",
+  "RR client config change",
+  "RS client config change",
+  "Update source change",
+  "Address family activated",
+  "Admin. shutdown",
+  "User reset",
+  "BGP Notification received",
+  "BGP Notification send",
+  "Peer closed the session",
+  "Neighbor deleted",
+  "Peer-group add member",
+  "Peer-group delete member",
+  "Capability changed",
+  "Passive config change",
+  "Multihop config change"
+};
+
 /* Administrative BGP peer stop event. */
 int
 bgp_stop (struct peer *peer)
@@ -325,7 +352,8 @@
 
       /* bgp log-neighbor-changes of neighbor Down */
       if (bgp_flag_check (peer->bgp, BGP_FLAG_LOG_NEIGHBOR_CHANGES))
-	zlog_info ("%%ADJCHANGE: neighbor %s Down", peer->host);
+	zlog_info ("%%ADJCHANGE: neighbor %s Down %s", peer->host,
+                   peer_down_str [(int) peer->last_reset]);
 
       /* set last reset time */
       peer->resettime = time (NULL);