diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c
index 4569589..6121e74 100644
--- a/bgpd/bgp_fsm.c
+++ b/bgpd/bgp_fsm.c
@@ -447,10 +447,10 @@
 
   /* Can't do this in Clearing; events are used for state transitions */
   if (peer->status != Clearing)
-  {
-  /* Delete all existing events of the peer */
-  BGP_EVENT_FLUSH (peer);
-  }
+    {
+      /* Delete all existing events of the peer */
+      BGP_EVENT_FLUSH (peer);
+    }
 
   /* Increment Dropped count. */
   if (peer->status == Established)
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 366ee43..01cabae 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -2145,28 +2145,22 @@
   struct listnode *node, *nnode;
 
   if (bgp != NULL)
-  {
-    for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
     {
-      if (sockunion_same (&peer->su, su)
-	  && ! CHECK_FLAG (peer->sflags, PEER_STATUS_ACCEPT_PEER))
-	return peer;
+      for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
+        if (sockunion_same (&peer->su, su)
+            && ! CHECK_FLAG (peer->sflags, PEER_STATUS_ACCEPT_PEER))
+          return peer;
     }
-  }
   else if (bm->bgp != NULL)
-  {
-    struct listnode *bgpnode, *nbgpnode;
+    {
+      struct listnode *bgpnode, *nbgpnode;
   
-    for(ALL_LIST_ELEMENTS(bm->bgp, bgpnode, nbgpnode, bgp))
-    {
-  for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
-    {
-      if (sockunion_same (&peer->su, su)
-	  && ! CHECK_FLAG (peer->sflags, PEER_STATUS_ACCEPT_PEER))
-	return peer;
+      for (ALL_LIST_ELEMENTS (bm->bgp, bgpnode, nbgpnode, bgp))
+        for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
+          if (sockunion_same (&peer->su, su)
+              && ! CHECK_FLAG (peer->sflags, PEER_STATUS_ACCEPT_PEER))
+            return peer;
     }
-    }
-  }
   return NULL;
 }
 
@@ -2182,20 +2176,19 @@
   if (! bm->bgp)
     return NULL;
 
-  for(ALL_LIST_ELEMENTS(bm->bgp, bgpnode, nbgpnode, bgp))
-  {
-  for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
-    {
-      if (sockunion_same (&peer->su, su)
-	  && ! CHECK_FLAG (peer->sflags, PEER_STATUS_ACCEPT_PEER))
-	{
-	  if (peer->as == remote_as
-	      && peer->remote_id.s_addr == remote_id->s_addr)
-	    return peer;
-	  if (peer->as == remote_as)
-	    *as = 1;
-	}
-    }
+  for (ALL_LIST_ELEMENTS (bm->bgp, bgpnode, nbgpnode, bgp))
+    for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
+      {
+        if (sockunion_same (&peer->su, su)
+            && ! CHECK_FLAG (peer->sflags, PEER_STATUS_ACCEPT_PEER))
+          {
+            if (peer->as == remote_as
+                && peer->remote_id.s_addr == remote_id->s_addr)
+              return peer;
+            if (peer->as == remote_as)
+              *as = 1;
+          }
+      }
 
   for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
     {
