diff --git a/openair2/ENB_APP/enb_app.c b/openair2/ENB_APP/enb_app.c
index a398edaa0d0bc1aa9d169a67d7c3137ef4e36484..83e7feb11ef0974c99c87807c5fab9a64038262e 100644
--- a/openair2/ENB_APP/enb_app.c
+++ b/openair2/ENB_APP/enb_app.c
@@ -1,32 +1,32 @@
 /*******************************************************************************
 
-  Eurecom OpenAirInterface
-  Copyright(c) 1999 - 2012 Eurecom
+ Eurecom OpenAirInterface
+ Copyright(c) 1999 - 2012 Eurecom
 
-  This program is free software; you can redistribute it and/or modify it
-  under the terms and conditions of the GNU General Public License,
-  version 2, as published by the Free Software Foundation.
+ This program is free software; you can redistribute it and/or modify it
+ under the terms and conditions of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
 
-  This program is distributed in the hope it will be useful, but WITHOUT
-  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-  more details.
+ This program is distributed in the hope it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ more details.
 
-  You should have received a copy of the GNU General Public License along with
-  this program; if not, write to the Free Software Foundation, Inc.,
-  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+ You should have received a copy of the GNU General Public License along with
+ this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
 
-  The full GNU General Public License is included in this distribution in
-  the file called "COPYING".
+ The full GNU General Public License is included in this distribution in
+ the file called "COPYING".
 
-  Contact Information
-  Openair Admin: openair_admin@eurecom.fr
-  Openair Tech : openair_tech@eurecom.fr
-  Forums       : http://forums.eurecom.fr/openairinterface
-  Address      : EURECOM, Campus SophiaTech, 450 Route des Chappes
-                 06410 Biot FRANCE
+ Contact Information
+ Openair Admin: openair_admin@eurecom.fr
+ Openair Tech : openair_tech@eurecom.fr
+ Forums       : http://forums.eurecom.fr/openairinterface
+ Address      : EURECOM, Campus SophiaTech, 450 Route des Chappes
+ 06410 Biot FRANCE
 
-*******************************************************************************/
+ *******************************************************************************/
 
 #include <string.h>
 
@@ -51,159 +51,194 @@
 #if defined(ENABLE_ITTI)
 # if defined(ENABLE_USE_MME)
 
+/*------------------------------------------------------------------------------*/
 #define ENB_REGISTER_RETRY_DELAY 10
 
+/*------------------------------------------------------------------------------*/
+static uint32_t enb_nb = 1;
+
+/*------------------------------------------------------------------------------*/
 static uint32_t eNB_app_register()
 {
-  uint32_t eNB_id;
-  MessageDef *msg_p;
-  uint32_t register_enb_pending = 0;
-
-  for (eNB_id = oai_emulation.info.first_enb_local;
-     (eNB_id < (oai_emulation.info.first_enb_local + oai_emulation.info.nb_enb_local)) && (oai_emulation.info.cli_start_enb[eNB_id] == 1);
-     eNB_id++) {
-    char *mme_address_v4;
-
-    if (EPC_MODE_ENABLED){
-      mme_address_v4 = EPC_MODE_MME_ADDRESS;
-    } else {
-      mme_address_v4 = "192.168.12.87";
-    }
-    char *mme_address_v6 = "2001:660:5502:12:30da:829a:2343:b6cf";
-    s1ap_register_enb_req_t *s1ap_register_eNB;
-    uint32_t hash;
+    uint32_t eNB_id_start = 0;
+    uint32_t eNB_id_end = 1;
+    uint32_t eNB_id;
+    MessageDef *msg_p;
+    uint32_t register_enb_pending = 0;
+
+#   if defined(OAI_EMU)
+    eNB_id_start = oai_emulation.info.first_enb_local;
+    eNB_id_end = oai_emulation.info.first_enb_local + oai_emulation.info.nb_enb_local;
+#   endif
 
-    //note:  there is an implicit relationship between the data struct and the message name
-    msg_p = itti_alloc_new_message(TASK_ENB_APP, S1AP_REGISTER_ENB_REQ);
+    for (eNB_id = eNB_id_start; (eNB_id < eNB_id_end)
+#   if defined(OAI_EMU)
+            && (oai_emulation.info.cli_start_enb[eNB_id] == 1)
+#   endif
+            ; eNB_id++)
+    {
+        char *mme_address_v4;
 
-    s1ap_register_eNB = &S1AP_REGISTER_ENB_REQ(msg_p);
+        if (EPC_MODE_ENABLED)
+        {
+            mme_address_v4 = EPC_MODE_MME_ADDRESS;
+        }
+        else
+        {
+            mme_address_v4 = "192.168.12.87";
+        }
+        char *mme_address_v6 = "2001:660:5502:12:30da:829a:2343:b6cf";
+        s1ap_register_enb_req_t *s1ap_register_eNB;
+        uint32_t hash;
 
-    hash = s1ap_generate_eNB_id();
+        //note:  there is an implicit relationship between the data struct and the message name
+        msg_p = itti_alloc_new_message (TASK_ENB_APP, S1AP_REGISTER_ENB_REQ);
 
-    /* Some default/random parameters */
-    s1ap_register_eNB->eNB_id      = eNB_id + (hash & 0xFFFF8);
-    s1ap_register_eNB->cell_type   = CELL_MACRO_ENB;
-    s1ap_register_eNB->tac         = 0;
-    s1ap_register_eNB->mcc         = 208;
-    s1ap_register_eNB->mnc         = 34;
-    s1ap_register_eNB->default_drx = PAGING_DRX_256;
+        s1ap_register_eNB = &S1AP_REGISTER_ENB_REQ(msg_p);
 
-    s1ap_register_eNB->nb_mme      = 1;
-    s1ap_register_eNB->mme_ip_address[0].ipv4 = 1;
-    s1ap_register_eNB->mme_ip_address[0].ipv6 = 0;
-    memcpy(s1ap_register_eNB->mme_ip_address[0].ipv4_address, mme_address_v4, strlen(mme_address_v4));
-    memcpy(s1ap_register_eNB->mme_ip_address[0].ipv6_address, mme_address_v6, strlen(mme_address_v6));
+        hash = s1ap_generate_eNB_id ();
+
+        /* Some default/random parameters */
+        s1ap_register_eNB->eNB_id = eNB_id + (hash & 0xFFFF8);
+        s1ap_register_eNB->cell_type = CELL_MACRO_ENB;
+        s1ap_register_eNB->tac = 0;
+        s1ap_register_eNB->mcc = 208;
+        s1ap_register_eNB->mnc = 34;
+        s1ap_register_eNB->default_drx = PAGING_DRX_256;
+
+        s1ap_register_eNB->nb_mme = 1;
+        s1ap_register_eNB->mme_ip_address[0].ipv4 = 1;
+        s1ap_register_eNB->mme_ip_address[0].ipv6 = 0;
+        memcpy (s1ap_register_eNB->mme_ip_address[0].ipv4_address, mme_address_v4, strlen (mme_address_v4));
+        memcpy (s1ap_register_eNB->mme_ip_address[0].ipv6_address, mme_address_v6, strlen (mme_address_v6));
 
 #   if defined ENB_APP_ENB_REGISTER_2_MME
-    s1ap_register_eNB->nb_mme      = 2;
-    s1ap_register_eNB->mme_ip_address[1].ipv4 = 1;
-    s1ap_register_eNB->mme_ip_address[1].ipv6 = 0;
-    mme_address_v4 = "192.168.12.88";
-    memcpy(s1ap_register_eNB->mme_ip_address[1].ipv4_address, mme_address_v4, strlen(mme_address_v4));
-    memcpy(s1ap_register_eNB->mme_ip_address[1].ipv6_address, mme_address_v6, strlen(mme_address_v6));
+        s1ap_register_eNB->nb_mme = 2;
+        s1ap_register_eNB->mme_ip_address[1].ipv4 = 1;
+        s1ap_register_eNB->mme_ip_address[1].ipv6 = 0;
+        mme_address_v4 = "192.168.12.88";
+        memcpy(s1ap_register_eNB->mme_ip_address[1].ipv4_address, mme_address_v4, strlen(mme_address_v4));
+        memcpy(s1ap_register_eNB->mme_ip_address[1].ipv6_address, mme_address_v6, strlen(mme_address_v6));
 #   endif
 
-    itti_send_msg_to_task(TASK_S1AP, eNB_id, msg_p);
+        itti_send_msg_to_task (TASK_S1AP, eNB_id, msg_p);
 
-    register_enb_pending ++;
-  }
+        register_enb_pending++;
+    }
 
-  return register_enb_pending;
+    return register_enb_pending;
 }
 # endif
 #endif
 
-void *eNB_app_task(void *args_p) {
+/*------------------------------------------------------------------------------*/
+void *eNB_app_task(void *args_p)
+{
 #if defined(ENABLE_ITTI)
 # if defined(ENABLE_USE_MME)
-  static uint32_t register_enb_pending;
-  static uint32_t registered_enb;
-  static long enb_register_retry_timer_id;
+    static uint32_t register_enb_pending;
+    static uint32_t registered_enb;
+    static long enb_register_retry_timer_id;
+# endif
+    MessageDef *msg_p;
+    const char *msg_name;
+    instance_t instance;
+    itti_mark_task_ready (TASK_ENB_APP);
+
+# if defined(OAI_EMU)
+    enb_nb = oai_emulation.info.nb_enb_local;
 # endif
-  MessageDef *msg_p;
-  const char *msg_name;
-  instance_t instance;
-  itti_mark_task_ready (TASK_ENB_APP);
 
 # if defined(ENABLE_USE_MME)
-  /* Try to register each eNB */
-  registered_enb = 0;
-  register_enb_pending = eNB_app_register();
+    /* Try to register each eNB */
+    registered_enb = 0;
+    register_enb_pending = eNB_app_register ();
 # else
-  msg_p = itti_alloc_new_message(TASK_ENB_APP, INITIALIZE_MESSAGE);
-  itti_send_msg_to_task(TASK_L2L1, INSTANCE_DEFAULT, msg_p);
+    /* Start L2L1 task */
+    msg_p = itti_alloc_new_message(TASK_ENB_APP, INITIALIZE_MESSAGE);
+    itti_send_msg_to_task(TASK_L2L1, INSTANCE_DEFAULT, msg_p);
 # endif
 
-  do {
-    // Wait for a message
-    itti_receive_msg (TASK_ENB_APP, &msg_p);
+    do
+    {
+        // Wait for a message
+        itti_receive_msg (TASK_ENB_APP, &msg_p);
 
-    msg_name = ITTI_MSG_NAME (msg_p);
-    instance = ITTI_MSG_INSTANCE (msg_p);
+        msg_name = ITTI_MSG_NAME (msg_p);
+        instance = ITTI_MSG_INSTANCE (msg_p);
 
-    switch (ITTI_MSG_ID(msg_p)) {
-      case TERMINATE_MESSAGE:
-        itti_exit_task ();
-        break;
+        switch (ITTI_MSG_ID(msg_p))
+        {
+            case TERMINATE_MESSAGE:
+                itti_exit_task ();
+                break;
 
-      case MESSAGE_TEST:
-        LOG_I(EMU, "Received %s\n", ITTI_MSG_NAME(msg_p));
-        break;
+            case MESSAGE_TEST:
+                LOG_I(EMU, "Received %s\n", ITTI_MSG_NAME(msg_p));
+                break;
 
 # if defined(ENABLE_USE_MME)
-      case S1AP_REGISTER_ENB_CNF:
-        LOG_I(EMU, "[eNB %d] Received %s: associated MME %d\n", instance, msg_name, S1AP_REGISTER_ENB_CNF(msg_p).nb_mme);
-
-        DevAssert(register_enb_pending > 0);
-        register_enb_pending--;
-
-        /* Check if at least eNB is registered with one MME */
-        if (S1AP_REGISTER_ENB_CNF(msg_p).nb_mme > 0) {
-          registered_enb ++;
-        }
-
-        /* Check if all register eNB requests have been processed */
-        if (register_enb_pending == 0) {
-          if (registered_enb == oai_emulation.info.nb_enb_local) {
-            /* If all eNB are registered, start L2L1 task */
-            MessageDef *msg_init_p;
-
-            msg_init_p = itti_alloc_new_message (TASK_ENB_APP, INITIALIZE_MESSAGE);
-            itti_send_msg_to_task (TASK_L2L1, INSTANCE_DEFAULT, msg_init_p);
-          }
-          else {
-            uint32_t not_associated = oai_emulation.info.nb_enb_local - registered_enb;
-
-            LOG_W(EMU, " %d eNB %s not associated with a MME, retrying registration in %d seconds ...\n",
-                  not_associated, not_associated > 1 ? "are" : "is", ENB_REGISTER_RETRY_DELAY);
-
-            /* Restart the eNB registration process in ENB_REGISTER_RETRY_DELAY seconds */
-            if (timer_setup (ENB_REGISTER_RETRY_DELAY, 0, TASK_ENB_APP, INSTANCE_DEFAULT, TIMER_ONE_SHOT, NULL, &enb_register_retry_timer_id) < 0) {
-              LOG_E(EMU, " Can not start eNB register retry timer!\n");
-            }
-          }
-        }
-      break;
-
-      case TIMER_HAS_EXPIRED:
-        LOG_I(EMU, " Received %s: timer_id %d\n", msg_name, TIMER_HAS_EXPIRED(msg_p).timer_id);
-
-        if (TIMER_HAS_EXPIRED(msg_p).timer_id == enb_register_retry_timer_id) {
-          /* Restart the registration process */
-          registered_enb = 0;
-          register_enb_pending = eNB_app_register();
-        }
-        break;
+            case S1AP_REGISTER_ENB_CNF:
+                LOG_I(EMU,
+                      "[eNB %d] Received %s: associated MME %d\n", instance, msg_name, S1AP_REGISTER_ENB_CNF(msg_p).nb_mme);
+
+                DevAssert(register_enb_pending > 0);
+                register_enb_pending--;
+
+                /* Check if at least eNB is registered with one MME */
+                if (S1AP_REGISTER_ENB_CNF(msg_p).nb_mme > 0)
+                {
+                    registered_enb++;
+                }
+
+                /* Check if all register eNB requests have been processed */
+                if (register_enb_pending == 0)
+                {
+                    if (registered_enb == enb_nb)
+                    {
+                        /* If all eNB are registered, start L2L1 task */
+                        MessageDef *msg_init_p;
+
+                        msg_init_p = itti_alloc_new_message (TASK_ENB_APP, INITIALIZE_MESSAGE);
+                        itti_send_msg_to_task (TASK_L2L1, INSTANCE_DEFAULT, msg_init_p);
+                    }
+                    else
+                    {
+                        uint32_t not_associated = enb_nb - registered_enb;
+
+                        LOG_W(EMU, " %d eNB %s not associated with a MME, retrying registration in %d seconds ...\n",
+                              not_associated, not_associated > 1 ? "are" : "is", ENB_REGISTER_RETRY_DELAY);
+
+                        /* Restart the eNB registration process in ENB_REGISTER_RETRY_DELAY seconds */
+                        if (timer_setup (ENB_REGISTER_RETRY_DELAY, 0, TASK_ENB_APP, INSTANCE_DEFAULT, TIMER_ONE_SHOT,
+                                         NULL, &enb_register_retry_timer_id) < 0)
+                        {
+                            LOG_E(EMU, " Can not start eNB register retry timer!\n");
+                        }
+                    }
+                }
+                break;
+
+            case TIMER_HAS_EXPIRED:
+                LOG_I(EMU, " Received %s: timer_id %d\n", msg_name, TIMER_HAS_EXPIRED(msg_p).timer_id);
+
+                if (TIMER_HAS_EXPIRED (msg_p).timer_id == enb_register_retry_timer_id)
+                {
+                    /* Restart the registration process */
+                    registered_enb = 0;
+                    register_enb_pending = eNB_app_register ();
+                }
+                break;
 # endif
 
-      default:
-        LOG_E(EMU, "Received unexpected message %s\n", msg_name);
-        break;
-    }
+            default:
+                LOG_E(EMU, "Received unexpected message %s\n", msg_name);
+                break;
+        }
 
-    free (msg_p);
-  } while(1);
+        free (msg_p);
+    } while (1);
 #endif
 
-  return NULL;
+    return NULL;
 }