diff --git a/isisd/isis_csm.c b/isisd/isis_csm.c
index b205790..8f44db1 100644
--- a/isisd/isis_csm.c
+++ b/isisd/isis_csm.c
@@ -52,8 +52,7 @@
 
 extern struct isis *isis;
 
-static char *csm_statestr[] = 
-{
+static char *csm_statestr[] = {
   "C_STATE_NA",
   "C_STATE_INIT",
   "C_STATE_CONF",
@@ -62,8 +61,7 @@
 
 #define STATE2STR(S) csm_statestr[S]
 
-static char *csm_eventstr[] =
-{
+static char *csm_eventstr[] = {
   "NO_STATE",
   "ISIS_ENABLE",
   "IF_UP_FROM_Z",
@@ -73,113 +71,113 @@
 
 #define EVENT2STR(E) csm_eventstr[E]
 
-
-struct isis_circuit*
-isis_csm_state_change (int event, struct isis_circuit *circuit, 
-                       void *arg)
+struct isis_circuit *
+isis_csm_state_change (int event, struct isis_circuit *circuit, void *arg)
 {
   int old_state;
 
   old_state = circuit ? circuit->state : C_STATE_NA;
-  
-  zlog_info ("CSM_EVENT: %s", EVENT2STR(event));
-  
-  switch (old_state) {
-  case C_STATE_NA:
-    if (circuit)
-      zlog_warn ("Non-null circuit while state C_STATE_NA");
-    switch (event) {
-    case ISIS_ENABLE:
-      circuit = isis_circuit_new ();
-      isis_circuit_configure (circuit, (struct isis_area *)arg);
-      circuit->state = C_STATE_CONF;
+
+  zlog_info ("CSM_EVENT: %s", EVENT2STR (event));
+
+  switch (old_state)
+    {
+    case C_STATE_NA:
+      if (circuit)
+	zlog_warn ("Non-null circuit while state C_STATE_NA");
+      switch (event)
+	{
+	case ISIS_ENABLE:
+	  circuit = isis_circuit_new ();
+	  isis_circuit_configure (circuit, (struct isis_area *) arg);
+	  circuit->state = C_STATE_CONF;
+	  break;
+	case IF_UP_FROM_Z:
+	  circuit = isis_circuit_new ();
+	  isis_circuit_if_add (circuit, (struct interface *) arg);
+	  listnode_add (isis->init_circ_list, circuit);
+	  circuit->state = C_STATE_INIT;
+	  break;
+	case ISIS_DISABLE:
+	  zlog_warn ("circuit already disabled");
+	case IF_DOWN_FROM_Z:
+	  zlog_warn ("circuit already disconnected");
+	  break;
+	}
       break;
-    case IF_UP_FROM_Z:
-      circuit = isis_circuit_new ();
-      isis_circuit_if_add (circuit, (struct interface *)arg);
-      listnode_add (isis->init_circ_list, circuit);
-      circuit->state = C_STATE_INIT;
+    case C_STATE_INIT:
+      switch (event)
+	{
+	case ISIS_ENABLE:
+	  isis_circuit_configure (circuit, (struct isis_area *) arg);
+	  isis_circuit_up (circuit);
+	  circuit->state = C_STATE_UP;
+	  isis_event_circuit_state_change (circuit, 1);
+	  listnode_delete (isis->init_circ_list, circuit);
+	  break;
+	case IF_UP_FROM_Z:
+	  zlog_warn ("circuit already connected");
+	  break;
+	case ISIS_DISABLE:
+	  zlog_warn ("circuit already disabled");
+	  break;
+	case IF_DOWN_FROM_Z:
+	  isis_circuit_if_del (circuit);
+	  listnode_delete (isis->init_circ_list, circuit);
+	  isis_circuit_del (circuit);
+	  break;
+	}
       break;
-    case ISIS_DISABLE:
-      zlog_warn ("circuit already disabled");
-    case IF_DOWN_FROM_Z:
-      zlog_warn ("circuit already disconnected");
+    case C_STATE_CONF:
+      switch (event)
+	{
+	case ISIS_ENABLE:
+	  zlog_warn ("circuit already enabled");
+	  break;
+	case IF_UP_FROM_Z:
+	  isis_circuit_if_add (circuit, (struct interface *) arg);
+	  isis_circuit_up (circuit);
+	  circuit->state = C_STATE_UP;
+	  isis_event_circuit_state_change (circuit, 1);
+	  break;
+	case ISIS_DISABLE:
+	  isis_circuit_deconfigure (circuit, (struct isis_area *) arg);
+	  isis_circuit_del (circuit);
+	  break;
+	case IF_DOWN_FROM_Z:
+	  zlog_warn ("circuit already disconnected");
+	  break;
+	}
       break;
+    case C_STATE_UP:
+      switch (event)
+	{
+	case ISIS_ENABLE:
+	  zlog_warn ("circuit already configured");
+	  break;
+	case IF_UP_FROM_Z:
+	  zlog_warn ("circuit already connected");
+	  break;
+	case ISIS_DISABLE:
+	  isis_circuit_deconfigure (circuit, (struct isis_area *) arg);
+	  listnode_add (isis->init_circ_list, circuit);
+	  circuit->state = C_STATE_INIT;
+	  isis_event_circuit_state_change (circuit, 0);
+	  break;
+	case IF_DOWN_FROM_Z:
+	  isis_circuit_if_del (circuit);
+	  circuit->state = C_STATE_CONF;
+	  isis_event_circuit_state_change (circuit, 0);
+	  break;
+	}
+      break;
+
+    default:
+      zlog_warn ("Invalid circuit state %d", old_state);
     }
-    break;
-  case C_STATE_INIT:
-    switch (event) {
-    case ISIS_ENABLE:
-      isis_circuit_configure (circuit, (struct isis_area *)arg);
-      isis_circuit_up (circuit);
-      circuit->state = C_STATE_UP;
-      isis_event_circuit_state_change (circuit, 1);
-      listnode_delete (isis->init_circ_list, circuit);
-      break;
-    case IF_UP_FROM_Z:
-      zlog_warn ("circuit already connected");
-      break;
-    case ISIS_DISABLE:
-      zlog_warn ("circuit already disabled");
-      break;
-    case IF_DOWN_FROM_Z:
-      isis_circuit_if_del (circuit);
-      listnode_delete (isis->init_circ_list, circuit);
-      isis_circuit_del (circuit);
-      break;
-    }
-    break;
-  case C_STATE_CONF:
-    switch (event) {
-    case ISIS_ENABLE:
-      zlog_warn ("circuit already enabled");
-      break;
-    case IF_UP_FROM_Z:
-      isis_circuit_if_add (circuit, (struct interface *)arg);
-      isis_circuit_up (circuit);
-      circuit->state = C_STATE_UP;
-      isis_event_circuit_state_change (circuit, 1);
-      break;
-    case ISIS_DISABLE:
-      isis_circuit_deconfigure (circuit, (struct isis_area *)arg);
-      isis_circuit_del (circuit);
-      break;
-    case IF_DOWN_FROM_Z:
-      zlog_warn ("circuit already disconnected");
-      break;
-    }
-    break;
-  case C_STATE_UP:
-    switch (event) {
-    case ISIS_ENABLE:
-      zlog_warn ("circuit already configured");
-      break;
-    case IF_UP_FROM_Z:
-      zlog_warn ("circuit already connected");
-      break;
-    case ISIS_DISABLE:
-      isis_circuit_deconfigure (circuit, (struct isis_area *)arg);
-      listnode_add (isis->init_circ_list, circuit);
-      circuit->state = C_STATE_INIT;
-      isis_event_circuit_state_change (circuit, 0);
-      break;
-    case IF_DOWN_FROM_Z:
-      isis_circuit_if_del (circuit);
-      circuit->state = C_STATE_CONF;
-      isis_event_circuit_state_change (circuit, 0);
-      break;
-    }
-    break;
-    
-  default:
-    zlog_warn ("Invalid circuit state %d", old_state);
-  }
-  
-  zlog_info ("CSM_STATE_CHANGE: %s -> %s ", STATE2STR (old_state), 
-             circuit ? STATE2STR (circuit->state) : STATE2STR (C_STATE_NA));
+
+  zlog_info ("CSM_STATE_CHANGE: %s -> %s ", STATE2STR (old_state),
+	     circuit ? STATE2STR (circuit->state) : STATE2STR (C_STATE_NA));
 
   return circuit;
 }
-
-
-
