diff --git a/openair2/COMMON/itti_sim_messages_def.h b/openair2/COMMON/itti_sim_messages_def.h
index 13e170684f514e63bbbc8bf2df8b197d93d2a72b..681fc932dd2d6d3b593d8360f140a415e80dd371 100644
--- a/openair2/COMMON/itti_sim_messages_def.h
+++ b/openair2/COMMON/itti_sim_messages_def.h
@@ -1,12 +1,31 @@
-/*!
-\file itti_sim_messages_def.h
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
 
-\brief itti message for itti simulator
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
+/*! \file itti_sim_messages_def.h
+ * \brief itti message for itti simulator
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
 
 
 
diff --git a/openair2/COMMON/itti_sim_messages_types.h b/openair2/COMMON/itti_sim_messages_types.h
index 247c4745420f4892598a68e29a63a7a926b2f4f9..2e29e8f508e1508dd012d9cc88b3a1185c95cafa 100644
--- a/openair2/COMMON/itti_sim_messages_types.h
+++ b/openair2/COMMON/itti_sim_messages_types.h
@@ -1,12 +1,31 @@
-/*!
-\file itti_sim_messages_types.h
-
-\brief itti message for itti simulator
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*! \file itti_sim_messages_types.h
+ * \brief itti message for itti simulator
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
 
 #ifndef ITTI_SIM_MESSAGES_TYPES_H_
 #define ITTI_SIM_MESSAGES_TYPES_H_
diff --git a/openair2/RRC/NR/MESSAGES/asn1_msg.c b/openair2/RRC/NR/MESSAGES/asn1_msg.c
index 826be63056b5a852975e1fb9a7187bba21507d0e..7470721c5b342ce0c6775d9632843756925d8da7 100644
--- a/openair2/RRC/NR/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/NR/MESSAGES/asn1_msg.c
@@ -942,6 +942,11 @@ uint8_t do_NR_RRCConnectionRelease(uint8_t                            *buffer,
                                    (void *)&dl_dcch_msg,
                                    buffer,
                                    RRC_BUF_SIZE);
+  if(enc_rval.encoded == -1) {
+    LOG_I(NR_RRC, "[gNB AssertFatal]ASN1 message encoding failed (%s, %lu)!\n",
+        enc_rval.failed_type->name, enc_rval.encoded);
+    return -1;
+  }
   return((enc_rval.encoded+7)/8);
 }
 
diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c
index 9aa884cf4f311aad8e159344e7b506a653f20ee0..4da2bd43377bf388ac11c0884ca1f60aa7986fee 100644
--- a/openair2/RRC/NR/rrc_gNB.c
+++ b/openair2/RRC/NR/rrc_gNB.c
@@ -339,10 +339,10 @@ rrc_gNB_get_next_transaction_identifier(
 )
 //-----------------------------------------------------------------------------
 {
-    static uint8_t                      nr_rrc_transaction_identifier[NUMBER_OF_gNB_MAX];
-    nr_rrc_transaction_identifier[gnb_mod_idP] = (nr_rrc_transaction_identifier[gnb_mod_idP] + 1) % NR_RRC_TRANSACTION_IDENTIFIER_NUMBER;
-    LOG_T(NR_RRC, "generated xid is %d\n", nr_rrc_transaction_identifier[gnb_mod_idP]);
-    return nr_rrc_transaction_identifier[gnb_mod_idP];
+  static uint8_t                      nr_rrc_transaction_identifier[NUMBER_OF_gNB_MAX];
+  nr_rrc_transaction_identifier[gnb_mod_idP] = (nr_rrc_transaction_identifier[gnb_mod_idP] + 1) % NR_RRC_TRANSACTION_IDENTIFIER_NUMBER;
+  LOG_T(NR_RRC, "generated xid is %d\n", nr_rrc_transaction_identifier[gnb_mod_idP]);
+  return nr_rrc_transaction_identifier[gnb_mod_idP];
 }
 
 //-----------------------------------------------------------------------------
@@ -354,63 +354,63 @@ rrc_gNB_generate_RRCSetup(
 )
 //-----------------------------------------------------------------------------
 {
-    LOG_I(NR_RRC, "rrc_gNB_generate_RRCSetup \n");
-    NR_SRB_ToAddModList_t        *SRB_configList = NULL;
-
-    // T(T_GNB_RRC_SETUP,
-    //   T_INT(ctxt_pP->module_id),
-    //   T_INT(ctxt_pP->frame),
-    //   T_INT(ctxt_pP->subframe),
-    //   T_INT(ctxt_pP->rnti));
-    gNB_RRC_UE_t *ue_p = &ue_context_pP->ue_context;
-    SRB_configList = ue_p->SRB_configList;
-    ue_p->Srb0.Tx_buffer.payload_size = do_RRCSetup(ctxt_pP,
-                ue_context_pP,
-                CC_id,
-                (uint8_t *) ue_p->Srb0.Tx_buffer.Payload,
-                rrc_gNB_get_next_transaction_identifier(ctxt_pP->module_id),
-                SRB_configList);
-
-    LOG_DUMPMSG(NR_RRC, DEBUG_RRC,
-                (char *)(ue_p->Srb0.Tx_buffer.Payload),
-                ue_p->Srb0.Tx_buffer.payload_size,
-                "[MSG] RRC Setup\n");
-
-    LOG_D(NR_RRC,
-            PROTOCOL_NR_RRC_CTXT_UE_FMT" RRC_gNB --- MAC_CONFIG_REQ  (SRB1) ---> MAC_gNB\n",
-            PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
-
-    // rrc_mac_config_req_eNB
-
-    MSC_LOG_TX_MESSAGE(
-        MSC_RRC_GNB,
-        MSC_RRC_UE,
-        ue_p->Srb0.Tx_buffer.Header, // LG WARNING
-        ue_p->Srb0.Tx_buffer.payload_size,
-        MSC_AS_TIME_FMT" RRCSetup UE %x size %u",
-        MSC_AS_TIME_ARGS(ctxt_pP),
-        ue_context_pP->ue_context.rnti,
-        ue_p->Srb0.Tx_buffer.payload_size);
-    LOG_I(NR_RRC,
-        PROTOCOL_NR_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating RRCSetup (bytes %d)\n",
-        PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
-        ue_p->Srb0.Tx_buffer.payload_size);
-    // activate release timer, if RRCSetupComplete not received after 100 frames, remove UE
-    ue_context_pP->ue_context.ue_release_timer = 1;
-    // remove UE after 10 frames after RRCConnectionRelease is triggered
-    ue_context_pP->ue_context.ue_release_timer_thres = 1000;
-    /* init timers */
-    //   ue_context_pP->ue_context.ue_rrc_inactivity_timer = 0;
+  LOG_I(NR_RRC, "rrc_gNB_generate_RRCSetup \n");
+  NR_SRB_ToAddModList_t        *SRB_configList = NULL;
+
+  // T(T_GNB_RRC_SETUP,
+  //   T_INT(ctxt_pP->module_id),
+  //   T_INT(ctxt_pP->frame),
+  //   T_INT(ctxt_pP->subframe),
+  //   T_INT(ctxt_pP->rnti));
+  gNB_RRC_UE_t *ue_p = &ue_context_pP->ue_context;
+  SRB_configList = ue_p->SRB_configList;
+  ue_p->Srb0.Tx_buffer.payload_size = do_RRCSetup(ctxt_pP,
+              ue_context_pP,
+              CC_id,
+              (uint8_t *) ue_p->Srb0.Tx_buffer.Payload,
+              rrc_gNB_get_next_transaction_identifier(ctxt_pP->module_id),
+              SRB_configList);
+
+  LOG_DUMPMSG(NR_RRC, DEBUG_RRC,
+              (char *)(ue_p->Srb0.Tx_buffer.Payload),
+              ue_p->Srb0.Tx_buffer.payload_size,
+              "[MSG] RRC Setup\n");
+
+  LOG_D(NR_RRC,
+      PROTOCOL_NR_RRC_CTXT_UE_FMT" RRC_gNB --- MAC_CONFIG_REQ  (SRB1) ---> MAC_gNB\n",
+      PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
+
+  // rrc_mac_config_req_eNB
+
+  MSC_LOG_TX_MESSAGE(
+      MSC_RRC_GNB,
+      MSC_RRC_UE,
+      ue_p->Srb0.Tx_buffer.Header, // LG WARNING
+      ue_p->Srb0.Tx_buffer.payload_size,
+      MSC_AS_TIME_FMT" RRCSetup UE %x size %u",
+      MSC_AS_TIME_ARGS(ctxt_pP),
+      ue_context_pP->ue_context.rnti,
+      ue_p->Srb0.Tx_buffer.payload_size);
+  LOG_I(NR_RRC,
+      PROTOCOL_NR_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating RRCSetup (bytes %d)\n",
+      PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
+      ue_p->Srb0.Tx_buffer.payload_size);
+  // activate release timer, if RRCSetupComplete not received after 100 frames, remove UE
+  ue_context_pP->ue_context.ue_release_timer = 1;
+  // remove UE after 10 frames after RRCConnectionRelease is triggered
+  ue_context_pP->ue_context.ue_release_timer_thres = 1000;
+  /* init timers */
+  //   ue_context_pP->ue_context.ue_rrc_inactivity_timer = 0;
 #ifdef ITTI_SIM
-    MessageDef *message_p;
-    uint8_t *message_buffer;
-    message_buffer = itti_malloc (TASK_RRC_GNB_SIM, TASK_RRC_UE_SIM,
-              ue_p->Srb0.Tx_buffer.payload_size);
-    memcpy (message_buffer, (uint8_t*)ue_p->Srb0.Tx_buffer.Payload, ue_p->Srb0.Tx_buffer.payload_size);
-    message_p = itti_alloc_new_message (TASK_RRC_GNB_SIM, GNB_RRC_CCCH_DATA_IND);
-    GNB_RRC_CCCH_DATA_IND (message_p).sdu = message_buffer;
-    GNB_RRC_CCCH_DATA_IND (message_p).size  = ue_p->Srb0.Tx_buffer.payload_size;
-    itti_send_msg_to_task (TASK_RRC_UE_SIM, ctxt_pP->instance, message_p);
+  MessageDef *message_p;
+  uint8_t *message_buffer;
+  message_buffer = itti_malloc (TASK_RRC_GNB_SIM, TASK_RRC_UE_SIM,
+            ue_p->Srb0.Tx_buffer.payload_size);
+  memcpy (message_buffer, (uint8_t*)ue_p->Srb0.Tx_buffer.Payload, ue_p->Srb0.Tx_buffer.payload_size);
+  message_p = itti_alloc_new_message (TASK_RRC_GNB_SIM, GNB_RRC_CCCH_DATA_IND);
+  GNB_RRC_CCCH_DATA_IND (message_p).sdu = message_buffer;
+  GNB_RRC_CCCH_DATA_IND (message_p).size  = ue_p->Srb0.Tx_buffer.payload_size;
+  itti_send_msg_to_task (TASK_RRC_UE_SIM, ctxt_pP->instance, message_p);
 #endif
 }
 
@@ -422,37 +422,37 @@ rrc_gNB_generate_RRCReject(
 )
 //-----------------------------------------------------------------------------
 {
-    LOG_I(NR_RRC, "rrc_gNB_generate_RRCReject \n");
-    gNB_RRC_UE_t *ue_p = &ue_context_pP->ue_context;
-    ue_p->Srb0.Tx_buffer.payload_size = do_RRCReject(ctxt_pP->module_id, 
-                                                    (uint8_t *)ue_p->Srb0.Tx_buffer.Payload);
-    LOG_DUMPMSG(NR_RRC, DEBUG_RRC,
-                (char *)(ue_p->Srb0.Tx_buffer.Payload),
-                ue_p->Srb0.Tx_buffer.payload_size,
-                "[MSG] RRCReject \n");
-    MSC_LOG_TX_MESSAGE(MSC_RRC_GNB,
-                      MSC_RRC_UE,
-                      ue_p->Srb0.Tx_buffer.Header,
-                      ue_p->Srb0.Tx_buffer.payload_size,
-                      MSC_AS_TIME_FMT" NR_RRCReject UE %x size %u",
-                      MSC_AS_TIME_ARGS(ctxt_pP),
-                      ue_context_pP == NULL ? -1 : ue_context_pP->ue_context.rnti,
-                      ue_p->Srb0.Tx_buffer.payload_size);
-    LOG_I(NR_RRC,
-          PROTOCOL_NR_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating NR_RRCReject (bytes %d)\n",
-          PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
-          ue_p->Srb0.Tx_buffer.payload_size);
+  LOG_I(NR_RRC, "rrc_gNB_generate_RRCReject \n");
+  gNB_RRC_UE_t *ue_p = &ue_context_pP->ue_context;
+  ue_p->Srb0.Tx_buffer.payload_size = do_RRCReject(ctxt_pP->module_id,
+                                                  (uint8_t *)ue_p->Srb0.Tx_buffer.Payload);
+  LOG_DUMPMSG(NR_RRC, DEBUG_RRC,
+              (char *)(ue_p->Srb0.Tx_buffer.Payload),
+              ue_p->Srb0.Tx_buffer.payload_size,
+              "[MSG] RRCReject \n");
+  MSC_LOG_TX_MESSAGE(MSC_RRC_GNB,
+                    MSC_RRC_UE,
+                    ue_p->Srb0.Tx_buffer.Header,
+                    ue_p->Srb0.Tx_buffer.payload_size,
+                    MSC_AS_TIME_FMT" NR_RRCReject UE %x size %u",
+                    MSC_AS_TIME_ARGS(ctxt_pP),
+                    ue_context_pP == NULL ? -1 : ue_context_pP->ue_context.rnti,
+                    ue_p->Srb0.Tx_buffer.payload_size);
+  LOG_I(NR_RRC,
+      PROTOCOL_NR_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating NR_RRCReject (bytes %d)\n",
+      PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
+      ue_p->Srb0.Tx_buffer.payload_size);
 
 #ifdef ITTI_SIM
-    MessageDef *message_p;
-    uint8_t *message_buffer;
-    message_buffer = itti_malloc (TASK_RRC_GNB_SIM, TASK_RRC_UE_SIM,
-              ue_p->Srb0.Tx_buffer.payload_size);
-    memcpy (message_buffer, (uint8_t*)ue_p->Srb0.Tx_buffer.Payload, ue_p->Srb0.Tx_buffer.payload_size);
-    message_p = itti_alloc_new_message (TASK_RRC_GNB_SIM, GNB_RRC_CCCH_DATA_IND);
-    GNB_RRC_CCCH_DATA_IND (message_p).sdu = message_buffer;
-    GNB_RRC_CCCH_DATA_IND (message_p).size  = ue_p->Srb0.Tx_buffer.payload_size;
-    itti_send_msg_to_task (TASK_RRC_UE_SIM, ctxt_pP->instance, message_p);
+  MessageDef *message_p;
+  uint8_t *message_buffer;
+  message_buffer = itti_malloc (TASK_RRC_GNB_SIM, TASK_RRC_UE_SIM,
+            ue_p->Srb0.Tx_buffer.payload_size);
+  memcpy (message_buffer, (uint8_t*)ue_p->Srb0.Tx_buffer.Payload, ue_p->Srb0.Tx_buffer.payload_size);
+  message_p = itti_alloc_new_message (TASK_RRC_GNB_SIM, GNB_RRC_CCCH_DATA_IND);
+  GNB_RRC_CCCH_DATA_IND (message_p).sdu = message_buffer;
+  GNB_RRC_CCCH_DATA_IND (message_p).size  = ue_p->Srb0.Tx_buffer.payload_size;
+  itti_send_msg_to_task (TASK_RRC_UE_SIM, ctxt_pP->instance, message_p);
 #endif
 }
 
@@ -468,16 +468,16 @@ rrc_gNB_process_RRCSetupComplete(
 )
 //-----------------------------------------------------------------------------
 {
-    LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel UL-DCCH, " "processing NR_RRCSetupComplete from UE (SRB1 Active)\n",
-        PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
-    ue_context_pP->ue_context.Srb1.Active = 1;
-    ue_context_pP->ue_context.Status = NR_RRC_CONNECTED;
+  LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel UL-DCCH, " "processing NR_RRCSetupComplete from UE (SRB1 Active)\n",
+      PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
+  ue_context_pP->ue_context.Srb1.Active = 1;
+  ue_context_pP->ue_context.Status = NR_RRC_CONNECTED;
 
-    if (AMF_MODE_ENABLED) {
+  if (AMF_MODE_ENABLED) {
     rrc_gNB_send_NGAP_NAS_FIRST_REQ(ctxt_pP, ue_context_pP, rrcSetupComplete);
-    } else {
-        rrc_gNB_generate_SecurityModeCommand(ctxt_pP, ue_context_pP);
-    }
+  } else {
+    rrc_gNB_generate_SecurityModeCommand(ctxt_pP, ue_context_pP);
+  }
 }
 
 //-----------------------------------------------------------------------------
@@ -488,61 +488,61 @@ rrc_gNB_generate_defaultRRCReconfiguration(
 )
 //-----------------------------------------------------------------------------
 {
-    // gNB_RRC_UE_t           *ue_p = &ue_context_pP->ue_context;
-    uint8_t                buffer[RRC_BUF_SIZE];
-    uint16_t               size;
-    gNB_RRC_INST           *gnb_rrc_inst = RC.nrrrc[ctxt_pP->module_id];
-
-    size = do_RRCReconfiguration(ctxt_pP, ue_context_pP, buffer,
-                                 rrc_gNB_get_next_transaction_identifier(ctxt_pP->module_id),
-                                 gnb_rrc_inst);
-    LOG_DUMPMSG(NR_RRC, DEBUG_RRC,(char *)buffer, size, "[MSG] RRC Reconfiguration\n");
-
-    free(ue_context_pP->ue_context.nas_pdu.buffer);
-
-    LOG_I(NR_RRC, "[gNB %d] Frame %d, Logical Channel DL-DCCH, Generate NR_RRCReconfiguration (bytes %d, UE id %x)\n",
-            ctxt_pP->module_id,
-            ctxt_pP->frame,
-            size,
-            ue_context_pP->ue_context.rnti);
-    LOG_D(NR_RRC, "[FRAME %05d][RRC_gNB][MOD %u][][--- PDCP_DATA_REQ/%d Bytes (rrcReconfiguration to UE %x MUI %d) --->][PDCP][MOD %u][RB %u]\n",
-            ctxt_pP->frame,
-            ctxt_pP->module_id,
-            size,
-            ue_context_pP->ue_context.rnti,
-            rrc_gNB_mui,
-            ctxt_pP->module_id,
-            DCCH);
-    MSC_LOG_TX_MESSAGE(MSC_RRC_GNB,
-                        MSC_RRC_UE,
-                        buffer,
-                        size,
-                        MSC_AS_TIME_FMT" NR_RRCReconfiguration UE %x MUI %d size %u",
-                        MSC_AS_TIME_ARGS(ctxt_pP),
-                        ue_context_pP->ue_context.rnti,
-                        rrc_gNB_mui,
-                        size);
+  // gNB_RRC_UE_t           *ue_p = &ue_context_pP->ue_context;
+  uint8_t                buffer[RRC_BUF_SIZE];
+  uint16_t               size;
+  gNB_RRC_INST           *gnb_rrc_inst = RC.nrrrc[ctxt_pP->module_id];
+
+  size = do_RRCReconfiguration(ctxt_pP, ue_context_pP, buffer,
+                               rrc_gNB_get_next_transaction_identifier(ctxt_pP->module_id),
+                               gnb_rrc_inst);
+  LOG_DUMPMSG(NR_RRC, DEBUG_RRC,(char *)buffer, size, "[MSG] RRC Reconfiguration\n");
+
+  free(ue_context_pP->ue_context.nas_pdu.buffer);
+
+  LOG_I(NR_RRC, "[gNB %d] Frame %d, Logical Channel DL-DCCH, Generate NR_RRCReconfiguration (bytes %d, UE id %x)\n",
+          ctxt_pP->module_id,
+          ctxt_pP->frame,
+          size,
+          ue_context_pP->ue_context.rnti);
+  LOG_D(NR_RRC, "[FRAME %05d][RRC_gNB][MOD %u][][--- PDCP_DATA_REQ/%d Bytes (rrcReconfiguration to UE %x MUI %d) --->][PDCP][MOD %u][RB %u]\n",
+          ctxt_pP->frame,
+          ctxt_pP->module_id,
+          size,
+          ue_context_pP->ue_context.rnti,
+          rrc_gNB_mui,
+          ctxt_pP->module_id,
+          DCCH);
+  MSC_LOG_TX_MESSAGE(MSC_RRC_GNB,
+          MSC_RRC_UE,
+          buffer,
+          size,
+          MSC_AS_TIME_FMT" NR_RRCReconfiguration UE %x MUI %d size %u",
+          MSC_AS_TIME_ARGS(ctxt_pP),
+          ue_context_pP->ue_context.rnti,
+          rrc_gNB_mui,
+          size);
 #ifdef ITTI_SIM
-      MessageDef *message_p;
-      uint8_t *message_buffer;
-      message_buffer = itti_malloc (TASK_RRC_GNB_SIM, TASK_RRC_UE_SIM, size);
-      memcpy (message_buffer, buffer, size);
-      message_p = itti_alloc_new_message (TASK_RRC_GNB_SIM, GNB_RRC_DCCH_DATA_IND);
-      GNB_RRC_DCCH_DATA_IND (message_p).rbid = DCCH;
-      GNB_RRC_DCCH_DATA_IND (message_p).sdu = message_buffer;
-      GNB_RRC_DCCH_DATA_IND (message_p).size	= size;
-      itti_send_msg_to_task (TASK_RRC_UE_SIM, ctxt_pP->instance, message_p);
+  MessageDef *message_p;
+  uint8_t *message_buffer;
+  message_buffer = itti_malloc (TASK_RRC_GNB_SIM, TASK_RRC_UE_SIM, size);
+  memcpy (message_buffer, buffer, size);
+  message_p = itti_alloc_new_message (TASK_RRC_GNB_SIM, GNB_RRC_DCCH_DATA_IND);
+  GNB_RRC_DCCH_DATA_IND (message_p).rbid = DCCH;
+  GNB_RRC_DCCH_DATA_IND (message_p).sdu = message_buffer;
+  GNB_RRC_DCCH_DATA_IND (message_p).size	= size;
+  itti_send_msg_to_task (TASK_RRC_UE_SIM, ctxt_pP->instance, message_p);
 #else
-    nr_rrc_data_req(ctxt_pP,
-                DCCH,
-                rrc_gNB_mui++,
-                SDU_CONFIRM_NO,
-                size,
-                buffer,
-                PDCP_TRANSMISSION_MODE_CONTROL);
+  nr_rrc_data_req(ctxt_pP,
+              DCCH,
+              rrc_gNB_mui++,
+              SDU_CONFIRM_NO,
+              size,
+              buffer,
+              PDCP_TRANSMISSION_MODE_CONTROL);
 #endif
-    // rrc_pdcp_config_asn1_req
-    // rrc_rlc_config_asn1_req
+  // rrc_pdcp_config_asn1_req
+  // rrc_rlc_config_asn1_req
 }
 
 //-----------------------------------------------------------------------------
@@ -556,153 +556,153 @@ rrc_gNB_process_RRCReconfigurationComplete(
     const uint8_t xid
 )
 {
-    int                                 drb_id;
-    uint8_t                            *kRRCenc = NULL;
-    uint8_t                            *kRRCint = NULL;
-    uint8_t                            *kUPenc = NULL;
-    NR_DRB_ToAddModList_t              *DRB_configList = ue_context_pP->ue_context.DRB_configList2[xid];
-    NR_SRB_ToAddModList_t              *SRB_configList = ue_context_pP->ue_context.SRB_configList2[xid];
-    NR_DRB_ToReleaseList_t             *DRB_Release_configList2 = ue_context_pP->ue_context.DRB_Release_configList2[xid];
-    NR_DRB_Identity_t                  *drb_id_p      = NULL;
-    uint8_t                             nr_DRB2LCHAN[8];
-
-    ue_context_pP->ue_context.ue_reestablishment_timer = 0;
+  int                                 drb_id;
+  uint8_t                            *kRRCenc = NULL;
+  uint8_t                            *kRRCint = NULL;
+  uint8_t                            *kUPenc = NULL;
+  NR_DRB_ToAddModList_t              *DRB_configList = ue_context_pP->ue_context.DRB_configList2[xid];
+  NR_SRB_ToAddModList_t              *SRB_configList = ue_context_pP->ue_context.SRB_configList2[xid];
+  NR_DRB_ToReleaseList_t             *DRB_Release_configList2 = ue_context_pP->ue_context.DRB_Release_configList2[xid];
+  NR_DRB_Identity_t                  *drb_id_p      = NULL;
+  uint8_t                             nr_DRB2LCHAN[8];
+
+  ue_context_pP->ue_context.ue_reestablishment_timer = 0;
 
 #ifndef PHYSIM
-    /* Derive the keys from kgnb */
-    if (DRB_configList != NULL) {
-        derive_key_up_enc(ue_context_pP->ue_context.ciphering_algorithm,
-                        ue_context_pP->ue_context.kgnb,
-                        &kUPenc);
-    }
+  /* Derive the keys from kgnb */
+  if (DRB_configList != NULL) {
+      derive_key_up_enc(ue_context_pP->ue_context.ciphering_algorithm,
+                      ue_context_pP->ue_context.kgnb,
+                      &kUPenc);
+  }
 
-    derive_key_rrc_enc(ue_context_pP->ue_context.ciphering_algorithm,
-                        ue_context_pP->ue_context.kgnb,
-                        &kRRCenc);
-    derive_key_rrc_int(ue_context_pP->ue_context.integrity_algorithm,
-                        ue_context_pP->ue_context.kgnb,
-                        &kRRCint);
+  derive_key_rrc_enc(ue_context_pP->ue_context.ciphering_algorithm,
+                      ue_context_pP->ue_context.kgnb,
+                      &kRRCenc);
+  derive_key_rrc_int(ue_context_pP->ue_context.integrity_algorithm,
+                      ue_context_pP->ue_context.kgnb,
+                      &kRRCint);
 #endif
-    /* Refresh SRBs/DRBs */
-    MSC_LOG_TX_MESSAGE(MSC_RRC_GNB, MSC_PDCP_ENB, NULL, 0, MSC_AS_TIME_FMT" CONFIG_REQ UE %x DRB (security unchanged)",
-                     MSC_AS_TIME_ARGS(ctxt_pP),
-                     ue_context_pP->ue_context.rnti);
+  /* Refresh SRBs/DRBs */
+  MSC_LOG_TX_MESSAGE(MSC_RRC_GNB, MSC_PDCP_ENB, NULL, 0, MSC_AS_TIME_FMT" CONFIG_REQ UE %x DRB (security unchanged)",
+                   MSC_AS_TIME_ARGS(ctxt_pP),
+                   ue_context_pP->ue_context.rnti);
 
 #ifndef ITTI_SIM
-    nr_rrc_pdcp_config_asn1_req(ctxt_pP,
-                                SRB_configList, // NULL,
-                                DRB_configList,
-                                DRB_Release_configList2,
-                                0xff, // already configured during the securitymodecommand
-                                kRRCenc,
-                                kRRCint,
-                                kUPenc,
-                                NULL,
-                                NULL,
-                                NULL);
-    /* Refresh SRBs/DRBs */
-    nr_rrc_rlc_config_asn1_req(ctxt_pP,
-                            SRB_configList, // NULL,
-                            DRB_configList,
-                            DRB_Release_configList2,
-                            NULL,
-                            NULL);
+  nr_rrc_pdcp_config_asn1_req(ctxt_pP,
+                              SRB_configList, // NULL,
+                              DRB_configList,
+                              DRB_Release_configList2,
+                              0xff, // already configured during the securitymodecommand
+                              kRRCenc,
+                              kRRCint,
+                              kUPenc,
+                              NULL,
+                              NULL,
+                              NULL);
+  /* Refresh SRBs/DRBs */
+  nr_rrc_rlc_config_asn1_req(ctxt_pP,
+                          SRB_configList, // NULL,
+                          DRB_configList,
+                          DRB_Release_configList2,
+                          NULL,
+                          NULL);
 #endif
 
-    /* Set the SRB active in UE context */
-    if (SRB_configList != NULL) {
-      for (int i = 0; (i < SRB_configList->list.count) && (i < 3); i++) {
-        if (SRB_configList->list.array[i]->srb_Identity == 1) {
-          ue_context_pP->ue_context.Srb1.Active = 1;
-        } else if (SRB_configList->list.array[i]->srb_Identity == 2) {
-          ue_context_pP->ue_context.Srb2.Active = 1;
-          ue_context_pP->ue_context.Srb2.Srb_info.Srb_id = 2;
-          LOG_I(NR_RRC,"[gNB %d] Frame      %d CC %d : SRB2 is now active\n",
-                ctxt_pP->module_id,
-                ctxt_pP->frame,
-                ue_context_pP->ue_context.primaryCC_id);
-        } else {
-          LOG_W(NR_RRC,"[gNB %d] Frame      %d CC %d : invalide SRB identity %ld\n",
-                ctxt_pP->module_id,
-                ctxt_pP->frame,
-                ue_context_pP->ue_context.primaryCC_id,
-                SRB_configList->list.array[i]->srb_Identity);
-        }
+  /* Set the SRB active in UE context */
+  if (SRB_configList != NULL) {
+    for (int i = 0; (i < SRB_configList->list.count) && (i < 3); i++) {
+      if (SRB_configList->list.array[i]->srb_Identity == 1) {
+        ue_context_pP->ue_context.Srb1.Active = 1;
+      } else if (SRB_configList->list.array[i]->srb_Identity == 2) {
+        ue_context_pP->ue_context.Srb2.Active = 1;
+        ue_context_pP->ue_context.Srb2.Srb_info.Srb_id = 2;
+        LOG_I(NR_RRC,"[gNB %d] Frame      %d CC %d : SRB2 is now active\n",
+              ctxt_pP->module_id,
+              ctxt_pP->frame,
+              ue_context_pP->ue_context.primaryCC_id);
+      } else {
+        LOG_W(NR_RRC,"[gNB %d] Frame      %d CC %d : invalide SRB identity %ld\n",
+              ctxt_pP->module_id,
+              ctxt_pP->frame,
+              ue_context_pP->ue_context.primaryCC_id,
+              SRB_configList->list.array[i]->srb_Identity);
       }
-
-      free(SRB_configList);
-      ue_context_pP->ue_context.SRB_configList2[xid] = NULL;
     }
 
-    /* Loop through DRBs and establish if necessary */
-    if (DRB_configList != NULL) {
-        for (int i = 0; i < DRB_configList->list.count; i++) {
-        if (DRB_configList->list.array[i]) {
-            drb_id = (int)DRB_configList->list.array[i]->drb_Identity;
-            LOG_I(NR_RRC, "[gNB %d] Frame  %d : Logical Channel UL-DCCH, Received NR_RRCReconfigurationComplete from UE rnti %x, reconfiguring DRB %d/LCID %d\n",
-                ctxt_pP->module_id,
-                ctxt_pP->frame,
-                ctxt_pP->rnti,
-                (int)DRB_configList->list.array[i]->drb_Identity,
-                (int)*DRB_configList->list.array[i]->pdcp_Config->moreThanOneRLC->primaryPath.logicalChannel);
-
-            if (ue_context_pP->ue_context.DRB_active[drb_id] == 0) {
-                ue_context_pP->ue_context.DRB_active[drb_id] = 1;
-                LOG_D(NR_RRC, "[gNB %d] Frame %d: Establish RLC UM Bidirectional, DRB %d Active\n",
-                        ctxt_pP->module_id, ctxt_pP->frame, (int)DRB_configList->list.array[i]->drb_Identity);
-
-                LOG_D(NR_RRC,
-                        PROTOCOL_NR_RRC_CTXT_UE_FMT" RRC_gNB --- MAC_CONFIG_REQ  (DRB) ---> MAC_gNB\n",
-                        PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
-
-                    if (DRB_configList->list.array[i]->pdcp_Config->moreThanOneRLC->primaryPath.logicalChannel) {
-                        nr_DRB2LCHAN[i] = (uint8_t) * DRB_configList->list.array[i]->pdcp_Config->moreThanOneRLC->primaryPath.logicalChannel;
-                    }
-
-                // rrc_mac_config_req_eNB
-            } else {        // remove LCHAN from MAC/PHY
-            if (ue_context_pP->ue_context.DRB_active[drb_id] == 1) {
-                // DRB has just been removed so remove RLC + PDCP for DRB
-                /*      rrc_pdcp_config_req (ctxt_pP->module_id, frameP, 1, CONFIG_ACTION_REMOVE,
-                (ue_mod_idP * NB_RB_MAX) + DRB2LCHAN[i],UNDEF_SECURITY_MODE);
-                */
-                rrc_rlc_config_req(ctxt_pP,
-                                    SRB_FLAG_NO,
-                                    MBMS_FLAG_NO,
-                                    CONFIG_ACTION_REMOVE,
-                                    nr_DRB2LCHAN[i],
-                                    Rlc_info_um);
-            }
-
-            ue_context_pP->ue_context.DRB_active[drb_id] = 0;
-            LOG_D(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ  (DRB) ---> MAC_eNB\n",
-                    PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
+    free(SRB_configList);
+    ue_context_pP->ue_context.SRB_configList2[xid] = NULL;
+  }
 
-            // rrc_mac_config_req_eNB
+  /* Loop through DRBs and establish if necessary */
+  if (DRB_configList != NULL) {
+    for (int i = 0; i < DRB_configList->list.count; i++) {
+      if (DRB_configList->list.array[i]) {
+        drb_id = (int)DRB_configList->list.array[i]->drb_Identity;
+        LOG_I(NR_RRC, "[gNB %d] Frame  %d : Logical Channel UL-DCCH, Received NR_RRCReconfigurationComplete from UE rnti %x, reconfiguring DRB %d/LCID %d\n",
+            ctxt_pP->module_id,
+            ctxt_pP->frame,
+            ctxt_pP->rnti,
+            (int)DRB_configList->list.array[i]->drb_Identity,
+            (int)*DRB_configList->list.array[i]->pdcp_Config->moreThanOneRLC->primaryPath.logicalChannel);
 
-            } // end else of if (ue_context_pP->ue_context.DRB_active[drb_id] == 0)
-        } // end if (DRB_configList->list.array[i])
-        } // end for (int i = 0; i < DRB_configList->list.count; i++)
+        if (ue_context_pP->ue_context.DRB_active[drb_id] == 0) {
+          ue_context_pP->ue_context.DRB_active[drb_id] = 1;
+          LOG_D(NR_RRC, "[gNB %d] Frame %d: Establish RLC UM Bidirectional, DRB %d Active\n",
+                  ctxt_pP->module_id, ctxt_pP->frame, (int)DRB_configList->list.array[i]->drb_Identity);
 
-        free(DRB_configList);
-        ue_context_pP->ue_context.DRB_configList2[xid] = NULL;
-    } // end if DRB_configList != NULL
+          LOG_D(NR_RRC,
+                  PROTOCOL_NR_RRC_CTXT_UE_FMT" RRC_gNB --- MAC_CONFIG_REQ  (DRB) ---> MAC_gNB\n",
+                  PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
 
-    if(DRB_Release_configList2 != NULL) {
-        for (int i = 0; i < DRB_Release_configList2->list.count; i++) {
-            if (DRB_Release_configList2->list.array[i]) {
-                drb_id_p = DRB_Release_configList2->list.array[i];
-                drb_id = *drb_id_p;
+          if (DRB_configList->list.array[i]->pdcp_Config->moreThanOneRLC->primaryPath.logicalChannel) {
+            nr_DRB2LCHAN[i] = (uint8_t) * DRB_configList->list.array[i]->pdcp_Config->moreThanOneRLC->primaryPath.logicalChannel;
+          }
 
-                if (ue_context_pP->ue_context.DRB_active[drb_id] == 1) {
-                ue_context_pP->ue_context.DRB_active[drb_id] = 0;
-                }
-            }
+            // rrc_mac_config_req_eNB
+        } else {        // remove LCHAN from MAC/PHY
+          if (ue_context_pP->ue_context.DRB_active[drb_id] == 1) {
+            // DRB has just been removed so remove RLC + PDCP for DRB
+            /*      rrc_pdcp_config_req (ctxt_pP->module_id, frameP, 1, CONFIG_ACTION_REMOVE,
+            (ue_mod_idP * NB_RB_MAX) + DRB2LCHAN[i],UNDEF_SECURITY_MODE);
+            */
+            rrc_rlc_config_req(ctxt_pP,
+                                SRB_FLAG_NO,
+                                MBMS_FLAG_NO,
+                                CONFIG_ACTION_REMOVE,
+                                nr_DRB2LCHAN[i],
+                                Rlc_info_um);
+          }
+
+          ue_context_pP->ue_context.DRB_active[drb_id] = 0;
+          LOG_D(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ  (DRB) ---> MAC_eNB\n",
+                  PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
+
+          // rrc_mac_config_req_eNB
+
+        } // end else of if (ue_context_pP->ue_context.DRB_active[drb_id] == 0)
+      } // end if (DRB_configList->list.array[i])
+    } // end for (int i = 0; i < DRB_configList->list.count; i++)
+
+    free(DRB_configList);
+    ue_context_pP->ue_context.DRB_configList2[xid] = NULL;
+  } // end if DRB_configList != NULL
+
+  if(DRB_Release_configList2 != NULL) {
+    for (int i = 0; i < DRB_Release_configList2->list.count; i++) {
+      if (DRB_Release_configList2->list.array[i]) {
+        drb_id_p = DRB_Release_configList2->list.array[i];
+        drb_id = *drb_id_p;
+
+        if (ue_context_pP->ue_context.DRB_active[drb_id] == 1) {
+        ue_context_pP->ue_context.DRB_active[drb_id] = 0;
         }
-
-        free(DRB_Release_configList2);
-        ue_context_pP->ue_context.DRB_Release_configList2[xid] = NULL;
+      }
     }
+
+    free(DRB_Release_configList2);
+    ue_context_pP->ue_context.DRB_Release_configList2[xid] = NULL;
+  }
 }
 //-----------------------------------------------------------------------------
 
@@ -712,177 +712,177 @@ int nr_rrc_gNB_decode_ccch(protocol_ctxt_t    *const ctxt_pP,
                            int                buffer_length,
                            const int          CC_id)
 {
-    asn_dec_rval_t                                    dec_rval;
-    NR_UL_CCCH_Message_t                             *ul_ccch_msg = NULL;
-    struct rrc_gNB_ue_context_s                      *ue_context_p = NULL;
-    gNB_RRC_INST                                     *gnb_rrc_inst = RC.nrrrc[ctxt_pP->module_id];
-    NR_RRCSetupRequest_IEs_t                         *rrcSetupRequest = NULL;
-    uint64_t                                         random_value = 0;
-
-    dec_rval = uper_decode( NULL,
-                            &asn_DEF_NR_UL_CCCH_Message,
-                            (void **)&ul_ccch_msg,
-                            (uint8_t *) buffer,
-                            100,
-                            0,
-                            0);
-
-    if (dec_rval.consumed == 0) {
+  asn_dec_rval_t                                    dec_rval;
+  NR_UL_CCCH_Message_t                             *ul_ccch_msg = NULL;
+  struct rrc_gNB_ue_context_s                      *ue_context_p = NULL;
+  gNB_RRC_INST                                     *gnb_rrc_inst = RC.nrrrc[ctxt_pP->module_id];
+  NR_RRCSetupRequest_IEs_t                         *rrcSetupRequest = NULL;
+  uint64_t                                         random_value = 0;
+
+  dec_rval = uper_decode( NULL,
+                          &asn_DEF_NR_UL_CCCH_Message,
+                          (void **)&ul_ccch_msg,
+                          (uint8_t *) buffer,
+                          100,
+                          0,
+                          0);
+
+  if (dec_rval.consumed == 0) {
+    /* TODO */
+    LOG_E(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" FATAL Error in receiving CCCH\n",
+               PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
+    return -1;
+  }
+
+  if (ul_ccch_msg->message.present == NR_UL_CCCH_MessageType_PR_c1) {
+    switch (ul_ccch_msg->message.choice.c1->present) {
+      case NR_UL_CCCH_MessageType__c1_PR_NOTHING:
         /* TODO */
-        LOG_E(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" FATAL Error in receiving CCCH\n",
-                   PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
-        return -1;
-    }
+        LOG_I(NR_RRC,
+            PROTOCOL_NR_RRC_CTXT_FMT" Received PR_NOTHING on UL-CCCH-Message\n",
+            PROTOCOL_NR_RRC_CTXT_ARGS(ctxt_pP));
+        break;
 
-    if (ul_ccch_msg->message.present == NR_UL_CCCH_MessageType_PR_c1) {
-        switch (ul_ccch_msg->message.choice.c1->present) {
-            case NR_UL_CCCH_MessageType__c1_PR_NOTHING:
-                /* TODO */
-                LOG_I(NR_RRC,
-                        PROTOCOL_NR_RRC_CTXT_FMT" Received PR_NOTHING on UL-CCCH-Message\n",
-                        PROTOCOL_NR_RRC_CTXT_ARGS(ctxt_pP));
-                break;
-
-            case NR_UL_CCCH_MessageType__c1_PR_rrcSetupRequest:
-                ue_context_p = rrc_gNB_get_ue_context(gnb_rrc_inst, ctxt_pP->rnti);
-                if (ue_context_p != NULL) {
-                    rrc_gNB_free_mem_UE_context(ctxt_pP, ue_context_p);
-                    MSC_LOG_RX_DISCARDED_MESSAGE(
-                        MSC_RRC_GNB,
-                        MSC_RRC_UE,
-                        buffer,
-                        dec_rval.consumed,
-                        MSC_AS_TIME_FMT" NR_RRCSetupRequest UE %x size %u (UE already in context)",
-                        MSC_AS_TIME_ARGS(ctxt_pP),
-                        ue_context_p->ue_context.rnti,
-                        dec_rval.consumed);
-                } else {
-                    rrcSetupRequest = &ul_ccch_msg->message.choice.c1->choice.rrcSetupRequest->rrcSetupRequest;
-                    if (NR_InitialUE_Identity_PR_randomValue == rrcSetupRequest->ue_Identity.present) {
-                        /* randomValue                         BIT STRING (SIZE (39)) */
-                        if (rrcSetupRequest->ue_Identity.choice.randomValue.size != 5) { // 39-bit random value
-                            LOG_E(NR_RRC, "wrong InitialUE-Identity randomValue size, expected 5, provided %lu",
-                                        (long unsigned int)rrcSetupRequest->ue_Identity.choice.randomValue.size);
-                            return -1;
-                        }
-
-                        memcpy(((uint8_t *) & random_value) + 3,
-                                rrcSetupRequest->ue_Identity.choice.randomValue.buf,
-                                rrcSetupRequest->ue_Identity.choice.randomValue.size);
-
-                        /* if there is already a registered UE (with another RNTI) with this random_value,
-                        * the current one must be removed from MAC/PHY (zombie UE)
-                        */
-                        if ((ue_context_p = rrc_gNB_ue_context_random_exist(RC.nrrrc[ctxt_pP->module_id], random_value))) {
-                            LOG_W(NR_RRC, "new UE rnti %x (coming with random value) is already there as UE %x, removing %x from MAC/PHY\n",
-                                    ctxt_pP->rnti, ue_context_p->ue_context.rnti, ue_context_p->ue_context.rnti);
-                            ue_context_p->ue_context.ul_failure_timer = 20000;
-                        }
-
-                        ue_context_p = rrc_gNB_get_next_free_ue_context(ctxt_pP, RC.nrrrc[ctxt_pP->module_id], random_value);
-                        ue_context_p->ue_context.Srb0.Srb_id = 0;
-                        ue_context_p->ue_context.Srb0.Active = 1;
-                        memcpy(ue_context_p->ue_context.Srb0.Rx_buffer.Payload,
-                                buffer,
-                                buffer_length);
-                        ue_context_p->ue_context.Srb0.Rx_buffer.payload_size = buffer_length;
-                    } else if (NR_InitialUE_Identity_PR_ng_5G_S_TMSI_Part1 == rrcSetupRequest->ue_Identity.present) {
-                        /* TODO */
-                        /* <5G-S-TMSI> = <AMF Set ID><AMF Pointer><5G-TMSI> 48-bit */
-                        /* ng-5G-S-TMSI-Part1                  BIT STRING (SIZE (39)) */
-                        if (rrcSetupRequest->ue_Identity.choice.ng_5G_S_TMSI_Part1.size != 5) {
-                            LOG_E(NR_RRC, "wrong ng_5G_S_TMSI_Part1 size, expected 5, provided %lu \n", 
-                                        (long unsigned int)rrcSetupRequest->ue_Identity.choice.ng_5G_S_TMSI_Part1.size);
-                            return -1;
-                        }
-
-                        uint64_t s_tmsi_part1 = bitStr_to_uint64(&rrcSetupRequest->ue_Identity.choice.ng_5G_S_TMSI_Part1);
-
-                        // memcpy(((uint8_t *) & random_value) + 3,
-                        //         rrcSetupRequest->ue_Identity.choice.ng_5G_S_TMSI_Part1.buf,
-                        //         rrcSetupRequest->ue_Identity.choice.ng_5G_S_TMSI_Part1.size);
-
-                        if ((ue_context_p = rrc_gNB_ue_context_5g_s_tmsi_exist(RC.nrrrc[ctxt_pP->module_id], s_tmsi_part1))) {
-                            LOG_I(NR_RRC, " 5G-S-TMSI-Part1 exists, ue_context_p %p, old rnti %x => %x\n",ue_context_p, ue_context_p->ue_context.rnti, ctxt_pP->rnti);
-
-                            nr_rrc_mac_remove_ue(ctxt_pP->module_id, ue_context_p->ue_context.rnti);
-
-                            /* replace rnti in the context */
-                            /* for that, remove the context from the RB tree */
-                            RB_REMOVE(rrc_nr_ue_tree_s, &RC.nrrrc[ctxt_pP->module_id]->rrc_ue_head, ue_context_p);
-                            /* and insert again, after changing rnti everywhere it has to be changed */
-                            ue_context_p->ue_id_rnti = ctxt_pP->rnti;
-                            ue_context_p->ue_context.rnti = ctxt_pP->rnti;
-                            RB_INSERT(rrc_nr_ue_tree_s, &RC.nrrrc[ctxt_pP->module_id]->rrc_ue_head, ue_context_p);
-                            /* reset timers */
-                            ue_context_p->ue_context.ul_failure_timer = 0;
-                            ue_context_p->ue_context.ue_release_timer = 0;
-                            ue_context_p->ue_context.ue_reestablishment_timer = 0;
-                            ue_context_p->ue_context.ue_release_timer_s1 = 0;
-                            ue_context_p->ue_context.ue_release_timer_rrc = 0;
-                        } else {
-                            LOG_I(NR_RRC, " 5G-S-TMSI-Part1 doesn't exist, setting ng_5G_S_TMSI_Part1 to %p => %ld\n",
-                                            ue_context_p, s_tmsi_part1);
-
-                            ue_context_p = rrc_gNB_get_next_free_ue_context(ctxt_pP, RC.nrrrc[ctxt_pP->module_id], s_tmsi_part1);
-
-                            if (ue_context_p == NULL) {
-                                LOG_E(RRC, "%s:%d:%s: rrc_gNB_get_next_free_ue_context returned NULL\n", __FILE__, __LINE__, __FUNCTION__);
-                            }
-
-                            if (ue_context_p != NULL) {
-                                ue_context_p->ue_context.Initialue_identity_5g_s_TMSI.presence = TRUE;
-                                ue_context_p->ue_context.ng_5G_S_TMSI_Part1 = s_tmsi_part1;
-                            }
-                        }
-                    } else {
-                        /* TODO */
-                        memcpy(((uint8_t *) & random_value) + 3,
-                                rrcSetupRequest->ue_Identity.choice.randomValue.buf,
-                                rrcSetupRequest->ue_Identity.choice.randomValue.size);
-
-                        rrc_gNB_get_next_free_ue_context(ctxt_pP, RC.nrrrc[ctxt_pP->module_id], random_value);
-                        LOG_E(NR_RRC,
-                                PROTOCOL_NR_RRC_CTXT_UE_FMT" RRCSetupRequest without random UE identity or S-TMSI not supported, let's reject the UE\n",
-                                PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
-                        rrc_gNB_generate_RRCReject(ctxt_pP,
-                                                   rrc_gNB_get_ue_context(gnb_rrc_inst, ctxt_pP->rnti),
-                                                   CC_id);
-                        break;
-                    }
-                }
-
-                if (ue_context_p != NULL) {
-                    ue_context_p->ue_context.establishment_cause = rrcSetupRequest->establishmentCause;
-                }
-
-                rrc_gNB_generate_RRCSetup(ctxt_pP,
-                                          rrc_gNB_get_ue_context(gnb_rrc_inst, ctxt_pP->rnti),
-                                          CC_id);
-                break;
-
-            case NR_UL_CCCH_MessageType__c1_PR_rrcResumeRequest:
-                LOG_I(NR_RRC, "receive rrcResumeRequest message \n");
-                /* TODO */
-                break;
-
-            case NR_UL_CCCH_MessageType__c1_PR_rrcReestablishmentRequest:
-                LOG_I(NR_RRC, "receive rrcReestablishmentRequest message \n");
-                /* TODO */
-                break;
-
-            case NR_UL_CCCH_MessageType__c1_PR_rrcSystemInfoRequest:
-                LOG_I(NR_RRC, "receive rrcSystemInfoRequest message \n");
-                /* TODO */
-                break;
-
-            default:
-                LOG_E(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" Unknown message\n",
-                           PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
-                break;
+      case NR_UL_CCCH_MessageType__c1_PR_rrcSetupRequest:
+        ue_context_p = rrc_gNB_get_ue_context(gnb_rrc_inst, ctxt_pP->rnti);
+        if (ue_context_p != NULL) {
+          rrc_gNB_free_mem_UE_context(ctxt_pP, ue_context_p);
+          MSC_LOG_RX_DISCARDED_MESSAGE(
+              MSC_RRC_GNB,
+              MSC_RRC_UE,
+              buffer,
+              dec_rval.consumed,
+              MSC_AS_TIME_FMT" NR_RRCSetupRequest UE %x size %u (UE already in context)",
+              MSC_AS_TIME_ARGS(ctxt_pP),
+              ue_context_p->ue_context.rnti,
+              dec_rval.consumed);
+        } else {
+          rrcSetupRequest = &ul_ccch_msg->message.choice.c1->choice.rrcSetupRequest->rrcSetupRequest;
+          if (NR_InitialUE_Identity_PR_randomValue == rrcSetupRequest->ue_Identity.present) {
+            /* randomValue                         BIT STRING (SIZE (39)) */
+            if (rrcSetupRequest->ue_Identity.choice.randomValue.size != 5) { // 39-bit random value
+              LOG_E(NR_RRC, "wrong InitialUE-Identity randomValue size, expected 5, provided %lu",
+                          (long unsigned int)rrcSetupRequest->ue_Identity.choice.randomValue.size);
+              return -1;
+            }
+
+            memcpy(((uint8_t *) & random_value) + 3,
+                    rrcSetupRequest->ue_Identity.choice.randomValue.buf,
+                    rrcSetupRequest->ue_Identity.choice.randomValue.size);
+
+            /* if there is already a registered UE (with another RNTI) with this random_value,
+            * the current one must be removed from MAC/PHY (zombie UE)
+            */
+            if ((ue_context_p = rrc_gNB_ue_context_random_exist(RC.nrrrc[ctxt_pP->module_id], random_value))) {
+              LOG_W(NR_RRC, "new UE rnti %x (coming with random value) is already there as UE %x, removing %x from MAC/PHY\n",
+                      ctxt_pP->rnti, ue_context_p->ue_context.rnti, ue_context_p->ue_context.rnti);
+              ue_context_p->ue_context.ul_failure_timer = 20000;
+            }
+
+            ue_context_p = rrc_gNB_get_next_free_ue_context(ctxt_pP, RC.nrrrc[ctxt_pP->module_id], random_value);
+            ue_context_p->ue_context.Srb0.Srb_id = 0;
+            ue_context_p->ue_context.Srb0.Active = 1;
+            memcpy(ue_context_p->ue_context.Srb0.Rx_buffer.Payload,
+                    buffer,
+                    buffer_length);
+            ue_context_p->ue_context.Srb0.Rx_buffer.payload_size = buffer_length;
+          } else if (NR_InitialUE_Identity_PR_ng_5G_S_TMSI_Part1 == rrcSetupRequest->ue_Identity.present) {
+            /* TODO */
+            /* <5G-S-TMSI> = <AMF Set ID><AMF Pointer><5G-TMSI> 48-bit */
+            /* ng-5G-S-TMSI-Part1                  BIT STRING (SIZE (39)) */
+            if (rrcSetupRequest->ue_Identity.choice.ng_5G_S_TMSI_Part1.size != 5) {
+              LOG_E(NR_RRC, "wrong ng_5G_S_TMSI_Part1 size, expected 5, provided %lu \n",
+                          (long unsigned int)rrcSetupRequest->ue_Identity.choice.ng_5G_S_TMSI_Part1.size);
+              return -1;
+            }
+
+            uint64_t s_tmsi_part1 = bitStr_to_uint64(&rrcSetupRequest->ue_Identity.choice.ng_5G_S_TMSI_Part1);
+
+            // memcpy(((uint8_t *) & random_value) + 3,
+            //         rrcSetupRequest->ue_Identity.choice.ng_5G_S_TMSI_Part1.buf,
+            //         rrcSetupRequest->ue_Identity.choice.ng_5G_S_TMSI_Part1.size);
+
+            if ((ue_context_p = rrc_gNB_ue_context_5g_s_tmsi_exist(RC.nrrrc[ctxt_pP->module_id], s_tmsi_part1))) {
+              LOG_I(NR_RRC, " 5G-S-TMSI-Part1 exists, ue_context_p %p, old rnti %x => %x\n",ue_context_p, ue_context_p->ue_context.rnti, ctxt_pP->rnti);
+
+              nr_rrc_mac_remove_ue(ctxt_pP->module_id, ue_context_p->ue_context.rnti);
+
+              /* replace rnti in the context */
+              /* for that, remove the context from the RB tree */
+              RB_REMOVE(rrc_nr_ue_tree_s, &RC.nrrrc[ctxt_pP->module_id]->rrc_ue_head, ue_context_p);
+              /* and insert again, after changing rnti everywhere it has to be changed */
+              ue_context_p->ue_id_rnti = ctxt_pP->rnti;
+              ue_context_p->ue_context.rnti = ctxt_pP->rnti;
+              RB_INSERT(rrc_nr_ue_tree_s, &RC.nrrrc[ctxt_pP->module_id]->rrc_ue_head, ue_context_p);
+              /* reset timers */
+              ue_context_p->ue_context.ul_failure_timer = 0;
+              ue_context_p->ue_context.ue_release_timer = 0;
+              ue_context_p->ue_context.ue_reestablishment_timer = 0;
+              ue_context_p->ue_context.ue_release_timer_s1 = 0;
+              ue_context_p->ue_context.ue_release_timer_rrc = 0;
+            } else {
+              LOG_I(NR_RRC, " 5G-S-TMSI-Part1 doesn't exist, setting ng_5G_S_TMSI_Part1 to %p => %ld\n",
+                              ue_context_p, s_tmsi_part1);
+
+              ue_context_p = rrc_gNB_get_next_free_ue_context(ctxt_pP, RC.nrrrc[ctxt_pP->module_id], s_tmsi_part1);
+
+              if (ue_context_p == NULL) {
+                  LOG_E(RRC, "%s:%d:%s: rrc_gNB_get_next_free_ue_context returned NULL\n", __FILE__, __LINE__, __FUNCTION__);
+              }
+
+              if (ue_context_p != NULL) {
+                  ue_context_p->ue_context.Initialue_identity_5g_s_TMSI.presence = TRUE;
+                  ue_context_p->ue_context.ng_5G_S_TMSI_Part1 = s_tmsi_part1;
+              }
+            }
+          } else {
+            /* TODO */
+            memcpy(((uint8_t *) & random_value) + 3,
+                    rrcSetupRequest->ue_Identity.choice.randomValue.buf,
+                    rrcSetupRequest->ue_Identity.choice.randomValue.size);
+
+            rrc_gNB_get_next_free_ue_context(ctxt_pP, RC.nrrrc[ctxt_pP->module_id], random_value);
+            LOG_E(NR_RRC,
+                    PROTOCOL_NR_RRC_CTXT_UE_FMT" RRCSetupRequest without random UE identity or S-TMSI not supported, let's reject the UE\n",
+                    PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
+            rrc_gNB_generate_RRCReject(ctxt_pP,
+                                       rrc_gNB_get_ue_context(gnb_rrc_inst, ctxt_pP->rnti),
+                                       CC_id);
+            break;
+          }
         }
+
+        if (ue_context_p != NULL) {
+          ue_context_p->ue_context.establishment_cause = rrcSetupRequest->establishmentCause;
+        }
+
+        rrc_gNB_generate_RRCSetup(ctxt_pP,
+                                  rrc_gNB_get_ue_context(gnb_rrc_inst, ctxt_pP->rnti),
+                                  CC_id);
+        break;
+
+      case NR_UL_CCCH_MessageType__c1_PR_rrcResumeRequest:
+        LOG_I(NR_RRC, "receive rrcResumeRequest message \n");
+        /* TODO */
+        break;
+
+      case NR_UL_CCCH_MessageType__c1_PR_rrcReestablishmentRequest:
+        LOG_I(NR_RRC, "receive rrcReestablishmentRequest message \n");
+        /* TODO */
+        break;
+
+      case NR_UL_CCCH_MessageType__c1_PR_rrcSystemInfoRequest:
+        LOG_I(NR_RRC, "receive rrcSystemInfoRequest message \n");
+        /* TODO */
+        break;
+
+      default:
+        LOG_E(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" Unknown message\n",
+                   PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
+        break;
     }
-    return 0;
+  }
+  return 0;
 }
 
 /*! \fn uint64_t bitStr_to_uint64(BIT_STRING_t *)
@@ -918,322 +918,322 @@ rrc_gNB_decode_dcch(
 )
 //-----------------------------------------------------------------------------
 {
-    asn_dec_rval_t                      dec_rval;
-    NR_UL_DCCH_Message_t                *ul_dcch_msg  = NULL;
-    struct rrc_gNB_ue_context_s         *ue_context_p = NULL;
-    // NR_RRCSetupComplete_t               *rrcSetupComplete = NULL;
+  asn_dec_rval_t                      dec_rval;
+  NR_UL_DCCH_Message_t                *ul_dcch_msg  = NULL;
+  struct rrc_gNB_ue_context_s         *ue_context_p = NULL;
+  // NR_RRCSetupComplete_t               *rrcSetupComplete = NULL;
 
-    int i;
+  int i;
 
-    if ((Srb_id != 1) && (Srb_id != 2)) {
+  if ((Srb_id != 1) && (Srb_id != 2)) {
     LOG_E(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" Received message on SRB%ld, should not have ...\n",
-            PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
-            Srb_id);
-    } else {
-        LOG_D(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" Received message on SRB%ld\n",
-                PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
-                Srb_id);
+          PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
+          Srb_id);
+  } else {
+    LOG_D(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" Received message on SRB%ld\n",
+              PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
+              Srb_id);
+  }
+
+  LOG_D(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" Decoding UL-DCCH Message\n",
+                  PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
+  dec_rval = uper_decode(
+                  NULL,
+                  &asn_DEF_NR_UL_DCCH_Message,
+                  (void **)&ul_dcch_msg,
+                  Rx_sdu,
+                  sdu_sizeP,
+                  0,
+                  0);
+  // xer_fprint(stdout, &asn_DEF_NR_UL_DCCH_Message, (void *)&ul_dcch_msg);
+
+  {
+    for (i = 0; i < sdu_sizeP; i++) {
+      LOG_T(NR_RRC, "%x.", Rx_sdu[i]);
     }
 
-    LOG_D(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" Decoding UL-DCCH Message\n",
-                    PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
-    dec_rval = uper_decode(
-                    NULL,
-                    &asn_DEF_NR_UL_DCCH_Message,
-                    (void **)&ul_dcch_msg,
-                    Rx_sdu,
-                    sdu_sizeP,
-                    0,
-                    0);
-    // xer_fprint(stdout, &asn_DEF_NR_UL_DCCH_Message, (void *)&ul_dcch_msg);
-
-    {
-        for (i = 0; i < sdu_sizeP; i++) {
-            LOG_T(NR_RRC, "%x.", Rx_sdu[i]);
-        }
+    LOG_T(NR_RRC, "\n");
+  }
 
-        LOG_T(NR_RRC, "\n");
-    }
+  if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) {
+    LOG_E(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" Failed to decode UL-DCCH (%zu bytes)\n",
+        PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
+        dec_rval.consumed);
+    return -1;
+  }
+
+  ue_context_p = rrc_gNB_get_ue_context(RC.nrrrc[ctxt_pP->module_id],
+                                          ctxt_pP->rnti);
 
-    if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) {
-        LOG_E(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" Failed to decode UL-DCCH (%zu bytes)\n",
+  if (ul_dcch_msg->message.present == NR_UL_DCCH_MessageType_PR_c1) {
+    switch (ul_dcch_msg->message.choice.c1->present) {
+      case NR_UL_DCCH_MessageType__c1_PR_NOTHING:
+        LOG_I(NR_RRC,
+            PROTOCOL_NR_RRC_CTXT_FMT" Received PR_NOTHING on UL-DCCH-Message\n",
+            PROTOCOL_NR_RRC_CTXT_ARGS(ctxt_pP));
+        break;
+
+      case NR_UL_DCCH_MessageType__c1_PR_rrcReconfigurationComplete:
+        if(!ue_context_p) {
+          LOG_I(NR_RRC, "Processing NR_RRCReconfigurationComplete UE %x, ue_context_p is NULL\n", ctxt_pP->rnti);
+          break;
+        }
+
+        LOG_DUMPMSG(NR_RRC, DEBUG_RRC, (char *)(Rx_sdu), sdu_sizeP,
+                    "[MSG] RRC Connection Reconfiguration Complete\n");
+        MSC_LOG_RX_MESSAGE(
+        MSC_RRC_GNB,
+        MSC_RRC_UE,
+        Rx_sdu,
+        sdu_sizeP,
+        MSC_AS_TIME_FMT" NR_RRCReconfigurationComplete UE %x size %u",
+        MSC_AS_TIME_ARGS(ctxt_pP),
+        ue_context_p->ue_context.rnti,
+        sdu_sizeP);
+        LOG_D(NR_RRC,
+            PROTOCOL_NR_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
+            "(RRCReconfigurationComplete) ---> RRC_gNB]\n",
             PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
-            dec_rval.consumed);
-        return -1;
-    }
+            DCCH,
+            sdu_sizeP);
+
+        if (ul_dcch_msg->message.choice.c1->present == NR_UL_DCCH_MessageType__c1_PR_rrcReconfigurationComplete) {
+          if (ul_dcch_msg->message.choice.c1->choice.rrcReconfigurationComplete->criticalExtensions.present ==
+            NR_RRCReconfigurationComplete__criticalExtensions_PR_rrcReconfigurationComplete)
+            rrc_gNB_process_RRCReconfigurationComplete(
+                ctxt_pP,
+                ue_context_p,
+                ul_dcch_msg->message.choice.c1->choice.rrcReconfigurationComplete->rrc_TransactionIdentifier);
+        }
+
+        rrc_gNB_send_NGAP_INITIAL_CONTEXT_SETUP_RESP(ctxt_pP, ue_context_p);
+
+        break;
+
+      case NR_UL_DCCH_MessageType__c1_PR_rrcSetupComplete:
+        if(!ue_context_p) {
+          LOG_I(NR_RRC, "Processing NR_RRCSetupComplete UE %x, ue_context_p is NULL\n", ctxt_pP->rnti);
+          break;
+        }
 
-    ue_context_p = rrc_gNB_get_ue_context(RC.nrrrc[ctxt_pP->module_id],
-                                            ctxt_pP->rnti);
-
-    if (ul_dcch_msg->message.present == NR_UL_DCCH_MessageType_PR_c1) {
-        switch (ul_dcch_msg->message.choice.c1->present) {
-            case NR_UL_DCCH_MessageType__c1_PR_NOTHING:
-                LOG_I(NR_RRC,
-                        PROTOCOL_NR_RRC_CTXT_FMT" Received PR_NOTHING on UL-DCCH-Message\n",
-                        PROTOCOL_NR_RRC_CTXT_ARGS(ctxt_pP));
-                break;
-
-            case NR_UL_DCCH_MessageType__c1_PR_rrcReconfigurationComplete:
-                if(!ue_context_p) {
-                    LOG_I(NR_RRC, "Processing NR_RRCReconfigurationComplete UE %x, ue_context_p is NULL\n", ctxt_pP->rnti);
-                    break;
-                }
-
-                LOG_DUMPMSG(NR_RRC, DEBUG_RRC, (char *)(Rx_sdu), sdu_sizeP,
-                            "[MSG] RRC Connection Reconfiguration Complete\n");
-                MSC_LOG_RX_MESSAGE(
+        LOG_DUMPMSG(NR_RRC, DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP,
+                    "[MSG] RRC SetupComplete\n");
+        MSC_LOG_RX_MESSAGE(
                 MSC_RRC_GNB,
                 MSC_RRC_UE,
                 Rx_sdu,
                 sdu_sizeP,
-                MSC_AS_TIME_FMT" NR_RRCReconfigurationComplete UE %x size %u",
+                MSC_AS_TIME_FMT" NR_RRCSetupComplete UE %x size %u",
                 MSC_AS_TIME_ARGS(ctxt_pP),
                 ue_context_p->ue_context.rnti,
                 sdu_sizeP);
-                LOG_D(NR_RRC,
-                    PROTOCOL_NR_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
-                    "(RRCReconfigurationComplete) ---> RRC_gNB]\n",
-                    PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
-                    DCCH,
-                    sdu_sizeP);
-
-                if (ul_dcch_msg->message.choice.c1->present == NR_UL_DCCH_MessageType__c1_PR_rrcReconfigurationComplete) {
-                    if (ul_dcch_msg->message.choice.c1->choice.rrcReconfigurationComplete->criticalExtensions.present == 
-                        NR_RRCReconfigurationComplete__criticalExtensions_PR_rrcReconfigurationComplete)
-                        rrc_gNB_process_RRCReconfigurationComplete(
-                            ctxt_pP,
-                            ue_context_p,
-                            ul_dcch_msg->message.choice.c1->choice.rrcReconfigurationComplete->rrc_TransactionIdentifier);
-                }
-
-                rrc_gNB_send_NGAP_INITIAL_CONTEXT_SETUP_RESP(ctxt_pP, ue_context_p);
-
-                break;
-
-            case NR_UL_DCCH_MessageType__c1_PR_rrcSetupComplete:
-                if(!ue_context_p) {
-                    LOG_I(NR_RRC, "Processing NR_RRCSetupComplete UE %x, ue_context_p is NULL\n", ctxt_pP->rnti);
-                    break;
-                }
-
-                LOG_DUMPMSG(NR_RRC, DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP,
-                            "[MSG] RRC SetupComplete\n");
-                MSC_LOG_RX_MESSAGE(
-                        MSC_RRC_GNB,
-                        MSC_RRC_UE,
-                        Rx_sdu,
-                        sdu_sizeP,
-                        MSC_AS_TIME_FMT" NR_RRCSetupComplete UE %x size %u",
-                        MSC_AS_TIME_ARGS(ctxt_pP),
-                        ue_context_p->ue_context.rnti,
-                        sdu_sizeP);
-                LOG_D(NR_RRC,
-                        PROTOCOL_NR_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
-                        "(RRCSetupComplete) ---> RRC_gNB\n",
-                        PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
-                        DCCH,
-                        sdu_sizeP);
-
-                if (ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.present == 
-                        NR_RRCSetupComplete__criticalExtensions_PR_rrcSetupComplete) {
-                    if (ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.choice.
-                        rrcSetupComplete->ng_5G_S_TMSI_Value != NULL) {
-                        if (ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.choice.
-                        rrcSetupComplete->ng_5G_S_TMSI_Value->present == NR_RRCSetupComplete_IEs__ng_5G_S_TMSI_Value_PR_ng_5G_S_TMSI_Part2) {
-                        // ng-5G-S-TMSI-Part2                  BIT STRING (SIZE (9))
-                        if (ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.choice.
-                            rrcSetupComplete->ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI_Part2.size != 2) {
-                            LOG_E(NR_RRC, "wrong ng_5G_S_TMSI_Part2 size, expected 2, provided %lu",
-                                        (long unsigned int)ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->
-                                        criticalExtensions.choice.rrcSetupComplete->
-                                        ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI_Part2.size);
-                            return -1;
-                        }
-
-                        if (ue_context_p->ue_context.ng_5G_S_TMSI_Part1 != 0) {
-                            ue_context_p->ue_context.ng_5G_S_TMSI_Part2 =
-                                            BIT_STRING_to_uint16(&ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->
-                                                criticalExtensions.choice.rrcSetupComplete->
-                                                ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI_Part2);
-                        }
-
-                        /* TODO */
-                    } else if (ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.choice.
-                        rrcSetupComplete->ng_5G_S_TMSI_Value->present == NR_RRCSetupComplete_IEs__ng_5G_S_TMSI_Value_PR_ng_5G_S_TMSI) {
-                        // NG-5G-S-TMSI ::=                         BIT STRING (SIZE (48))
-                        if (ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.choice.
-                            rrcSetupComplete->ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI.size != 6) {
-                            LOG_E(NR_RRC, "wrong ng_5G_S_TMSI size, expected 6, provided %lu",
-                                        (long unsigned int)ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->
-                                        criticalExtensions.choice.rrcSetupComplete->
-                                        ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI.size);
-                            return -1;
-                        }
-
-                            uint64_t fiveg_s_TMSI = bitStr_to_uint64(&ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->
-                                criticalExtensions.choice.rrcSetupComplete->ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI);
-                            LOG_I(NR_RRC, "Received rrcSetupComplete, 5g_s_TMSI: 0x%lX, amf_set_id: 0x%lX(%ld), amf_pointer: 0x%lX(%ld), 5g TMSI: 0x%X \n",
-                                fiveg_s_TMSI, fiveg_s_TMSI >> 38, fiveg_s_TMSI >> 38,
-                                (fiveg_s_TMSI >> 32) & 0x3F, (fiveg_s_TMSI >> 32) & 0x3F,
-                                (uint32_t)fiveg_s_TMSI);
-                            if (ue_context_p->ue_context.Initialue_identity_5g_s_TMSI.presence == TRUE) {
-                                ue_context_p->ue_context.Initialue_identity_5g_s_TMSI.amf_set_id = fiveg_s_TMSI >> 38;
-                                ue_context_p->ue_context.Initialue_identity_5g_s_TMSI.amf_pointer = (fiveg_s_TMSI >> 32) & 0x3F;
-                                ue_context_p->ue_context.Initialue_identity_5g_s_TMSI.fiveg_tmsi = (uint32_t)fiveg_s_TMSI;
-                            }
-                        }
-                    }
-
-                    rrc_gNB_process_RRCSetupComplete(
-                            ctxt_pP,
-                            ue_context_p,
-                            ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.choice.rrcSetupComplete);
-                    LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" UE State = RRC_CONNECTED \n",
-                        PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
-                }
-
-                ue_context_p->ue_context.ue_release_timer = 0;
-                break;
-            case NR_UL_DCCH_MessageType__c1_PR_securityModeComplete:
-                // to avoid segmentation fault
-                if(!ue_context_p) {
-                  LOG_I(NR_RRC, "Processing securityModeComplete UE %x, ue_context_p is NULL\n", ctxt_pP->rnti);
-                  break;
-                }
-
-                LOG_I(NR_RRC,
-                      PROTOCOL_NR_RRC_CTXT_UE_FMT" received securityModeComplete on UL-DCCH %d from UE\n",
-                      PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
-                      DCCH);
-                LOG_D(NR_RRC,
-                      PROTOCOL_NR_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
-                      "(securityModeComplete) ---> RRC_eNB\n",
-                      PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
-                      DCCH,
-                      sdu_sizeP);
-
-                if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-                  xer_fprint(stdout, &asn_DEF_NR_UL_DCCH_Message, (void *)ul_dcch_msg);
-                }
-
-                rrc_gNB_generate_UECapabilityEnquiry(ctxt_pP, ue_context_p);
-                //rrc_gNB_generate_defaultRRCReconfiguration(ctxt_pP, ue_context_p);
-                break;
-
-            case NR_UL_DCCH_MessageType__c1_PR_ueCapabilityInformation:
-                if(!ue_context_p) {
-                  LOG_I(NR_RRC, "Processing ueCapabilityInformation UE %x, ue_context_p is NULL\n", ctxt_pP->rnti);
-                  break;
-                }
-
-                LOG_DUMPMSG(NR_RRC,DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP,
-                        "[MSG] NR_RRC UECapablility Information\n");
-                    MSC_LOG_RX_MESSAGE(
-                    MSC_RRC_GNB,
-                    MSC_RRC_UE,
-                    Rx_sdu,
-                    sdu_sizeP,
-                    MSC_AS_TIME_FMT" ueCapabilityInformation UE %x size %u",
-                    MSC_AS_TIME_ARGS(ctxt_pP),
-                    ue_context_p->ue_context.rnti,
-                    sdu_sizeP);
-                LOG_I(NR_RRC,
-                    PROTOCOL_NR_RRC_CTXT_UE_FMT" received ueCapabilityInformation on UL-DCCH %d from UE\n",
-                    PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
-                    DCCH);
-                LOG_D(RRC,
+        LOG_D(NR_RRC,
                 PROTOCOL_NR_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
-                "(UECapabilityInformation) ---> RRC_eNB\n",
+                "(RRCSetupComplete) ---> RRC_gNB\n",
                 PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
                 DCCH,
                 sdu_sizeP);
-                if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-                    xer_fprint(stdout, &asn_DEF_NR_UL_DCCH_Message, (void *)ul_dcch_msg);
-                }
-                LOG_I(NR_RRC, "got UE capabilities for UE %x\n", ctxt_pP->rnti);
-                int eutra_index = -1;
-
-                if( ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.present == 
-                NR_UECapabilityInformation__criticalExtensions_PR_ueCapabilityInformation ) {
-                    for(i = 0;i < ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.count; i++){
-                        if(ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->rat_Type == 
-                            NR_RAT_Type_nr){
-                            if(ue_context_p->ue_context.UE_Capability_nr){
-                                ASN_STRUCT_FREE(asn_DEF_NR_UE_NR_Capability,ue_context_p->ue_context.UE_Capability_nr);
-                                ue_context_p->ue_context.UE_Capability_nr = 0;
-                            }
-
-                            dec_rval = uper_decode(NULL,
-                                                    &asn_DEF_NR_UE_NR_Capability,
-                                                    (void**)&ue_context_p->ue_context.UE_Capability_nr,
-                                                    ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->ue_CapabilityRAT_Container.buf,
-                                                    ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->ue_CapabilityRAT_Container.size,
-                                                    0,0);
-                            if(LOG_DEBUGFLAG(DEBUG_ASN1)){
-                                xer_fprint(stdout,&asn_DEF_NR_UE_NR_Capability,ue_context_p->ue_context.UE_Capability_nr);
-                            }
-
-                            if((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)){
-                                LOG_E(NR_RRC,PROTOCOL_NR_RRC_CTXT_UE_FMT" Failed to decode nr UE capabilities (%zu bytes)\n",
-                                PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),dec_rval.consumed);
-                            ASN_STRUCT_FREE(asn_DEF_NR_UE_NR_Capability,ue_context_p->ue_context.UE_Capability_nr);
-                            ue_context_p->ue_context.UE_Capability_nr = 0;  
-                            }
-
-                            ue_context_p->ue_context.UE_Capability_size = 
-                            ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->ue_CapabilityRAT_Container.size;
-                            if(eutra_index != -1){
-                              LOG_E(NR_RRC,"fatal: more than 1 eutra capability\n");
-                              exit(1);
-                            }
-							eutra_index = i;
-                        }
-
-                        if(ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->rat_Type ==
-                        NR_RAT_Type_eutra_nr){
-                        if(ue_context_p->ue_context.UE_Capability_MRDC){
-                            ASN_STRUCT_FREE(asn_DEF_NR_UE_MRDC_Capability,ue_context_p->ue_context.UE_Capability_MRDC);
-                            ue_context_p->ue_context.UE_Capability_MRDC = 0;
-                        }   
-                        dec_rval = uper_decode(NULL,
-                                                &asn_DEF_NR_UE_MRDC_Capability,
-                                                (void**)&ue_context_p->ue_context.UE_Capability_MRDC,
-                                                ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->ue_CapabilityRAT_Container.buf,
-                                                ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->ue_CapabilityRAT_Container.size,
-                                                0,0);
-                        
-                        if(LOG_DEBUGFLAG(DEBUG_ASN1)){
-                            xer_fprint(stdout,&asn_DEF_NR_UE_MRDC_Capability,ue_context_p->ue_context.UE_Capability_MRDC);
-                        }
-
-                        if((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)){
-                            LOG_E(NR_RRC,PROTOCOL_NR_RRC_CTXT_FMT" Failed to decode nr UE capabilities (%zu bytes)\n",
-                                PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),dec_rval.consumed);
-                            ASN_STRUCT_FREE(asn_DEF_NR_UE_MRDC_Capability,ue_context_p->ue_context.UE_Capability_MRDC);
-                            ue_context_p->ue_context.UE_Capability_MRDC = 0;
-                        }
-                            ue_context_p->ue_context.UE_MRDC_Capability_size = 
-                            ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->ue_CapabilityRAT_Container.size;
-                        }
-
-                        if(ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->rat_Type ==
-                        NR_RAT_Type_eutra){
-                          //TODO
-                        }
-                    }
-
-                    if(eutra_index == -1)
-                    break;
-                }
-            
-                rrc_gNB_generate_defaultRRCReconfiguration(ctxt_pP, ue_context_p);
-                break;
-
-            default:
-                break;
+
+        if (ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.present ==
+              NR_RRCSetupComplete__criticalExtensions_PR_rrcSetupComplete) {
+          if (ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.choice.
+            rrcSetupComplete->ng_5G_S_TMSI_Value != NULL) {
+            if (ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.choice.
+            rrcSetupComplete->ng_5G_S_TMSI_Value->present == NR_RRCSetupComplete_IEs__ng_5G_S_TMSI_Value_PR_ng_5G_S_TMSI_Part2) {
+            // ng-5G-S-TMSI-Part2                  BIT STRING (SIZE (9))
+              if (ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.choice.
+                rrcSetupComplete->ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI_Part2.size != 2) {
+                LOG_E(NR_RRC, "wrong ng_5G_S_TMSI_Part2 size, expected 2, provided %lu",
+                            (long unsigned int)ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->
+                            criticalExtensions.choice.rrcSetupComplete->
+                            ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI_Part2.size);
+                return -1;
+              }
+
+              if (ue_context_p->ue_context.ng_5G_S_TMSI_Part1 != 0) {
+                ue_context_p->ue_context.ng_5G_S_TMSI_Part2 =
+                                BIT_STRING_to_uint16(&ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->
+                                    criticalExtensions.choice.rrcSetupComplete->
+                                    ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI_Part2);
+              }
+
+            /* TODO */
+            } else if (ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.choice.
+              rrcSetupComplete->ng_5G_S_TMSI_Value->present == NR_RRCSetupComplete_IEs__ng_5G_S_TMSI_Value_PR_ng_5G_S_TMSI) {
+              // NG-5G-S-TMSI ::=                         BIT STRING (SIZE (48))
+              if (ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.choice.
+                rrcSetupComplete->ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI.size != 6) {
+                LOG_E(NR_RRC, "wrong ng_5G_S_TMSI size, expected 6, provided %lu",
+                            (long unsigned int)ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->
+                            criticalExtensions.choice.rrcSetupComplete->
+                            ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI.size);
+                return -1;
+              }
+
+              uint64_t fiveg_s_TMSI = bitStr_to_uint64(&ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->
+                  criticalExtensions.choice.rrcSetupComplete->ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI);
+              LOG_I(NR_RRC, "Received rrcSetupComplete, 5g_s_TMSI: 0x%lX, amf_set_id: 0x%lX(%ld), amf_pointer: 0x%lX(%ld), 5g TMSI: 0x%X \n",
+                  fiveg_s_TMSI, fiveg_s_TMSI >> 38, fiveg_s_TMSI >> 38,
+                  (fiveg_s_TMSI >> 32) & 0x3F, (fiveg_s_TMSI >> 32) & 0x3F,
+                  (uint32_t)fiveg_s_TMSI);
+              if (ue_context_p->ue_context.Initialue_identity_5g_s_TMSI.presence == TRUE) {
+                  ue_context_p->ue_context.Initialue_identity_5g_s_TMSI.amf_set_id = fiveg_s_TMSI >> 38;
+                  ue_context_p->ue_context.Initialue_identity_5g_s_TMSI.amf_pointer = (fiveg_s_TMSI >> 32) & 0x3F;
+                  ue_context_p->ue_context.Initialue_identity_5g_s_TMSI.fiveg_tmsi = (uint32_t)fiveg_s_TMSI;
+              }
+            }
+          }
+
+          rrc_gNB_process_RRCSetupComplete(
+                  ctxt_pP,
+                  ue_context_p,
+                  ul_dcch_msg->message.choice.c1->choice.rrcSetupComplete->criticalExtensions.choice.rrcSetupComplete);
+          LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT" UE State = RRC_CONNECTED \n",
+              PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP));
+        }
+
+        ue_context_p->ue_context.ue_release_timer = 0;
+        break;
+      case NR_UL_DCCH_MessageType__c1_PR_securityModeComplete:
+        // to avoid segmentation fault
+        if(!ue_context_p) {
+          LOG_I(NR_RRC, "Processing securityModeComplete UE %x, ue_context_p is NULL\n", ctxt_pP->rnti);
+          break;
+        }
+
+        LOG_I(NR_RRC,
+              PROTOCOL_NR_RRC_CTXT_UE_FMT" received securityModeComplete on UL-DCCH %d from UE\n",
+              PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
+              DCCH);
+        LOG_D(NR_RRC,
+              PROTOCOL_NR_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
+              "(securityModeComplete) ---> RRC_eNB\n",
+              PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
+              DCCH,
+              sdu_sizeP);
+
+        if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+          xer_fprint(stdout, &asn_DEF_NR_UL_DCCH_Message, (void *)ul_dcch_msg);
+        }
+
+        rrc_gNB_generate_UECapabilityEnquiry(ctxt_pP, ue_context_p);
+        //rrc_gNB_generate_defaultRRCReconfiguration(ctxt_pP, ue_context_p);
+        break;
+
+      case NR_UL_DCCH_MessageType__c1_PR_ueCapabilityInformation:
+        if(!ue_context_p) {
+          LOG_I(NR_RRC, "Processing ueCapabilityInformation UE %x, ue_context_p is NULL\n", ctxt_pP->rnti);
+          break;
+        }
+
+        LOG_DUMPMSG(NR_RRC,DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP,
+                "[MSG] NR_RRC UECapablility Information\n");
+            MSC_LOG_RX_MESSAGE(
+            MSC_RRC_GNB,
+            MSC_RRC_UE,
+            Rx_sdu,
+            sdu_sizeP,
+            MSC_AS_TIME_FMT" ueCapabilityInformation UE %x size %u",
+            MSC_AS_TIME_ARGS(ctxt_pP),
+            ue_context_p->ue_context.rnti,
+            sdu_sizeP);
+        LOG_I(NR_RRC,
+            PROTOCOL_NR_RRC_CTXT_UE_FMT" received ueCapabilityInformation on UL-DCCH %d from UE\n",
+            PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
+            DCCH);
+        LOG_D(RRC,
+        PROTOCOL_NR_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
+        "(UECapabilityInformation) ---> RRC_eNB\n",
+        PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
+        DCCH,
+        sdu_sizeP);
+        if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+            xer_fprint(stdout, &asn_DEF_NR_UL_DCCH_Message, (void *)ul_dcch_msg);
         }
+        LOG_I(NR_RRC, "got UE capabilities for UE %x\n", ctxt_pP->rnti);
+        int eutra_index = -1;
+
+        if( ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.present ==
+        NR_UECapabilityInformation__criticalExtensions_PR_ueCapabilityInformation ) {
+          for(i = 0;i < ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.count; i++){
+            if(ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->rat_Type ==
+              NR_RAT_Type_nr){
+              if(ue_context_p->ue_context.UE_Capability_nr){
+                ASN_STRUCT_FREE(asn_DEF_NR_UE_NR_Capability,ue_context_p->ue_context.UE_Capability_nr);
+                ue_context_p->ue_context.UE_Capability_nr = 0;
+              }
+
+              dec_rval = uper_decode(NULL,
+                                      &asn_DEF_NR_UE_NR_Capability,
+                                      (void**)&ue_context_p->ue_context.UE_Capability_nr,
+                                      ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->ue_CapabilityRAT_Container.buf,
+                                      ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->ue_CapabilityRAT_Container.size,
+                                      0,0);
+              if(LOG_DEBUGFLAG(DEBUG_ASN1)){
+                xer_fprint(stdout,&asn_DEF_NR_UE_NR_Capability,ue_context_p->ue_context.UE_Capability_nr);
+              }
+
+              if((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)){
+                LOG_E(NR_RRC,PROTOCOL_NR_RRC_CTXT_UE_FMT" Failed to decode nr UE capabilities (%zu bytes)\n",
+                PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),dec_rval.consumed);
+                ASN_STRUCT_FREE(asn_DEF_NR_UE_NR_Capability,ue_context_p->ue_context.UE_Capability_nr);
+                ue_context_p->ue_context.UE_Capability_nr = 0;
+              }
+
+              ue_context_p->ue_context.UE_Capability_size =
+              ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->ue_CapabilityRAT_Container.size;
+              if(eutra_index != -1){
+                LOG_E(NR_RRC,"fatal: more than 1 eutra capability\n");
+                exit(1);
+              }
+              eutra_index = i;
+            }
+
+            if(ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->rat_Type ==
+            NR_RAT_Type_eutra_nr){
+            if(ue_context_p->ue_context.UE_Capability_MRDC){
+              ASN_STRUCT_FREE(asn_DEF_NR_UE_MRDC_Capability,ue_context_p->ue_context.UE_Capability_MRDC);
+              ue_context_p->ue_context.UE_Capability_MRDC = 0;
+            }
+            dec_rval = uper_decode(NULL,
+                                    &asn_DEF_NR_UE_MRDC_Capability,
+                                    (void**)&ue_context_p->ue_context.UE_Capability_MRDC,
+                                    ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->ue_CapabilityRAT_Container.buf,
+                                    ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->ue_CapabilityRAT_Container.size,
+                                    0,0);
+
+            if(LOG_DEBUGFLAG(DEBUG_ASN1)){
+              xer_fprint(stdout,&asn_DEF_NR_UE_MRDC_Capability,ue_context_p->ue_context.UE_Capability_MRDC);
+            }
+
+            if((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)){
+              LOG_E(NR_RRC,PROTOCOL_NR_RRC_CTXT_FMT" Failed to decode nr UE capabilities (%zu bytes)\n",
+                  PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),dec_rval.consumed);
+              ASN_STRUCT_FREE(asn_DEF_NR_UE_MRDC_Capability,ue_context_p->ue_context.UE_Capability_MRDC);
+              ue_context_p->ue_context.UE_Capability_MRDC = 0;
+            }
+              ue_context_p->ue_context.UE_MRDC_Capability_size =
+              ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->ue_CapabilityRAT_Container.size;
+            }
+
+            if(ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList->list.array[i]->rat_Type ==
+            NR_RAT_Type_eutra){
+              //TODO
+            }
+          }
+
+          if(eutra_index == -1)
+          break;
+        }
+
+        rrc_gNB_generate_defaultRRCReconfiguration(ctxt_pP, ue_context_p);
+        break;
+
+      default:
+        break;
     }
-    return 0;
+  }
+  return 0;
 }
 
 void rrc_gNB_process_release_request(const module_id_t gnb_mod_idP, x2ap_ENDC_sgnb_release_request_t *m)
@@ -1279,7 +1279,7 @@ void *rrc_gnb_task(void *args_p) {
 
     /* RRC_SUBFRAME_PROCESS is sent every subframe, do not log it */
     if (ITTI_MSG_ID(msg_p) != RRC_SUBFRAME_PROCESS)
-    LOG_I(NR_RRC,"Received message %s\n",msg_name_p);
+      LOG_I(NR_RRC,"Received message %s\n",msg_name_p);
 
     switch (ITTI_MSG_ID(msg_p)) {
       case TERMINATE_MESSAGE:
@@ -1310,9 +1310,9 @@ void *rrc_gnb_task(void *args_p) {
                 NR_RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size);
 
         if (NR_RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size >= CCCH_SDU_SIZE) {
-            LOG_I(NR_RRC, "CCCH message has size %d > %d\n",
-                NR_RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size,CCCH_SDU_SIZE);
-            break;
+          LOG_I(NR_RRC, "CCCH message has size %d > %d\n",
+              NR_RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size,CCCH_SDU_SIZE);
+          break;
       }
 
       nr_rrc_gNB_decode_ccch(&ctxt,
@@ -1481,15 +1481,15 @@ rrc_gNB_generate_SecurityModeCommand(
 
   LOG_I(NR_RRC,"calling rrc_data_req :securityModeCommand\n");
 #ifdef ITTI_SIM
-			MessageDef *message_p;
-      uint8_t *message_buffer;
-      message_buffer = itti_malloc (TASK_RRC_GNB_SIM, TASK_RRC_UE_SIM,size);
-      memcpy (message_buffer, buffer, size);
-			message_p = itti_alloc_new_message (TASK_RRC_GNB_SIM, GNB_RRC_DCCH_DATA_IND);
-			GNB_RRC_DCCH_DATA_IND (message_p).rbid = DCCH;
-			GNB_RRC_DCCH_DATA_IND (message_p).sdu = message_buffer;
-			GNB_RRC_DCCH_DATA_IND (message_p).size	= size;
-			itti_send_msg_to_task (TASK_RRC_UE_SIM, ctxt_pP->instance, message_p);
+  MessageDef *message_p;
+  uint8_t *message_buffer;
+  message_buffer = itti_malloc (TASK_RRC_GNB_SIM, TASK_RRC_UE_SIM,size);
+  memcpy (message_buffer, buffer, size);
+  message_p = itti_alloc_new_message (TASK_RRC_GNB_SIM, GNB_RRC_DCCH_DATA_IND);
+  GNB_RRC_DCCH_DATA_IND (message_p).rbid = DCCH;
+  GNB_RRC_DCCH_DATA_IND (message_p).sdu = message_buffer;
+  GNB_RRC_DCCH_DATA_IND (message_p).size	= size;
+  itti_send_msg_to_task (TASK_RRC_UE_SIM, ctxt_pP->instance, message_p);
 #else
   nr_rrc_data_req(ctxt_pP,
                DCCH,
@@ -1538,15 +1538,15 @@ rrc_gNB_generate_UECapabilityEnquiry(
     rrc_gNB_mui,
     size);
 #ifdef ITTI_SIM
-			  MessageDef *message_p;
-        uint8_t *message_buffer;
-        message_buffer = itti_malloc (TASK_RRC_GNB_SIM, TASK_RRC_UE_SIM, size);
-        memcpy (message_buffer, buffer, size);
-			  message_p = itti_alloc_new_message (TASK_RRC_GNB_SIM, GNB_RRC_DCCH_DATA_IND);
-			  GNB_RRC_DCCH_DATA_IND (message_p).rbid = DCCH;
-			  GNB_RRC_DCCH_DATA_IND (message_p).sdu = message_buffer;
-			  GNB_RRC_DCCH_DATA_IND (message_p).size  = size;
-			  itti_send_msg_to_task (TASK_RRC_UE_SIM, ctxt_pP->instance, message_p);
+  MessageDef *message_p;
+  uint8_t *message_buffer;
+  message_buffer = itti_malloc (TASK_RRC_GNB_SIM, TASK_RRC_UE_SIM, size);
+  memcpy (message_buffer, buffer, size);
+  message_p = itti_alloc_new_message (TASK_RRC_GNB_SIM, GNB_RRC_DCCH_DATA_IND);
+  GNB_RRC_DCCH_DATA_IND (message_p).rbid = DCCH;
+  GNB_RRC_DCCH_DATA_IND (message_p).sdu = message_buffer;
+  GNB_RRC_DCCH_DATA_IND (message_p).size  = size;
+  itti_send_msg_to_task (TASK_RRC_UE_SIM, ctxt_pP->instance, message_p);
 #else
   nr_rrc_data_req(
     ctxt_pP,
diff --git a/openair2/RRC/NR/rrc_gNB_NGAP.c b/openair2/RRC/NR/rrc_gNB_NGAP.c
index 3d236859cd0fd0b439888b9686c895efd96ef1df..03174213ce17ad1f47fd32b56a91cbb01487182b 100644
--- a/openair2/RRC/NR/rrc_gNB_NGAP.c
+++ b/openair2/RRC/NR/rrc_gNB_NGAP.c
@@ -66,15 +66,15 @@ get_next_ue_initial_id(
 )
 //------------------------------------------------------------------------------
 {
-    static uint16_t ue_initial_id[NUMBER_OF_gNB_MAX];
-    ue_initial_id[mod_id]++;
+  static uint16_t ue_initial_id[NUMBER_OF_gNB_MAX];
+  ue_initial_id[mod_id]++;
 
-    /* Never use UE_INITIAL_ID_INVALID this is the invalid id! */
-    if (ue_initial_id[mod_id] == UE_INITIAL_ID_INVALID) {
-        ue_initial_id[mod_id]++;
-    }
+  /* Never use UE_INITIAL_ID_INVALID this is the invalid id! */
+  if (ue_initial_id[mod_id] == UE_INITIAL_ID_INVALID) {
+    ue_initial_id[mod_id]++;
+  }
 
-    return ue_initial_id[mod_id];
+  return ue_initial_id[mod_id];
 }
 
 //------------------------------------------------------------------------------
@@ -90,11 +90,11 @@ rrc_gNB_NGAP_get_ue_ids(
 )
 //------------------------------------------------------------------------------
 {
-    rrc_ue_ngap_ids_t *result = NULL;
+  rrc_ue_ngap_ids_t *result = NULL;
 
-    /* TODO */
+  /* TODO */
 
-    return result;
+  return result;
 }
 
 //------------------------------------------------------------------------------
@@ -106,14 +106,14 @@ rrc_gNB_get_ue_context_from_ngap_ids(
 ) 
 //------------------------------------------------------------------------------
 {
-    rrc_ue_ngap_ids_t *temp = NULL;
-    temp = rrc_gNB_NGAP_get_ue_ids(RC.nrrrc[GNB_INSTANCE_TO_MODULE_ID(instanceP)], ue_initial_idP, gNB_ue_ngap_idP);
+  rrc_ue_ngap_ids_t *temp = NULL;
+  temp = rrc_gNB_NGAP_get_ue_ids(RC.nrrrc[GNB_INSTANCE_TO_MODULE_ID(instanceP)], ue_initial_idP, gNB_ue_ngap_idP);
 
-    if (temp != NULL) {
-        return rrc_gNB_get_ue_context(RC.nrrrc[GNB_INSTANCE_TO_MODULE_ID(instanceP)], temp->ue_rnti);
-    }
+  if (temp != NULL) {
+    return rrc_gNB_get_ue_context(RC.nrrrc[GNB_INSTANCE_TO_MODULE_ID(instanceP)], temp->ue_rnti);
+  }
 
-    return NULL;
+  return NULL;
 }
 
 //------------------------------------------------------------------------------
@@ -125,49 +125,49 @@ nr_rrc_pdcp_config_security(
 )
 //------------------------------------------------------------------------------
 {
-    NR_SRB_ToAddModList_t              *SRB_configList = ue_context_pP->ue_context.SRB_configList;
-    uint8_t                            *kRRCenc = NULL;
-    uint8_t                            *kRRCint = NULL;
-    uint8_t                            *kUPenc = NULL;
-    pdcp_t                             *pdcp_p   = NULL;
-    static int                          print_keys= 1;
-    hashtable_rc_t                      h_rc;
-    hash_key_t                          key;
+  NR_SRB_ToAddModList_t              *SRB_configList = ue_context_pP->ue_context.SRB_configList;
+  uint8_t                            *kRRCenc = NULL;
+  uint8_t                            *kRRCint = NULL;
+  uint8_t                            *kUPenc = NULL;
+  pdcp_t                             *pdcp_p   = NULL;
+  static int                          print_keys= 1;
+  hashtable_rc_t                      h_rc;
+  hash_key_t                          key;
 
 #ifndef PHYSIM
-    /* Derive the keys from kgnb */
-    if (SRB_configList != NULL) {
-        derive_key_up_enc(ue_context_pP->ue_context.ciphering_algorithm,
-                        ue_context_pP->ue_context.kgnb,
-                        &kUPenc);
-    }
+  /* Derive the keys from kgnb */
+  if (SRB_configList != NULL) {
+    derive_key_up_enc(ue_context_pP->ue_context.ciphering_algorithm,
+                    ue_context_pP->ue_context.kgnb,
+                    &kUPenc);
+  }
 
-    derive_key_rrc_enc(ue_context_pP->ue_context.ciphering_algorithm,
-                        ue_context_pP->ue_context.kgnb,
-                        &kRRCenc);
-    derive_key_rrc_int(ue_context_pP->ue_context.integrity_algorithm,
-                        ue_context_pP->ue_context.kgnb,
-                        &kRRCint);
+  derive_key_rrc_enc(ue_context_pP->ue_context.ciphering_algorithm,
+                      ue_context_pP->ue_context.kgnb,
+                      &kRRCenc);
+  derive_key_rrc_int(ue_context_pP->ue_context.integrity_algorithm,
+                      ue_context_pP->ue_context.kgnb,
+                      &kRRCint);
 #endif
-    if (!IS_SOFTMODEM_IQPLAYER) {
-        SET_LOG_DUMP(DEBUG_SECURITY) ;
-    }
+  if (!IS_SOFTMODEM_IQPLAYER) {
+    SET_LOG_DUMP(DEBUG_SECURITY) ;
+  }
 
 
-    if ( LOG_DUMPFLAG( DEBUG_SECURITY ) ) {
-        if (print_keys == 1 ) {
-        print_keys =0;
-        LOG_DUMPMSG(NR_RRC, DEBUG_SECURITY, ue_context_pP->ue_context.kgnb, 32,"\nKgNB:" );
-        LOG_DUMPMSG(NR_RRC, DEBUG_SECURITY, kRRCenc, 32,"\nKRRCenc:" );
-        LOG_DUMPMSG(NR_RRC, DEBUG_SECURITY, kRRCint, 32,"\nKRRCint:" );
-        }
+  if ( LOG_DUMPFLAG( DEBUG_SECURITY ) ) {
+    if (print_keys == 1 ) {
+      print_keys =0;
+      LOG_DUMPMSG(NR_RRC, DEBUG_SECURITY, ue_context_pP->ue_context.kgnb, 32,"\nKgNB:" );
+      LOG_DUMPMSG(NR_RRC, DEBUG_SECURITY, kRRCenc, 32,"\nKRRCenc:" );
+      LOG_DUMPMSG(NR_RRC, DEBUG_SECURITY, kRRCint, 32,"\nKRRCint:" );
     }
+  }
 
-    key = PDCP_COLL_KEY_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, DCCH, SRB_FLAG_YES);
-    h_rc = hashtable_get(pdcp_coll_p, key, (void **)&pdcp_p);
+  key = PDCP_COLL_KEY_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, DCCH, SRB_FLAG_YES);
+  h_rc = hashtable_get(pdcp_coll_p, key, (void **)&pdcp_p);
 
-    if (h_rc == HASH_TABLE_OK) {
-        pdcp_config_set_security(
+  if (h_rc == HASH_TABLE_OK) {
+    pdcp_config_set_security(
         ctxt_pP,
         pdcp_p,
         DCCH,
@@ -179,12 +179,12 @@ nr_rrc_pdcp_config_security(
         kRRCenc,
         kRRCint,
         kUPenc);
-    } else {
-        LOG_E(NR_RRC,
-            PROTOCOL_NR_RRC_CTXT_UE_FMT"Could not get PDCP instance for SRB DCCH %u\n",
-            PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
-            DCCH);
-    }
+  } else {
+    LOG_E(NR_RRC,
+        PROTOCOL_NR_RRC_CTXT_UE_FMT"Could not get PDCP instance for SRB DCCH %u\n",
+        PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
+        DCCH);
+  }
 }
 
 //------------------------------------------------------------------------------
@@ -199,111 +199,111 @@ rrc_gNB_send_NGAP_NAS_FIRST_REQ(
 )
 //------------------------------------------------------------------------------
 {
-    // gNB_RRC_INST *rrc = RC.nrrrc[ctxt_pP->module_id];
-    MessageDef         *message_p         = NULL;
-    rrc_ue_ngap_ids_t  *rrc_ue_ngap_ids_p = NULL;
-    // hashtable_rc_t      h_rc;
-
-    message_p = itti_alloc_new_message(TASK_RRC_GNB, NGAP_NAS_FIRST_REQ);
-    memset(&message_p->ittiMsg.ngap_nas_first_req, 0, sizeof(ngap_nas_first_req_t));
-    ue_context_pP->ue_context.ue_initial_id = get_next_ue_initial_id(ctxt_pP->module_id);
-    NGAP_NAS_FIRST_REQ(message_p).ue_initial_id = ue_context_pP->ue_context.ue_initial_id;
-    rrc_ue_ngap_ids_p = malloc(sizeof(rrc_ue_ngap_ids_t));
-    rrc_ue_ngap_ids_p->ue_initial_id  = ue_context_pP->ue_context.ue_initial_id;
-    rrc_ue_ngap_ids_p->gNB_ue_ngap_id = UE_INITIAL_ID_INVALID;
-    rrc_ue_ngap_ids_p->ue_rnti        = ctxt_pP->rnti;
-
-    // h_rc = hashtable_insert(RC.nrrrc[ctxt_pP->module_id]->initial_id2_s1ap_ids,
-    //                         (hash_key_t)ue_context_pP->ue_context.ue_initial_id,
-    //                         rrc_ue_s1ap_ids_p);
-
-    // if (h_rc != HASH_TABLE_OK) {
-    //   LOG_E(S1AP, "[eNB %d] Error while hashtable_insert in initial_id2_s1ap_ids ue_initial_id %u\n",
-    //         ctxt_pP->module_id,
-    //         ue_context_pP->ue_context.ue_initial_id);
-    // }
-
-    /* Assume that cause is coded in the same way in RRC and NGap, just check that the value is in NGap range */
-    AssertFatal(ue_context_pP->ue_context.establishment_cause < NGAP_RRC_CAUSE_LAST,
-                "Establishment cause invalid (%jd/%d) for gNB %d!",
-                ue_context_pP->ue_context.establishment_cause,
-                NGAP_RRC_CAUSE_LAST,
-                ctxt_pP->module_id);
-    NGAP_NAS_FIRST_REQ(message_p).establishment_cause = ue_context_pP->ue_context.establishment_cause;
-    
-    /* Forward NAS message */
-    NGAP_NAS_FIRST_REQ(message_p).nas_pdu.buffer = rrcSetupComplete->dedicatedNAS_Message.buf;
-    NGAP_NAS_FIRST_REQ(message_p).nas_pdu.length = rrcSetupComplete->dedicatedNAS_Message.size;
-    // extract_imsi(NGAP_NAS_FIRST_REQ (message_p).nas_pdu.buffer,
-    //              NGAP_NAS_FIRST_REQ (message_p).nas_pdu.length,
-    //              ue_context_pP);
-
-    /* Fill UE identities with available information */
-    NGAP_NAS_FIRST_REQ(message_p).ue_identity.presenceMask       = NGAP_UE_IDENTITIES_NONE;
-    /* Fill s-TMSI */
-    NGAP_NAS_FIRST_REQ(message_p).ue_identity.s_tmsi.amf_set_id  = ue_context_pP->ue_context.Initialue_identity_5g_s_TMSI.amf_set_id;
-    NGAP_NAS_FIRST_REQ(message_p).ue_identity.s_tmsi.amf_pointer = ue_context_pP->ue_context.Initialue_identity_5g_s_TMSI.amf_pointer;
-    NGAP_NAS_FIRST_REQ(message_p).ue_identity.s_tmsi.m_tmsi      = ue_context_pP->ue_context.Initialue_identity_5g_s_TMSI.fiveg_tmsi;
-
-    /* selected_plmn_identity: IE is 1-based, convert to 0-based (C array) */
-    int selected_plmn_identity = rrcSetupComplete->selectedPLMN_Identity - 1;
-    NGAP_NAS_FIRST_REQ(message_p).selected_plmn_identity = selected_plmn_identity;
-
-    if (rrcSetupComplete->registeredAMF != NULL) {
-        NR_RegisteredAMF_t *r_amf = rrcSetupComplete->registeredAMF;
-        NGAP_NAS_FIRST_REQ(message_p).ue_identity.presenceMask |= NGAP_UE_IDENTITIES_guami;
-
-        if (r_amf->plmn_Identity != NULL) {
-            if ((r_amf->plmn_Identity->mcc != NULL) && (r_amf->plmn_Identity->mcc->list.count > 0)) {
-                /* Use first indicated PLMN MCC if it is defined */
-                NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.mcc = *r_amf->plmn_Identity->mcc->list.array[selected_plmn_identity];
-                LOG_I(NGAP, "[gNB %d] Build NGAP_NAS_FIRST_REQ adding in s_TMSI: GUMMEI MCC %u ue %x\n",
-                    ctxt_pP->module_id,
-                    NGAP_NAS_FIRST_REQ (message_p).ue_identity.guami.mcc,
-                    ue_context_pP->ue_context.rnti);
-            }
-
-            if (r_amf->plmn_Identity->mnc.list.count > 0) {
-                /* Use first indicated PLMN MNC if it is defined */
-                NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.mnc = *r_amf->plmn_Identity->mnc.list.array[selected_plmn_identity];
-                LOG_I(NGAP, "[gNB %d] Build NGAP_NAS_FIRST_REQ adding in s_TMSI: GUMMEI MNC %u ue %x\n",
-                    ctxt_pP->module_id,
-                    NGAP_NAS_FIRST_REQ (message_p).ue_identity.guami.mnc,
-                    ue_context_pP->ue_context.rnti);
-            }
-        } else {
-            /* TODO */
-        }
-
-        /* amf_Identifier */
-        uint32_t amf_Id = BIT_STRING_to_uint32(&r_amf->amf_Identifier);
-        NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.amf_region_id = amf_Id >> 16;
-        NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.amf_set_id    = ue_context_pP->ue_context.Initialue_identity_5g_s_TMSI.amf_set_id;
-        NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.amf_pointer   = ue_context_pP->ue_context.Initialue_identity_5g_s_TMSI.amf_pointer;
-
-        ue_context_pP->ue_context.ue_guami.mcc = NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.mcc;
-        ue_context_pP->ue_context.ue_guami.mnc = NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.mnc;
-        ue_context_pP->ue_context.ue_guami.mnc_len = NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.mnc_len;
-        ue_context_pP->ue_context.ue_guami.amf_region_id = NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.amf_region_id;
-        ue_context_pP->ue_context.ue_guami.amf_set_id = NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.amf_set_id;
-        ue_context_pP->ue_context.ue_guami.amf_pointer = NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.amf_pointer;
-
-        MSC_LOG_TX_MESSAGE(MSC_NGAP_GNB,
-                           MSC_NGAP_AMF,
-                           (const char *)&message_p->ittiMsg.ngap_nas_first_req,
-                           sizeof(ngap_nas_first_req_t),
-                           MSC_AS_TIME_FMT" NGAP_NAS_FIRST_REQ gNB %u UE %x",
-                           MSC_AS_TIME_ARGS(ctxt_pP),
-                           ctxt_pP->module_id,
-                           ctxt_pP->rnti);
-        LOG_I(NGAP, "[gNB %d] Build NGAP_NAS_FIRST_REQ adding in s_TMSI: GUAMI amf_set_id %u amf_region_id %u ue %x\n",
-              ctxt_pP->module_id,
-              NGAP_NAS_FIRST_REQ (message_p).ue_identity.guami.amf_set_id,
-              NGAP_NAS_FIRST_REQ (message_p).ue_identity.guami.amf_region_id,
-              ue_context_pP->ue_context.rnti);
+  // gNB_RRC_INST *rrc = RC.nrrrc[ctxt_pP->module_id];
+  MessageDef         *message_p         = NULL;
+  rrc_ue_ngap_ids_t  *rrc_ue_ngap_ids_p = NULL;
+  // hashtable_rc_t      h_rc;
+
+  message_p = itti_alloc_new_message(TASK_RRC_GNB, NGAP_NAS_FIRST_REQ);
+  memset(&message_p->ittiMsg.ngap_nas_first_req, 0, sizeof(ngap_nas_first_req_t));
+  ue_context_pP->ue_context.ue_initial_id = get_next_ue_initial_id(ctxt_pP->module_id);
+  NGAP_NAS_FIRST_REQ(message_p).ue_initial_id = ue_context_pP->ue_context.ue_initial_id;
+  rrc_ue_ngap_ids_p = malloc(sizeof(rrc_ue_ngap_ids_t));
+  rrc_ue_ngap_ids_p->ue_initial_id  = ue_context_pP->ue_context.ue_initial_id;
+  rrc_ue_ngap_ids_p->gNB_ue_ngap_id = UE_INITIAL_ID_INVALID;
+  rrc_ue_ngap_ids_p->ue_rnti        = ctxt_pP->rnti;
+
+  // h_rc = hashtable_insert(RC.nrrrc[ctxt_pP->module_id]->initial_id2_s1ap_ids,
+  //                         (hash_key_t)ue_context_pP->ue_context.ue_initial_id,
+  //                         rrc_ue_s1ap_ids_p);
+
+  // if (h_rc != HASH_TABLE_OK) {
+  //   LOG_E(S1AP, "[eNB %d] Error while hashtable_insert in initial_id2_s1ap_ids ue_initial_id %u\n",
+  //         ctxt_pP->module_id,
+  //         ue_context_pP->ue_context.ue_initial_id);
+  // }
+
+  /* Assume that cause is coded in the same way in RRC and NGap, just check that the value is in NGap range */
+  AssertFatal(ue_context_pP->ue_context.establishment_cause < NGAP_RRC_CAUSE_LAST,
+              "Establishment cause invalid (%jd/%d) for gNB %d!",
+              ue_context_pP->ue_context.establishment_cause,
+              NGAP_RRC_CAUSE_LAST,
+              ctxt_pP->module_id);
+  NGAP_NAS_FIRST_REQ(message_p).establishment_cause = ue_context_pP->ue_context.establishment_cause;
+
+  /* Forward NAS message */
+  NGAP_NAS_FIRST_REQ(message_p).nas_pdu.buffer = rrcSetupComplete->dedicatedNAS_Message.buf;
+  NGAP_NAS_FIRST_REQ(message_p).nas_pdu.length = rrcSetupComplete->dedicatedNAS_Message.size;
+  // extract_imsi(NGAP_NAS_FIRST_REQ (message_p).nas_pdu.buffer,
+  //              NGAP_NAS_FIRST_REQ (message_p).nas_pdu.length,
+  //              ue_context_pP);
+
+  /* Fill UE identities with available information */
+  NGAP_NAS_FIRST_REQ(message_p).ue_identity.presenceMask       = NGAP_UE_IDENTITIES_NONE;
+  /* Fill s-TMSI */
+  NGAP_NAS_FIRST_REQ(message_p).ue_identity.s_tmsi.amf_set_id  = ue_context_pP->ue_context.Initialue_identity_5g_s_TMSI.amf_set_id;
+  NGAP_NAS_FIRST_REQ(message_p).ue_identity.s_tmsi.amf_pointer = ue_context_pP->ue_context.Initialue_identity_5g_s_TMSI.amf_pointer;
+  NGAP_NAS_FIRST_REQ(message_p).ue_identity.s_tmsi.m_tmsi      = ue_context_pP->ue_context.Initialue_identity_5g_s_TMSI.fiveg_tmsi;
+
+  /* selected_plmn_identity: IE is 1-based, convert to 0-based (C array) */
+  int selected_plmn_identity = rrcSetupComplete->selectedPLMN_Identity - 1;
+  NGAP_NAS_FIRST_REQ(message_p).selected_plmn_identity = selected_plmn_identity;
+
+  if (rrcSetupComplete->registeredAMF != NULL) {
+    NR_RegisteredAMF_t *r_amf = rrcSetupComplete->registeredAMF;
+    NGAP_NAS_FIRST_REQ(message_p).ue_identity.presenceMask |= NGAP_UE_IDENTITIES_guami;
+
+    if (r_amf->plmn_Identity != NULL) {
+      if ((r_amf->plmn_Identity->mcc != NULL) && (r_amf->plmn_Identity->mcc->list.count > 0)) {
+        /* Use first indicated PLMN MCC if it is defined */
+        NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.mcc = *r_amf->plmn_Identity->mcc->list.array[selected_plmn_identity];
+        LOG_I(NGAP, "[gNB %d] Build NGAP_NAS_FIRST_REQ adding in s_TMSI: GUMMEI MCC %u ue %x\n",
+            ctxt_pP->module_id,
+            NGAP_NAS_FIRST_REQ (message_p).ue_identity.guami.mcc,
+            ue_context_pP->ue_context.rnti);
+      }
+
+      if (r_amf->plmn_Identity->mnc.list.count > 0) {
+        /* Use first indicated PLMN MNC if it is defined */
+        NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.mnc = *r_amf->plmn_Identity->mnc.list.array[selected_plmn_identity];
+        LOG_I(NGAP, "[gNB %d] Build NGAP_NAS_FIRST_REQ adding in s_TMSI: GUMMEI MNC %u ue %x\n",
+            ctxt_pP->module_id,
+            NGAP_NAS_FIRST_REQ (message_p).ue_identity.guami.mnc,
+            ue_context_pP->ue_context.rnti);
+      }
+    } else {
+        /* TODO */
     }
 
-    itti_send_msg_to_task (TASK_NGAP, ctxt_pP->instance, message_p);
+    /* amf_Identifier */
+    uint32_t amf_Id = BIT_STRING_to_uint32(&r_amf->amf_Identifier);
+    NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.amf_region_id = amf_Id >> 16;
+    NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.amf_set_id    = ue_context_pP->ue_context.Initialue_identity_5g_s_TMSI.amf_set_id;
+    NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.amf_pointer   = ue_context_pP->ue_context.Initialue_identity_5g_s_TMSI.amf_pointer;
+
+    ue_context_pP->ue_context.ue_guami.mcc = NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.mcc;
+    ue_context_pP->ue_context.ue_guami.mnc = NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.mnc;
+    ue_context_pP->ue_context.ue_guami.mnc_len = NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.mnc_len;
+    ue_context_pP->ue_context.ue_guami.amf_region_id = NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.amf_region_id;
+    ue_context_pP->ue_context.ue_guami.amf_set_id = NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.amf_set_id;
+    ue_context_pP->ue_context.ue_guami.amf_pointer = NGAP_NAS_FIRST_REQ(message_p).ue_identity.guami.amf_pointer;
+
+    MSC_LOG_TX_MESSAGE(MSC_NGAP_GNB,
+                       MSC_NGAP_AMF,
+                       (const char *)&message_p->ittiMsg.ngap_nas_first_req,
+                       sizeof(ngap_nas_first_req_t),
+                       MSC_AS_TIME_FMT" NGAP_NAS_FIRST_REQ gNB %u UE %x",
+                       MSC_AS_TIME_ARGS(ctxt_pP),
+                       ctxt_pP->module_id,
+                       ctxt_pP->rnti);
+    LOG_I(NGAP, "[gNB %d] Build NGAP_NAS_FIRST_REQ adding in s_TMSI: GUAMI amf_set_id %u amf_region_id %u ue %x\n",
+          ctxt_pP->module_id,
+          NGAP_NAS_FIRST_REQ (message_p).ue_identity.guami.amf_set_id,
+          NGAP_NAS_FIRST_REQ (message_p).ue_identity.guami.amf_region_id,
+          ue_context_pP->ue_context.rnti);
+  }
+
+  itti_send_msg_to_task (TASK_NGAP, ctxt_pP->instance, message_p);
 }
 
 //------------------------------------------------------------------------------
@@ -315,69 +315,69 @@ rrc_gNB_process_NGAP_INITIAL_CONTEXT_SETUP_REQ(
 )
 //------------------------------------------------------------------------------
 {
-    uint16_t                        ue_initial_id;
-    uint32_t                        gNB_ue_ngap_id;
-    rrc_gNB_ue_context_t            *ue_context_p = NULL;
-    protocol_ctxt_t                 ctxt;
-
-    ue_initial_id  = NGAP_INITIAL_CONTEXT_SETUP_REQ(msg_p).ue_initial_id;
-    gNB_ue_ngap_id = NGAP_INITIAL_CONTEXT_SETUP_REQ(msg_p).gNB_ue_ngap_id;
-
-    ue_context_p   = rrc_gNB_get_ue_context_from_ngap_ids(instance, ue_initial_id, gNB_ue_ngap_id);
-    LOG_I(NR_RRC, "[gNB %d] Received %s: ue_initial_id %d, gNB_ue_ngap_id %d \n",
-        instance, msg_name, ue_initial_id, gNB_ue_ngap_id);
-
-    if (ue_context_p == NULL) {
-        /* Can not associate this message to an UE index, send a failure to NGAP and discard it! */
-        MessageDef *msg_fail_p = NULL;
-        LOG_W(NR_RRC, "[gNB %d] In NGAP_INITIAL_CONTEXT_SETUP_REQ: unknown UE from S1AP ids (%d, %d)\n", instance, ue_initial_id, gNB_ue_ngap_id);
-        msg_fail_p = itti_alloc_new_message (TASK_RRC_GNB, NGAP_INITIAL_CONTEXT_SETUP_FAIL);
-        NGAP_INITIAL_CONTEXT_SETUP_FAIL (msg_fail_p).gNB_ue_ngap_id = gNB_ue_ngap_id;
-        // TODO add failure cause when defined!
-        itti_send_msg_to_task (TASK_NGAP, instance, msg_fail_p);
-        return (-1);
-    } else {
-        PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, GNB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
-        ue_context_p->ue_context.gNB_ue_ngap_id = NGAP_INITIAL_CONTEXT_SETUP_REQ (msg_p).gNB_ue_ngap_id;
-        ue_context_p->ue_context.amf_ue_ngap_id = NGAP_INITIAL_CONTEXT_SETUP_REQ (msg_p).amf_ue_ngap_id;
-        
-        /* NAS PDU */
-        if (ue_context_p->ue_context.nas_pdu_flag == 1) {
-            ue_context_p->ue_context.nas_pdu.length = NGAP_INITIAL_CONTEXT_SETUP_REQ(msg_p).nas_pdu.length;
-            ue_context_p->ue_context.nas_pdu.buffer = NGAP_INITIAL_CONTEXT_SETUP_REQ(msg_p).nas_pdu.buffer;
-        }
-        
-        /* TODO security */
-        rrc_gNB_process_security(&ctxt, ue_context_p, &(NGAP_INITIAL_CONTEXT_SETUP_REQ(msg_p).security_capabilities));
-        
-        uint8_t send_security_mode_command = TRUE;
+  uint16_t                        ue_initial_id;
+  uint32_t                        gNB_ue_ngap_id;
+  rrc_gNB_ue_context_t            *ue_context_p = NULL;
+  protocol_ctxt_t                 ctxt;
+
+  ue_initial_id  = NGAP_INITIAL_CONTEXT_SETUP_REQ(msg_p).ue_initial_id;
+  gNB_ue_ngap_id = NGAP_INITIAL_CONTEXT_SETUP_REQ(msg_p).gNB_ue_ngap_id;
+
+  ue_context_p   = rrc_gNB_get_ue_context_from_ngap_ids(instance, ue_initial_id, gNB_ue_ngap_id);
+  LOG_I(NR_RRC, "[gNB %d] Received %s: ue_initial_id %d, gNB_ue_ngap_id %d \n",
+      instance, msg_name, ue_initial_id, gNB_ue_ngap_id);
+
+  if (ue_context_p == NULL) {
+    /* Can not associate this message to an UE index, send a failure to NGAP and discard it! */
+    MessageDef *msg_fail_p = NULL;
+    LOG_W(NR_RRC, "[gNB %d] In NGAP_INITIAL_CONTEXT_SETUP_REQ: unknown UE from S1AP ids (%d, %d)\n", instance, ue_initial_id, gNB_ue_ngap_id);
+    msg_fail_p = itti_alloc_new_message (TASK_RRC_GNB, NGAP_INITIAL_CONTEXT_SETUP_FAIL);
+    NGAP_INITIAL_CONTEXT_SETUP_FAIL (msg_fail_p).gNB_ue_ngap_id = gNB_ue_ngap_id;
+    // TODO add failure cause when defined!
+    itti_send_msg_to_task (TASK_NGAP, instance, msg_fail_p);
+    return (-1);
+  } else {
+    PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, GNB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
+    ue_context_p->ue_context.gNB_ue_ngap_id = NGAP_INITIAL_CONTEXT_SETUP_REQ (msg_p).gNB_ue_ngap_id;
+    ue_context_p->ue_context.amf_ue_ngap_id = NGAP_INITIAL_CONTEXT_SETUP_REQ (msg_p).amf_ue_ngap_id;
+
+    /* NAS PDU */
+    if (ue_context_p->ue_context.nas_pdu_flag == 1) {
+      ue_context_p->ue_context.nas_pdu.length = NGAP_INITIAL_CONTEXT_SETUP_REQ(msg_p).nas_pdu.length;
+      ue_context_p->ue_context.nas_pdu.buffer = NGAP_INITIAL_CONTEXT_SETUP_REQ(msg_p).nas_pdu.buffer;
+    }
+
+    /* TODO security */
+    rrc_gNB_process_security(&ctxt, ue_context_p, &(NGAP_INITIAL_CONTEXT_SETUP_REQ(msg_p).security_capabilities));
+
+    uint8_t send_security_mode_command = TRUE;
+
+    nr_rrc_pdcp_config_security(
+        &ctxt,
+        ue_context_p,
+        send_security_mode_command);
+
+    if (send_security_mode_command) {
+        rrc_gNB_generate_SecurityModeCommand (&ctxt, ue_context_p);
+        send_security_mode_command = FALSE;
 
         nr_rrc_pdcp_config_security(
             &ctxt,
             ue_context_p,
             send_security_mode_command);
+    } else {
+        /* rrc_gNB_generate_UECapabilityEnquiry */
+        rrc_gNB_generate_UECapabilityEnquiry(&ctxt, ue_context_p);
+    }
 
-        if (send_security_mode_command) {
-            rrc_gNB_generate_SecurityModeCommand (&ctxt, ue_context_p);
-            send_security_mode_command = FALSE;
-
-            nr_rrc_pdcp_config_security(
-                &ctxt,
-                ue_context_p,
-                send_security_mode_command);
-        } else {
-            /* rrc_gNB_generate_UECapabilityEnquiry */
-            rrc_gNB_generate_UECapabilityEnquiry(&ctxt, ue_context_p);
-        }
-
-        // in case, send the S1SP initial context response if it is not sent with the attach complete message
-        if (ue_context_p->ue_context.Status == NR_RRC_RECONFIGURED) {
-            LOG_I(NR_RRC, "Sending rrc_gNB_send_NGAP_INITIAL_CONTEXT_SETUP_RESP, cause %ld\n", ue_context_p->ue_context.reestablishment_cause);
-            rrc_gNB_send_NGAP_INITIAL_CONTEXT_SETUP_RESP(&ctxt,ue_context_p);
-        }
-
-        return 0;
+    // in case, send the S1SP initial context response if it is not sent with the attach complete message
+    if (ue_context_p->ue_context.Status == NR_RRC_RECONFIGURED) {
+        LOG_I(NR_RRC, "Sending rrc_gNB_send_NGAP_INITIAL_CONTEXT_SETUP_RESP, cause %ld\n", ue_context_p->ue_context.reestablishment_cause);
+        rrc_gNB_send_NGAP_INITIAL_CONTEXT_SETUP_RESP(&ctxt,ue_context_p);
     }
+
+    return 0;
+  }
 }
 
 //------------------------------------------------------------------------------
diff --git a/openair2/RRC/NR_UE/rrc_UE.c b/openair2/RRC/NR_UE/rrc_UE.c
index fb1dc82986b1497880c204384425c65186d8e10b..1cffd676c2d86c22f01cf5221b3908d84df724f6 100755
--- a/openair2/RRC/NR_UE/rrc_UE.c
+++ b/openair2/RRC/NR_UE/rrc_UE.c
@@ -1886,119 +1886,119 @@ nr_rrc_ue_process_measConfig(
 )
 //-----------------------------------------------------------------------------
 {
-    int i;
-    long ind;
-    NR_MeasObjectToAddMod_t   *measObj        = NULL;
-    NR_ReportConfigToAddMod_t *reportConfig   = NULL;
-
-    if (measConfig->measObjectToRemoveList != NULL) {
-        for (i = 0; i < measConfig->measObjectToRemoveList->list.count; i++) {
-            ind = *measConfig->measObjectToRemoveList->list.array[i];
-            free(NR_UE_rrc_inst[ctxt_pP->module_id].MeasObj[gNB_index][ind-1]);
-        }
+  int i;
+  long ind;
+  NR_MeasObjectToAddMod_t   *measObj        = NULL;
+  NR_ReportConfigToAddMod_t *reportConfig   = NULL;
+
+  if (measConfig->measObjectToRemoveList != NULL) {
+    for (i = 0; i < measConfig->measObjectToRemoveList->list.count; i++) {
+        ind = *measConfig->measObjectToRemoveList->list.array[i];
+        free(NR_UE_rrc_inst[ctxt_pP->module_id].MeasObj[gNB_index][ind-1]);
     }
+  }
 
-    if (measConfig->measObjectToAddModList != NULL) {
-        LOG_I(NR_RRC, "Measurement Object List is present\n");
-        for (i = 0; i < measConfig->measObjectToAddModList->list.count; i++) {
-            measObj = measConfig->measObjectToAddModList->list.array[i];
-            ind     = measConfig->measObjectToAddModList->list.array[i]->measObjectId;
-
-            if (NR_UE_rrc_inst[ctxt_pP->module_id].MeasObj[gNB_index][ind-1]) {
-                LOG_D(NR_RRC, "Modifying measurement object %ld\n",ind);
-                memcpy((char *)NR_UE_rrc_inst[ctxt_pP->module_id].MeasObj[gNB_index][ind-1],
-                        (char *)measObj,
-                        sizeof(NR_MeasObjectToAddMod_t));
-            } else {
-                LOG_I(NR_RRC, "Adding measurement object %ld\n", ind);
-
-                if (measObj->measObject.present == NR_MeasObjectToAddMod__measObject_PR_measObjectNR) {
-                    NR_UE_rrc_inst[ctxt_pP->module_id].MeasObj[gNB_index][ind-1]=measObj;
-                }
-            }
-        }
-
-        LOG_I(NR_RRC, "call rrc_mac_config_req \n");
-        // rrc_mac_config_req_ue
-    }
+  if (measConfig->measObjectToAddModList != NULL) {
+    LOG_I(NR_RRC, "Measurement Object List is present\n");
+    for (i = 0; i < measConfig->measObjectToAddModList->list.count; i++) {
+      measObj = measConfig->measObjectToAddModList->list.array[i];
+      ind     = measConfig->measObjectToAddModList->list.array[i]->measObjectId;
+
+      if (NR_UE_rrc_inst[ctxt_pP->module_id].MeasObj[gNB_index][ind-1]) {
+        LOG_D(NR_RRC, "Modifying measurement object %ld\n",ind);
+        memcpy((char *)NR_UE_rrc_inst[ctxt_pP->module_id].MeasObj[gNB_index][ind-1],
+                (char *)measObj,
+                sizeof(NR_MeasObjectToAddMod_t));
+      } else {
+        LOG_I(NR_RRC, "Adding measurement object %ld\n", ind);
 
-    if (measConfig->reportConfigToRemoveList != NULL) {
-        for (i = 0; i < measConfig->reportConfigToRemoveList->list.count; i++) {
-            ind = *measConfig->reportConfigToRemoveList->list.array[i];
-            free(NR_UE_rrc_inst[ctxt_pP->module_id].ReportConfig[gNB_index][ind-1]);
+        if (measObj->measObject.present == NR_MeasObjectToAddMod__measObject_PR_measObjectNR) {
+            NR_UE_rrc_inst[ctxt_pP->module_id].MeasObj[gNB_index][ind-1]=measObj;
         }
+      }
     }
 
-    if (measConfig->reportConfigToAddModList != NULL) {
-        LOG_I(NR_RRC,"Report Configuration List is present\n");
-        for (i = 0; i < measConfig->reportConfigToAddModList->list.count; i++) {
-            ind          = measConfig->reportConfigToAddModList->list.array[i]->reportConfigId;
-            reportConfig = measConfig->reportConfigToAddModList->list.array[i];
-
-            if (NR_UE_rrc_inst[ctxt_pP->module_id].ReportConfig[gNB_index][ind-1]) {
-                LOG_I(NR_RRC, "Modifying Report Configuration %ld\n", ind-1);
-                memcpy((char *)NR_UE_rrc_inst[ctxt_pP->module_id].ReportConfig[gNB_index][ind-1],
-                        (char *)measConfig->reportConfigToAddModList->list.array[i],
-                        sizeof(NR_ReportConfigToAddMod_t));
-            } else {
-                LOG_D(RRC,"Adding Report Configuration %ld %p \n", ind-1, measConfig->reportConfigToAddModList->list.array[i]);
-                if (reportConfig->reportConfig.present == NR_ReportConfigToAddMod__reportConfig_PR_reportConfigNR) {
-                    NR_UE_rrc_inst[ctxt_pP->module_id].ReportConfig[gNB_index][ind-1] = measConfig->reportConfigToAddModList->list.array[i];
-                }
-            }
-        }
+    LOG_I(NR_RRC, "call rrc_mac_config_req \n");
+    // rrc_mac_config_req_ue
+  }
+
+  if (measConfig->reportConfigToRemoveList != NULL) {
+    for (i = 0; i < measConfig->reportConfigToRemoveList->list.count; i++) {
+        ind = *measConfig->reportConfigToRemoveList->list.array[i];
+        free(NR_UE_rrc_inst[ctxt_pP->module_id].ReportConfig[gNB_index][ind-1]);
     }
+  }
 
-    if (measConfig->measIdToRemoveList != NULL) {
-        for (i = 0; i < measConfig->measIdToRemoveList->list.count; i++) {
-            ind = *measConfig->measIdToRemoveList->list.array[i];
-            free(NR_UE_rrc_inst[ctxt_pP->module_id].MeasId[gNB_index][ind-1]);
+  if (measConfig->reportConfigToAddModList != NULL) {
+    LOG_I(NR_RRC,"Report Configuration List is present\n");
+    for (i = 0; i < measConfig->reportConfigToAddModList->list.count; i++) {
+      ind          = measConfig->reportConfigToAddModList->list.array[i]->reportConfigId;
+      reportConfig = measConfig->reportConfigToAddModList->list.array[i];
+
+      if (NR_UE_rrc_inst[ctxt_pP->module_id].ReportConfig[gNB_index][ind-1]) {
+          LOG_I(NR_RRC, "Modifying Report Configuration %ld\n", ind-1);
+          memcpy((char *)NR_UE_rrc_inst[ctxt_pP->module_id].ReportConfig[gNB_index][ind-1],
+                  (char *)measConfig->reportConfigToAddModList->list.array[i],
+                  sizeof(NR_ReportConfigToAddMod_t));
+      } else {
+        LOG_D(RRC,"Adding Report Configuration %ld %p \n", ind-1, measConfig->reportConfigToAddModList->list.array[i]);
+        if (reportConfig->reportConfig.present == NR_ReportConfigToAddMod__reportConfig_PR_reportConfigNR) {
+            NR_UE_rrc_inst[ctxt_pP->module_id].ReportConfig[gNB_index][ind-1] = measConfig->reportConfigToAddModList->list.array[i];
         }
+      }
     }
+  }
 
-    if (measConfig->measIdToAddModList != NULL) {
-        for (i = 0; i < measConfig->measIdToAddModList->list.count; i++) {
-            ind = measConfig->measIdToAddModList->list.array[i]->measId;
-
-            if (NR_UE_rrc_inst[ctxt_pP->module_id].MeasId[gNB_index][ind-1]) {
-                LOG_D(NR_RRC, "Modifying Measurement ID %ld\n",ind-1);
-                memcpy((char *)NR_UE_rrc_inst[ctxt_pP->module_id].MeasId[gNB_index][ind-1],
-                    (char *)measConfig->measIdToAddModList->list.array[i],
-                    sizeof(NR_MeasIdToAddMod_t));
-            } else {
-                LOG_D(NR_RRC, "Adding Measurement ID %ld %p\n", ind-1, measConfig->measIdToAddModList->list.array[i]);
-                NR_UE_rrc_inst[ctxt_pP->module_id].MeasId[gNB_index][ind-1] = measConfig->measIdToAddModList->list.array[i];
-            }
-        }
+  if (measConfig->measIdToRemoveList != NULL) {
+    for (i = 0; i < measConfig->measIdToRemoveList->list.count; i++) {
+        ind = *measConfig->measIdToRemoveList->list.array[i];
+        free(NR_UE_rrc_inst[ctxt_pP->module_id].MeasId[gNB_index][ind-1]);
     }
+  }
 
-    if (measConfig->quantityConfig != NULL) {
-        if (NR_UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[gNB_index]) {
-            LOG_D(RRC,"Modifying Quantity Configuration \n");
-            memcpy((char *)NR_UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[gNB_index],
-                    (char *)measConfig->quantityConfig,
-                    sizeof(NR_QuantityConfig_t));
-        } else {
-            LOG_D(NR_RRC, "Adding Quantity configuration\n");
-            NR_UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[gNB_index] = measConfig->quantityConfig;
-        }
+  if (measConfig->measIdToAddModList != NULL) {
+    for (i = 0; i < measConfig->measIdToAddModList->list.count; i++) {
+      ind = measConfig->measIdToAddModList->list.array[i]->measId;
+
+      if (NR_UE_rrc_inst[ctxt_pP->module_id].MeasId[gNB_index][ind-1]) {
+        LOG_D(NR_RRC, "Modifying Measurement ID %ld\n",ind-1);
+        memcpy((char *)NR_UE_rrc_inst[ctxt_pP->module_id].MeasId[gNB_index][ind-1],
+            (char *)measConfig->measIdToAddModList->list.array[i],
+            sizeof(NR_MeasIdToAddMod_t));
+      } else {
+        LOG_D(NR_RRC, "Adding Measurement ID %ld %p\n", ind-1, measConfig->measIdToAddModList->list.array[i]);
+        NR_UE_rrc_inst[ctxt_pP->module_id].MeasId[gNB_index][ind-1] = measConfig->measIdToAddModList->list.array[i];
+      }
     }
+  }
 
-    if (measConfig->measGapConfig != NULL) {
-        if (NR_UE_rrc_inst[ctxt_pP->module_id].measGapConfig[gNB_index]) {
-            memcpy((char *)NR_UE_rrc_inst[ctxt_pP->module_id].measGapConfig[gNB_index],
-                    (char *)measConfig->measGapConfig,
-                    sizeof(NR_MeasGapConfig_t));
-        } else {
-            NR_UE_rrc_inst[ctxt_pP->module_id].measGapConfig[gNB_index] = measConfig->measGapConfig;
-        }
+  if (measConfig->quantityConfig != NULL) {
+    if (NR_UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[gNB_index]) {
+      LOG_D(RRC,"Modifying Quantity Configuration \n");
+      memcpy((char *)NR_UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[gNB_index],
+              (char *)measConfig->quantityConfig,
+              sizeof(NR_QuantityConfig_t));
+    } else {
+      LOG_D(NR_RRC, "Adding Quantity configuration\n");
+      NR_UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[gNB_index] = measConfig->quantityConfig;
     }
+  }
 
-    if (measConfig->s_MeasureConfig->present == NR_MeasConfig__s_MeasureConfig_PR_ssb_RSRP) {
-        NR_UE_rrc_inst[ctxt_pP->module_id].s_measure = measConfig->s_MeasureConfig->choice.ssb_RSRP;
-    } else if (measConfig->s_MeasureConfig->present == NR_MeasConfig__s_MeasureConfig_PR_csi_RSRP) {
-        NR_UE_rrc_inst[ctxt_pP->module_id].s_measure = measConfig->s_MeasureConfig->choice.csi_RSRP;
+  if (measConfig->measGapConfig != NULL) {
+    if (NR_UE_rrc_inst[ctxt_pP->module_id].measGapConfig[gNB_index]) {
+      memcpy((char *)NR_UE_rrc_inst[ctxt_pP->module_id].measGapConfig[gNB_index],
+              (char *)measConfig->measGapConfig,
+              sizeof(NR_MeasGapConfig_t));
+    } else {
+      NR_UE_rrc_inst[ctxt_pP->module_id].measGapConfig[gNB_index] = measConfig->measGapConfig;
     }
+  }
+
+  if (measConfig->s_MeasureConfig->present == NR_MeasConfig__s_MeasureConfig_PR_ssb_RSRP) {
+    NR_UE_rrc_inst[ctxt_pP->module_id].s_measure = measConfig->s_MeasureConfig->choice.ssb_RSRP;
+  } else if (measConfig->s_MeasureConfig->present == NR_MeasConfig__s_MeasureConfig_PR_csi_RSRP) {
+    NR_UE_rrc_inst[ctxt_pP->module_id].s_measure = measConfig->s_MeasureConfig->choice.csi_RSRP;
+  }
 }
 
 //-----------------------------------------------------------------------------
@@ -2010,156 +2010,156 @@ nr_sa_rrc_ue_process_radioBearerConfig(
 )
 //-----------------------------------------------------------------------------
 {
-    long SRB_id, DRB_id;
-    int i, cnt;
+  long SRB_id, DRB_id;
+  int i, cnt;
 
-    if( radioBearerConfig->srb3_ToRelease != NULL){
-      if( *radioBearerConfig->srb3_ToRelease == TRUE){
-        //TODO (release the PDCP entity and the srb-Identity of the SRB3.)
-      }
+  if( radioBearerConfig->srb3_ToRelease != NULL){
+    if( *radioBearerConfig->srb3_ToRelease == TRUE){
+      //TODO (release the PDCP entity and the srb-Identity of the SRB3.)
     }
+  }
 
-    if (radioBearerConfig->srb_ToAddModList != NULL) {
+  if (radioBearerConfig->srb_ToAddModList != NULL) {
 
-        if (radioBearerConfig->securityConfig != NULL) {
-            if (*radioBearerConfig->securityConfig->keyToUse == NR_SecurityConfig__keyToUse_master) {
-                NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm =
-                    radioBearerConfig->securityConfig->securityAlgorithmConfig->cipheringAlgorithm;
-                NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm =
-                    *radioBearerConfig->securityConfig->securityAlgorithmConfig->integrityProtAlgorithm;
-            }
-        }
+      if (radioBearerConfig->securityConfig != NULL) {
+          if (*radioBearerConfig->securityConfig->keyToUse == NR_SecurityConfig__keyToUse_master) {
+              NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm =
+                  radioBearerConfig->securityConfig->securityAlgorithmConfig->cipheringAlgorithm;
+              NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm =
+                  *radioBearerConfig->securityConfig->securityAlgorithmConfig->integrityProtAlgorithm;
+          }
+      }
 
-        uint8_t *kRRCenc = NULL;
-        uint8_t *kRRCint = NULL;
-        derive_key_rrc_enc(NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm,
-                        NR_UE_rrc_inst[ctxt_pP->module_id].kgnb, &kRRCenc);
-        derive_key_rrc_int(NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm,
-                        NR_UE_rrc_inst[ctxt_pP->module_id].kgnb, &kRRCint);
-        // Refresh SRBs
-        // nr_rrc_pdcp_config_asn1_req(ctxt_pP,
-        //                             radioBearerConfig->srb_ToAddModList,
-        //                             NULL,
-        //                             NULL,
-        //                             NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm |
-        //                             (NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm << 4),
-        //                             kRRCenc,
-        //                             kRRCint,
-        //                             NULL,
-        //                             NULL,
-        //                             NULL,
-        //                             NULL);
-        // Refresh SRBs
-        // nr_rrc_rlc_config_asn1_req(ctxt_pP,
-        //                             radioBearerConfig->srb_ToAddModList,
-        //                             NULL,
-        //                             NULL,
-        //                             NULL,
-        //                             NULL
-        //                             );
-
-        for (cnt = 0; cnt < radioBearerConfig->srb_ToAddModList->list.count; cnt++) {
-            SRB_id = radioBearerConfig->srb_ToAddModList->list.array[cnt]->srb_Identity;
-            LOG_D(NR_RRC,"[UE %d]: Frame %d SRB config cnt %d (SRB%ld)\n", ctxt_pP->module_id, ctxt_pP->frame, cnt, SRB_id);
-            if (SRB_id == 1) {
-                if (NR_UE_rrc_inst[ctxt_pP->module_id].SRB1_config[gNB_index]) {
-                    memcpy(NR_UE_rrc_inst[ctxt_pP->module_id].SRB1_config[gNB_index],
-                        radioBearerConfig->srb_ToAddModList->list.array[cnt], sizeof(NR_SRB_ToAddMod_t));
-                } else {
-                    NR_UE_rrc_inst[ctxt_pP->module_id].SRB1_config[gNB_index] = radioBearerConfig->srb_ToAddModList->list.array[cnt];
-                    nr_rrc_ue_establish_srb1(ctxt_pP->module_id,
-                                            ctxt_pP->frame,
-                                            gNB_index,
-                                            radioBearerConfig->srb_ToAddModList->list.array[cnt]);
-
-                    LOG_I(NR_RRC, "[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ  (SRB1 gNB %d) --->][MAC_UE][MOD %02d][]\n",
-                        ctxt_pP->frame, ctxt_pP->module_id, gNB_index, ctxt_pP->module_id);
-                    // rrc_mac_config_req_ue
-                }
-            } else {
-                if (NR_UE_rrc_inst[ctxt_pP->module_id].SRB2_config[gNB_index]) {
-                    memcpy(NR_UE_rrc_inst[ctxt_pP->module_id].SRB2_config[gNB_index],
-                        radioBearerConfig->srb_ToAddModList->list.array[cnt], sizeof(NR_SRB_ToAddMod_t));
-                } else {
-                    NR_UE_rrc_inst[ctxt_pP->module_id].SRB2_config[gNB_index] = radioBearerConfig->srb_ToAddModList->list.array[cnt];
-                    nr_rrc_ue_establish_srb2(ctxt_pP->module_id,
-                                            ctxt_pP->frame,
-                                            gNB_index,
-                                            radioBearerConfig->srb_ToAddModList->list.array[cnt]);
-
-                    LOG_I(NR_RRC, "[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ  (SRB2 gNB %d) --->][MAC_UE][MOD %02d][]\n",
-                        ctxt_pP->frame, ctxt_pP->module_id, gNB_index, ctxt_pP->module_id);
-                    // rrc_mac_config_req_ue
-                }
-            } // srb2
-        }
-    } // srb_ToAddModList
-
-    // Establish DRBs if present
-    if (radioBearerConfig->drb_ToAddModList != NULL) {
-        if ((NR_UE_rrc_inst[ctxt_pP->module_id].defaultDRB == NULL) &&
-            (radioBearerConfig->drb_ToAddModList->list.count >= 1)) {
-            NR_UE_rrc_inst[ctxt_pP->module_id].defaultDRB = malloc(sizeof(rb_id_t));
-            *NR_UE_rrc_inst[ctxt_pP->module_id].defaultDRB = radioBearerConfig->drb_ToAddModList->list.array[0]->drb_Identity;
-        }
+      uint8_t *kRRCenc = NULL;
+      uint8_t *kRRCint = NULL;
+      derive_key_rrc_enc(NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm,
+                      NR_UE_rrc_inst[ctxt_pP->module_id].kgnb, &kRRCenc);
+      derive_key_rrc_int(NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm,
+                      NR_UE_rrc_inst[ctxt_pP->module_id].kgnb, &kRRCint);
+      // Refresh SRBs
+      // nr_rrc_pdcp_config_asn1_req(ctxt_pP,
+      //                             radioBearerConfig->srb_ToAddModList,
+      //                             NULL,
+      //                             NULL,
+      //                             NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm |
+      //                             (NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm << 4),
+      //                             kRRCenc,
+      //                             kRRCint,
+      //                             NULL,
+      //                             NULL,
+      //                             NULL,
+      //                             NULL);
+      // Refresh SRBs
+      // nr_rrc_rlc_config_asn1_req(ctxt_pP,
+      //                             radioBearerConfig->srb_ToAddModList,
+      //                             NULL,
+      //                             NULL,
+      //                             NULL,
+      //                             NULL
+      //                             );
+
+      for (cnt = 0; cnt < radioBearerConfig->srb_ToAddModList->list.count; cnt++) {
+          SRB_id = radioBearerConfig->srb_ToAddModList->list.array[cnt]->srb_Identity;
+          LOG_D(NR_RRC,"[UE %d]: Frame %d SRB config cnt %d (SRB%ld)\n", ctxt_pP->module_id, ctxt_pP->frame, cnt, SRB_id);
+          if (SRB_id == 1) {
+              if (NR_UE_rrc_inst[ctxt_pP->module_id].SRB1_config[gNB_index]) {
+                  memcpy(NR_UE_rrc_inst[ctxt_pP->module_id].SRB1_config[gNB_index],
+                      radioBearerConfig->srb_ToAddModList->list.array[cnt], sizeof(NR_SRB_ToAddMod_t));
+              } else {
+                  NR_UE_rrc_inst[ctxt_pP->module_id].SRB1_config[gNB_index] = radioBearerConfig->srb_ToAddModList->list.array[cnt];
+                  nr_rrc_ue_establish_srb1(ctxt_pP->module_id,
+                                          ctxt_pP->frame,
+                                          gNB_index,
+                                          radioBearerConfig->srb_ToAddModList->list.array[cnt]);
+
+                  LOG_I(NR_RRC, "[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ  (SRB1 gNB %d) --->][MAC_UE][MOD %02d][]\n",
+                      ctxt_pP->frame, ctxt_pP->module_id, gNB_index, ctxt_pP->module_id);
+                  // rrc_mac_config_req_ue
+              }
+          } else {
+              if (NR_UE_rrc_inst[ctxt_pP->module_id].SRB2_config[gNB_index]) {
+                  memcpy(NR_UE_rrc_inst[ctxt_pP->module_id].SRB2_config[gNB_index],
+                      radioBearerConfig->srb_ToAddModList->list.array[cnt], sizeof(NR_SRB_ToAddMod_t));
+              } else {
+                  NR_UE_rrc_inst[ctxt_pP->module_id].SRB2_config[gNB_index] = radioBearerConfig->srb_ToAddModList->list.array[cnt];
+                  nr_rrc_ue_establish_srb2(ctxt_pP->module_id,
+                                          ctxt_pP->frame,
+                                          gNB_index,
+                                          radioBearerConfig->srb_ToAddModList->list.array[cnt]);
+
+                  LOG_I(NR_RRC, "[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ  (SRB2 gNB %d) --->][MAC_UE][MOD %02d][]\n",
+                      ctxt_pP->frame, ctxt_pP->module_id, gNB_index, ctxt_pP->module_id);
+                  // rrc_mac_config_req_ue
+              }
+          } // srb2
+      }
+  } // srb_ToAddModList
+
+  // Establish DRBs if present
+  if (radioBearerConfig->drb_ToAddModList != NULL) {
+    if ((NR_UE_rrc_inst[ctxt_pP->module_id].defaultDRB == NULL) &&
+      (radioBearerConfig->drb_ToAddModList->list.count >= 1)) {
+      NR_UE_rrc_inst[ctxt_pP->module_id].defaultDRB = malloc(sizeof(rb_id_t));
+      *NR_UE_rrc_inst[ctxt_pP->module_id].defaultDRB = radioBearerConfig->drb_ToAddModList->list.array[0]->drb_Identity;
+    }
 
-        for (cnt = 0; cnt < radioBearerConfig->drb_ToAddModList->list.count; cnt++) {
-            DRB_id = radioBearerConfig->drb_ToAddModList->list.array[cnt]->drb_Identity;
-            if (NR_UE_rrc_inst[ctxt_pP->module_id].DRB_config[gNB_index][DRB_id-1]) {
-                memcpy(NR_UE_rrc_inst[ctxt_pP->module_id].DRB_config[gNB_index][DRB_id-1],
-                        radioBearerConfig->drb_ToAddModList->list.array[cnt], sizeof(NR_DRB_ToAddMod_t));
-            } else {
-                LOG_D(NR_RRC, "Adding DRB %ld %p\n", DRB_id-1, radioBearerConfig->drb_ToAddModList->list.array[cnt]);
-                NR_UE_rrc_inst[ctxt_pP->module_id].DRB_config[gNB_index][DRB_id-1] = radioBearerConfig->drb_ToAddModList->list.array[cnt];
-            }
-        }
+    for (cnt = 0; cnt < radioBearerConfig->drb_ToAddModList->list.count; cnt++) {
+      DRB_id = radioBearerConfig->drb_ToAddModList->list.array[cnt]->drb_Identity;
+      if (NR_UE_rrc_inst[ctxt_pP->module_id].DRB_config[gNB_index][DRB_id-1]) {
+        memcpy(NR_UE_rrc_inst[ctxt_pP->module_id].DRB_config[gNB_index][DRB_id-1],
+                radioBearerConfig->drb_ToAddModList->list.array[cnt], sizeof(NR_DRB_ToAddMod_t));
+      } else {
+        LOG_D(NR_RRC, "Adding DRB %ld %p\n", DRB_id-1, radioBearerConfig->drb_ToAddModList->list.array[cnt]);
+        NR_UE_rrc_inst[ctxt_pP->module_id].DRB_config[gNB_index][DRB_id-1] = radioBearerConfig->drb_ToAddModList->list.array[cnt];
+      }
+    }
 
-        uint8_t *kUPenc = NULL;
-        derive_key_up_enc(NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm,
-                        NR_UE_rrc_inst[ctxt_pP->module_id].kgnb, &kUPenc);
-        MSC_LOG_TX_MESSAGE(
-            MSC_RRC_UE,
-            MSC_PDCP_UE,
-            NULL,
-            0,
-            MSC_AS_TIME_FMT" CONFIG_REQ UE %x DRB (security %X)",
-            MSC_AS_TIME_ARGS(ctxt_pP),
-            ctxt_pP->rnti,
-            NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm |
-            (NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm << 4));
-
-        // Refresh DRBs
-        // nr_rrc_pdcp_config_asn1_req(ctxt_pP,
-        //                             NULL,
-        //                             radioBearerConfig->drb_ToAddModList,
-        //                             NULL,
-        //                             NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm |
-        //                             (NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm << 4),
-        //                             NULL,
-        //                             NULL,
-        //                             kUPenc,
-        //                             NULL,
-        //                             NR_UE_rrc_inst[ctxt_pP->module_id].defaultDRB,
-        //                             NULL);
-        // Refresh DRBs
-        // nr_rrc_rlc_config_asn1_req(ctxt_pP,
-        //                             NULL,
-        //                             radioBearerConfig->drb_ToAddModList,
-        //                             NULL,
-        //                             NULL,
-        //                             NULL
-        //                             );
-    } // drb_ToAddModList
-
-    if (radioBearerConfig->drb_ToReleaseList != NULL) {
-        for (i = 0; i < radioBearerConfig->drb_ToReleaseList->list.count; i++) {
-            DRB_id = *radioBearerConfig->drb_ToReleaseList->list.array[i];
-            free(NR_UE_rrc_inst[ctxt_pP->module_id].DRB_config[gNB_index][DRB_id-1]);
-        }
+    uint8_t *kUPenc = NULL;
+    derive_key_up_enc(NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm,
+                    NR_UE_rrc_inst[ctxt_pP->module_id].kgnb, &kUPenc);
+    MSC_LOG_TX_MESSAGE(
+        MSC_RRC_UE,
+        MSC_PDCP_UE,
+        NULL,
+        0,
+        MSC_AS_TIME_FMT" CONFIG_REQ UE %x DRB (security %X)",
+        MSC_AS_TIME_ARGS(ctxt_pP),
+        ctxt_pP->rnti,
+        NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm |
+        (NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm << 4));
+
+      // Refresh DRBs
+      // nr_rrc_pdcp_config_asn1_req(ctxt_pP,
+      //                             NULL,
+      //                             radioBearerConfig->drb_ToAddModList,
+      //                             NULL,
+      //                             NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm |
+      //                             (NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm << 4),
+      //                             NULL,
+      //                             NULL,
+      //                             kUPenc,
+      //                             NULL,
+      //                             NR_UE_rrc_inst[ctxt_pP->module_id].defaultDRB,
+      //                             NULL);
+      // Refresh DRBs
+      // nr_rrc_rlc_config_asn1_req(ctxt_pP,
+      //                             NULL,
+      //                             radioBearerConfig->drb_ToAddModList,
+      //                             NULL,
+      //                             NULL,
+      //                             NULL
+      //                             );
+  } // drb_ToAddModList
+
+  if (radioBearerConfig->drb_ToReleaseList != NULL) {
+    for (i = 0; i < radioBearerConfig->drb_ToReleaseList->list.count; i++) {
+      DRB_id = *radioBearerConfig->drb_ToReleaseList->list.array[i];
+      free(NR_UE_rrc_inst[ctxt_pP->module_id].DRB_config[gNB_index][DRB_id-1]);
     }
+  }
 
-    NR_UE_rrc_inst[ctxt_pP->module_id].Info[gNB_index].State = NR_RRC_CONNECTED;
-    LOG_I(NR_RRC,"[UE %d] State = NR_RRC_CONNECTED (gNB %d)\n", ctxt_pP->module_id, gNB_index);
+  NR_UE_rrc_inst[ctxt_pP->module_id].Info[gNB_index].State = NR_RRC_CONNECTED;
+  LOG_I(NR_RRC,"[UE %d] State = NR_RRC_CONNECTED (gNB %d)\n", ctxt_pP->module_id, gNB_index);
 }
 
 //-----------------------------------------------------------------------------
@@ -2171,44 +2171,44 @@ rrc_ue_process_rrcReconfiguration(
 )
 //-----------------------------------------------------------------------------
 {
-    LOG_I(NR_RRC, "[UE %d] Frame %d: Receiving from SRB1 (DL-DCCH), Processing RRCReconfiguration (gNB %d)\n",
-        ctxt_pP->module_id, ctxt_pP->frame, gNB_index);
+  LOG_I(NR_RRC, "[UE %d] Frame %d: Receiving from SRB1 (DL-DCCH), Processing RRCReconfiguration (gNB %d)\n",
+      ctxt_pP->module_id, ctxt_pP->frame, gNB_index);
 
-    NR_RRCReconfiguration_IEs_t *ie = NULL;
+  NR_RRCReconfiguration_IEs_t *ie = NULL;
 
-    if (rrcReconfiguration->criticalExtensions.present 
-                        == NR_RRCReconfiguration__criticalExtensions_PR_rrcReconfiguration) {
-        ie = rrcReconfiguration->criticalExtensions.choice.rrcReconfiguration;
-        if (ie->measConfig != NULL) {
-            LOG_I(NR_RRC, "Measurement Configuration is present\n");
-            nr_rrc_ue_process_measConfig(ctxt_pP, gNB_index, ie->measConfig);
-        }
+  if (rrcReconfiguration->criticalExtensions.present
+                    == NR_RRCReconfiguration__criticalExtensions_PR_rrcReconfiguration) {
+    ie = rrcReconfiguration->criticalExtensions.choice.rrcReconfiguration;
+    if (ie->measConfig != NULL) {
+      LOG_I(NR_RRC, "Measurement Configuration is present\n");
+      nr_rrc_ue_process_measConfig(ctxt_pP, gNB_index, ie->measConfig);
+    }
 
-        if (ie->radioBearerConfig != NULL) {
-            LOG_I(NR_RRC, "radio Bearer Configuration is present\n");
-            nr_sa_rrc_ue_process_radioBearerConfig(ctxt_pP, gNB_index, ie->radioBearerConfig);
-        }
+    if (ie->radioBearerConfig != NULL) {
+      LOG_I(NR_RRC, "radio Bearer Configuration is present\n");
+      nr_sa_rrc_ue_process_radioBearerConfig(ctxt_pP, gNB_index, ie->radioBearerConfig);
+    }
 
-        /* Check if there is dedicated NAS information to forward to NAS */
-        if (ie->nonCriticalExtension->dedicatedNAS_MessageList != NULL) {
-            int list_count;
-            uint32_t pdu_length;
-            uint8_t *pdu_buffer;
-            MessageDef *msg_p;
-
-            for (list_count = 0; list_count < ie->nonCriticalExtension->dedicatedNAS_MessageList->list.count; list_count++) {
-                pdu_length = ie->nonCriticalExtension->dedicatedNAS_MessageList->list.array[list_count]->size;
-                pdu_buffer = ie->nonCriticalExtension->dedicatedNAS_MessageList->list.array[list_count]->buf;
-                msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_CONN_ESTABLI_CNF);
-                NAS_CONN_ESTABLI_CNF(msg_p).errCode = AS_SUCCESS;
-                NAS_CONN_ESTABLI_CNF(msg_p).nasMsg.length = pdu_length;
-                NAS_CONN_ESTABLI_CNF(msg_p).nasMsg.data = pdu_buffer;
-                itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
-            }
+    /* Check if there is dedicated NAS information to forward to NAS */
+    if (ie->nonCriticalExtension->dedicatedNAS_MessageList != NULL) {
+      int list_count;
+      uint32_t pdu_length;
+      uint8_t *pdu_buffer;
+      MessageDef *msg_p;
+
+      for (list_count = 0; list_count < ie->nonCriticalExtension->dedicatedNAS_MessageList->list.count; list_count++) {
+        pdu_length = ie->nonCriticalExtension->dedicatedNAS_MessageList->list.array[list_count]->size;
+        pdu_buffer = ie->nonCriticalExtension->dedicatedNAS_MessageList->list.array[list_count]->buf;
+        msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_CONN_ESTABLI_CNF);
+        NAS_CONN_ESTABLI_CNF(msg_p).errCode = AS_SUCCESS;
+        NAS_CONN_ESTABLI_CNF(msg_p).nasMsg.length = pdu_length;
+        NAS_CONN_ESTABLI_CNF(msg_p).nasMsg.data = pdu_buffer;
+        itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
+      }
 
-            free (ie->nonCriticalExtension->dedicatedNAS_MessageList);
-        }
+      free (ie->nonCriticalExtension->dedicatedNAS_MessageList);
     }
+  }
 }
 
 //-----------------------------------------------------------------------------
@@ -2261,97 +2261,97 @@ nr_rrc_ue_decode_dcch(
 )
 //-----------------------------------------------------------------------------
 {
-    asn_dec_rval_t                      dec_rval;
-    NR_DL_DCCH_Message_t                *dl_dcch_msg  = NULL;
-    MessageDef *msg_p;
+  asn_dec_rval_t                      dec_rval;
+  NR_DL_DCCH_Message_t                *dl_dcch_msg  = NULL;
+  MessageDef *msg_p;
 
-    if (Srb_id != 1) {
-        LOG_E(NR_RRC,"[UE %d] Frame %d: Received message on DL-DCCH (SRB%ld), should not have ...\n",
-            ctxt_pP->module_id, ctxt_pP->frame, Srb_id);
-        return -1;
-    } else {
-        LOG_D(NR_RRC, "Received message on SRB%ld\n", Srb_id);
-    }
+  if (Srb_id != 1) {
+    LOG_E(NR_RRC,"[UE %d] Frame %d: Received message on DL-DCCH (SRB%ld), should not have ...\n",
+        ctxt_pP->module_id, ctxt_pP->frame, Srb_id);
+    return -1;
+  } else {
+    LOG_D(NR_RRC, "Received message on SRB%ld\n", Srb_id);
+  }
 
-    LOG_D(NR_RRC, "Decoding DL-DCCH Message\n");
-    dec_rval = uper_decode( NULL,
-                            &asn_DEF_NR_DL_DCCH_Message,
-                            (void **)&dl_dcch_msg,
-                            Buffer,
-                            RRC_BUF_SIZE,
-                            0,
-                            0);
+  LOG_D(NR_RRC, "Decoding DL-DCCH Message\n");
+  dec_rval = uper_decode( NULL,
+                          &asn_DEF_NR_DL_DCCH_Message,
+                          (void **)&dl_dcch_msg,
+                          Buffer,
+                          RRC_BUF_SIZE,
+                          0,
+                          0);
 
-    if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) {
-        LOG_E(NR_RRC, "Failed to decode DL-DCCH (%zu bytes)\n", dec_rval.consumed);
-        return -1;
-    }
+  if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) {
+    LOG_E(NR_RRC, "Failed to decode DL-DCCH (%zu bytes)\n", dec_rval.consumed);
+    return -1;
+  }
 
-    // if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-        xer_fprint(stdout, &asn_DEF_NR_DL_DCCH_Message,(void *)dl_dcch_msg);
-    // }
+  // if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+      xer_fprint(stdout, &asn_DEF_NR_DL_DCCH_Message,(void *)dl_dcch_msg);
+  // }
 
-    if (dl_dcch_msg->message.present == NR_DL_DCCH_MessageType_PR_c1) {
-        switch (dl_dcch_msg->message.choice.c1->present) {
-            case NR_DL_DCCH_MessageType__c1_PR_NOTHING:
-                LOG_I(NR_RRC, "Received PR_NOTHING on DL-DCCH-Message\n");
-                break;
+  if (dl_dcch_msg->message.present == NR_DL_DCCH_MessageType_PR_c1) {
+    switch (dl_dcch_msg->message.choice.c1->present) {
+      case NR_DL_DCCH_MessageType__c1_PR_NOTHING:
+        LOG_I(NR_RRC, "Received PR_NOTHING on DL-DCCH-Message\n");
+        break;
 
-            case NR_DL_DCCH_MessageType__c1_PR_rrcReconfiguration:
-                rrc_ue_process_rrcReconfiguration(ctxt_pP,
-                                                    dl_dcch_msg->message.choice.c1->choice.rrcReconfiguration,
-                                                    gNB_indexP);
-                nr_rrc_ue_generate_RRCReconfigurationComplete(ctxt_pP,
-                                            gNB_indexP,
-                                            dl_dcch_msg->message.choice.c1->choice.rrcReconfiguration->rrc_TransactionIdentifier);
-                break;
+      case NR_DL_DCCH_MessageType__c1_PR_rrcReconfiguration:
+        rrc_ue_process_rrcReconfiguration(ctxt_pP,
+                                            dl_dcch_msg->message.choice.c1->choice.rrcReconfiguration,
+                                            gNB_indexP);
+        nr_rrc_ue_generate_RRCReconfigurationComplete(ctxt_pP,
+                                    gNB_indexP,
+                                    dl_dcch_msg->message.choice.c1->choice.rrcReconfiguration->rrc_TransactionIdentifier);
+        break;
 
-            case NR_DL_DCCH_MessageType__c1_PR_rrcResume:
-            case NR_DL_DCCH_MessageType__c1_PR_rrcRelease:
-              msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_CONN_RELEASE_IND);
+      case NR_DL_DCCH_MessageType__c1_PR_rrcResume:
+      case NR_DL_DCCH_MessageType__c1_PR_rrcRelease:
+        msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_CONN_RELEASE_IND);
 
-              if((dl_dcch_msg->message.choice.c1->choice.rrcRelease->criticalExtensions.present == NR_RRCRelease__criticalExtensions_PR_rrcRelease) &&
-                   (dl_dcch_msg->message.choice.c1->present == NR_DL_DCCH_MessageType__c1_PR_rrcRelease)){
-                    dl_dcch_msg->message.choice.c1->choice.rrcRelease->criticalExtensions.choice.rrcRelease->deprioritisationReq->deprioritisationTimer =
-                    NR_RRCRelease_IEs__deprioritisationReq__deprioritisationTimer_min5;
-                    dl_dcch_msg->message.choice.c1->choice.rrcRelease->criticalExtensions.choice.rrcRelease->deprioritisationReq->deprioritisationType =
-                    NR_RRCRelease_IEs__deprioritisationReq__deprioritisationType_frequency;
-                }
+        if((dl_dcch_msg->message.choice.c1->choice.rrcRelease->criticalExtensions.present == NR_RRCRelease__criticalExtensions_PR_rrcRelease) &&
+           (dl_dcch_msg->message.choice.c1->present == NR_DL_DCCH_MessageType__c1_PR_rrcRelease)){
+            dl_dcch_msg->message.choice.c1->choice.rrcRelease->criticalExtensions.choice.rrcRelease->deprioritisationReq->deprioritisationTimer =
+            NR_RRCRelease_IEs__deprioritisationReq__deprioritisationTimer_min5;
+            dl_dcch_msg->message.choice.c1->choice.rrcRelease->criticalExtensions.choice.rrcRelease->deprioritisationReq->deprioritisationType =
+            NR_RRCRelease_IEs__deprioritisationReq__deprioritisationType_frequency;
+          }
 
-                 itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
-                 break;
-            case NR_DL_DCCH_MessageType__c1_PR_ueCapabilityEnquiry:
-            	LOG_I(RRC, "[UE %d] Received Capability Enquiry (gNB %d)\n",
-            	      ctxt_pP->module_id,gNB_indexP);
-            	nr_rrc_ue_process_ueCapabilityEnquiry(
-            	  ctxt_pP,
-            	  dl_dcch_msg->message.choice.c1->choice.ueCapabilityEnquiry,
-            	  gNB_indexP);
-            	 break;
-            case NR_DL_DCCH_MessageType__c1_PR_rrcReestablishment:
-            case NR_DL_DCCH_MessageType__c1_PR_dlInformationTransfer:
-            case NR_DL_DCCH_MessageType__c1_PR_mobilityFromNRCommand:
-            case NR_DL_DCCH_MessageType__c1_PR_dlDedicatedMessageSegment_r16:
-            case NR_DL_DCCH_MessageType__c1_PR_ueInformationRequest_r16:
-            case NR_DL_DCCH_MessageType__c1_PR_dlInformationTransferMRDC_r16:
-            case NR_DL_DCCH_MessageType__c1_PR_loggedMeasurementConfiguration_r16:
-            case NR_DL_DCCH_MessageType__c1_PR_spare3:
-            case NR_DL_DCCH_MessageType__c1_PR_spare2:
-            case NR_DL_DCCH_MessageType__c1_PR_spare1:
-            case NR_DL_DCCH_MessageType__c1_PR_counterCheck:
-                break;
-            case NR_DL_DCCH_MessageType__c1_PR_securityModeCommand:
-				LOG_I(RRC, "[UE %d] Received securityModeCommand (gNB %d)\n",
-					  ctxt_pP->module_id, gNB_indexP);
-				nr_rrc_ue_process_securityModeCommand(
-				  ctxt_pP,
-				  dl_dcch_msg->message.choice.c1->choice.securityModeCommand,
-				  gNB_indexP);
+         itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
+         break;
+      case NR_DL_DCCH_MessageType__c1_PR_ueCapabilityEnquiry:
+        LOG_I(RRC, "[UE %d] Received Capability Enquiry (gNB %d)\n",
+              ctxt_pP->module_id,gNB_indexP);
+        nr_rrc_ue_process_ueCapabilityEnquiry(
+          ctxt_pP,
+          dl_dcch_msg->message.choice.c1->choice.ueCapabilityEnquiry,
+          gNB_indexP);
+         break;
+      case NR_DL_DCCH_MessageType__c1_PR_rrcReestablishment:
+      case NR_DL_DCCH_MessageType__c1_PR_dlInformationTransfer:
+      case NR_DL_DCCH_MessageType__c1_PR_mobilityFromNRCommand:
+      case NR_DL_DCCH_MessageType__c1_PR_dlDedicatedMessageSegment_r16:
+      case NR_DL_DCCH_MessageType__c1_PR_ueInformationRequest_r16:
+      case NR_DL_DCCH_MessageType__c1_PR_dlInformationTransferMRDC_r16:
+      case NR_DL_DCCH_MessageType__c1_PR_loggedMeasurementConfiguration_r16:
+      case NR_DL_DCCH_MessageType__c1_PR_spare3:
+      case NR_DL_DCCH_MessageType__c1_PR_spare2:
+      case NR_DL_DCCH_MessageType__c1_PR_spare1:
+      case NR_DL_DCCH_MessageType__c1_PR_counterCheck:
+          break;
+      case NR_DL_DCCH_MessageType__c1_PR_securityModeCommand:
+        LOG_I(RRC, "[UE %d] Received securityModeCommand (gNB %d)\n",
+            ctxt_pP->module_id, gNB_indexP);
+        nr_rrc_ue_process_securityModeCommand(
+          ctxt_pP,
+          dl_dcch_msg->message.choice.c1->choice.securityModeCommand,
+          gNB_indexP);
 
-                break;
-        }
+          break;
     }
-    return 0;
+  }
+  return 0;
 }
 
 //-----------------------------------------------------------------------------
@@ -2449,17 +2449,17 @@ void nr_rrc_ue_process_sidelink_radioResourceConfig(
 {
   //process sl_CommConfig, configure MAC/PHY for transmitting SL communication (RRC_CONNECTED)
   if (sl_ConfigDedicatedNR != NULL) {
-      switch (sl_ConfigDedicatedNR->present){
+    switch (sl_ConfigDedicatedNR->present){
       case NR_SetupRelease_SL_ConfigDedicatedNR_r16_PR_setup:
-          //TODO
-          break;
+        //TODO
+        break;
       case NR_SetupRelease_SL_ConfigDedicatedNR_r16_PR_release:
-          break;
+        break;
       case NR_SetupRelease_SL_ConfigDedicatedNR_r16_PR_NOTHING:
-          break;
+        break;
       default:
-          break;
-      }
+        break;
+    }
   }
 }
 
@@ -2548,17 +2548,17 @@ nr_rrc_ue_process_ueCapabilityEnquiry(
 
       LOG_I(RRC,"UECapabilityInformation Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
 #ifdef ITTI_SIM
-			  MessageDef *message_p;
-			  uint8_t *message_buffer;
-			  message_buffer = itti_malloc (TASK_RRC_UE_SIM,TASK_RRC_GNB_SIM,
-								 (enc_rval.encoded + 7) / 8);
-			  memcpy (message_buffer, buffer, (enc_rval.encoded + 7) / 8);
-	  
-			  message_p = itti_alloc_new_message (TASK_RRC_UE_SIM, UE_RRC_DCCH_DATA_IND);
-			  GNB_RRC_DCCH_DATA_IND (message_p).rbid  = DCCH;
-			  GNB_RRC_DCCH_DATA_IND (message_p).sdu   = message_buffer;
-			  GNB_RRC_DCCH_DATA_IND (message_p).size  = (enc_rval.encoded + 7) / 8;
-			  itti_send_msg_to_task (TASK_RRC_GNB_SIM, ctxt_pP->instance, message_p);
+      MessageDef *message_p;
+      uint8_t *message_buffer;
+      message_buffer = itti_malloc (TASK_RRC_UE_SIM,TASK_RRC_GNB_SIM,
+               (enc_rval.encoded + 7) / 8);
+      memcpy (message_buffer, buffer, (enc_rval.encoded + 7) / 8);
+
+      message_p = itti_alloc_new_message (TASK_RRC_UE_SIM, UE_RRC_DCCH_DATA_IND);
+      GNB_RRC_DCCH_DATA_IND (message_p).rbid  = DCCH;
+      GNB_RRC_DCCH_DATA_IND (message_p).sdu   = message_buffer;
+      GNB_RRC_DCCH_DATA_IND (message_p).size  = (enc_rval.encoded + 7) / 8;
+      itti_send_msg_to_task (TASK_RRC_GNB_SIM, ctxt_pP->instance, message_p);
 #else
       rrc_data_req_ue (
         ctxt_pP,
diff --git a/openair2/SIMULATION/NR_RRC/itti_sim.c b/openair2/SIMULATION/NR_RRC/itti_sim.c
index a09c6207afacde774134f3159cc20aa38e99fe40..d9352f2d0aa82595be266e414c145c1e838003c3 100644
--- a/openair2/SIMULATION/NR_RRC/itti_sim.c
+++ b/openair2/SIMULATION/NR_RRC/itti_sim.c
@@ -1,12 +1,32 @@
-/*!
-\file itti_sim.c
-
-\brief simulator for itti message from node to UE
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*! \file itti_sim.c
+ * \brief simulator for itti message from node to UE
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
+
 
 #include <sched.h>
 
diff --git a/openair3/NAS/COMMON/EMM/MSG/RegistrationRequest.c b/openair3/NAS/COMMON/EMM/MSG/RegistrationRequest.c
index 23404e0ed1120c143b2ce2a70c8d69f328d92612..3d177c396a9a2e404ac21398d1aaa295a511af9f 100644
--- a/openair3/NAS/COMMON/EMM/MSG/RegistrationRequest.c
+++ b/openair3/NAS/COMMON/EMM/MSG/RegistrationRequest.c
@@ -1,11 +1,31 @@
-/*! \file RegistrationRequest.c
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
 
-\brief registration request procedures for gNB
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
+/*! \file RegistrationRequest.c
+ * \brief registration request procedures for gNB
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/openair3/NAS/COMMON/EMM/MSG/RegistrationRequest.h b/openair3/NAS/COMMON/EMM/MSG/RegistrationRequest.h
index fdc70fa57d59e48fbc4023b36b31c804dc200136..ce534bfff9eec5f3f5cec541e82e17cabf8e8e6e 100644
--- a/openair3/NAS/COMMON/EMM/MSG/RegistrationRequest.h
+++ b/openair3/NAS/COMMON/EMM/MSG/RegistrationRequest.h
@@ -1,11 +1,32 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
 /*! \file RegistrationRequest.h
+ * \brief registration request procedures for gNB
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
 
-\brief registration request procedures for gNB
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/openair3/NAS/COMMON/IES/FGMMCapability.c b/openair3/NAS/COMMON/IES/FGMMCapability.c
index b0796478f0d7d3143737ccd7d3cd5cb7e356c9c8..ce156e63bf0a10ee7544d128c28af69ea76d7c16 100644
--- a/openair3/NAS/COMMON/IES/FGMMCapability.c
+++ b/openair3/NAS/COMMON/IES/FGMMCapability.c
@@ -1,11 +1,31 @@
-/*! \file FGSMobileIdentity.c
-
-\brief 5GS Mobile Identity for registration request procedures
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*! \file FGMMCapability.c
+ * \brief 5GS Mobile Identity for registration request procedures
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/openair3/NAS/COMMON/IES/FGMMCapability.h b/openair3/NAS/COMMON/IES/FGMMCapability.h
index c8cc238c80f54ed3e18155955b7556ff6d1e3ee6..d427896338bf8c879d2d1491c6994f13564a7ea2 100644
--- a/openair3/NAS/COMMON/IES/FGMMCapability.h
+++ b/openair3/NAS/COMMON/IES/FGMMCapability.h
@@ -1,11 +1,32 @@
-/*! \file FGSMobileIdentity.h
-
-\brief 5GS Mobile Identity for registration request procedures
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*! \file FGMMCapability.h
+ * \brief 5GS Mobile Capability for registration request procedures
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
+
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/openair3/NAS/COMMON/IES/FGSMobileIdentity.c b/openair3/NAS/COMMON/IES/FGSMobileIdentity.c
index dfe19b4a352787684c148ed88a4529c9b604e11a..cd7bee5bd7cac71412a72cf50bc347b0f4cc0b13 100644
--- a/openair3/NAS/COMMON/IES/FGSMobileIdentity.c
+++ b/openair3/NAS/COMMON/IES/FGSMobileIdentity.c
@@ -1,11 +1,32 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
 /*! \file FGSMobileIdentity.c
+ * \brief 5GS Mobile Identity for registration request procedures
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
 
-\brief 5GS Mobile Identity for registration request procedures
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/openair3/NAS/COMMON/IES/FGSMobileIdentity.h b/openair3/NAS/COMMON/IES/FGSMobileIdentity.h
index 56e41767d755165e57a421c23a91993f6fc5cd2c..40ca73c60b164309e34b945a6a0ab8debd199406 100644
--- a/openair3/NAS/COMMON/IES/FGSMobileIdentity.h
+++ b/openair3/NAS/COMMON/IES/FGSMobileIdentity.h
@@ -1,11 +1,32 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
 /*! \file FGSMobileIdentity.h
+ * \brief 5GS Mobile Identity for registration request procedures
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
 
-\brief 5GS Mobile Identity for registration request procedures
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/openair3/NAS/COMMON/IES/FGSRegistrationType.c b/openair3/NAS/COMMON/IES/FGSRegistrationType.c
index 9760238f10078c6bd14cf672f9ed9486f44ae94a..7f1c3ae66781c4a1014746137be3bf97813141ac 100644
--- a/openair3/NAS/COMMON/IES/FGSRegistrationType.c
+++ b/openair3/NAS/COMMON/IES/FGSRegistrationType.c
@@ -1,11 +1,32 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
 /*! \file FGSRegistrationType.c
+ * \brief 5GS Registration Type for registration request procedures
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
 
-\brief 5GS Registration Type for registration request procedures
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
diff --git a/openair3/NAS/COMMON/IES/FGSRegistrationType.h b/openair3/NAS/COMMON/IES/FGSRegistrationType.h
index 5e6e3ebc6e0aa7a698c7dac045c5f1448ffa492c..a548d45d93657ea16b99f706ef5b086fa2764394 100644
--- a/openair3/NAS/COMMON/IES/FGSRegistrationType.h
+++ b/openair3/NAS/COMMON/IES/FGSRegistrationType.h
@@ -1,11 +1,31 @@
-/*! \file FGSRegistrationType.h
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
 
-\brief 5GS Registration Type for registration request procedures
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
+/*! \file FGSRegistrationType.h
+ * \brief 5GS Registration Type for registration request procedures
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
diff --git a/openair3/NAS/COMMON/IES/NrUESecurityCapability.c b/openair3/NAS/COMMON/IES/NrUESecurityCapability.c
index 964e226835a2c12c4184dcd7b638f87b98da6abb..6c0ff7e7c79f332bf1508d56f75a7e23424b513f 100644
--- a/openair3/NAS/COMMON/IES/NrUESecurityCapability.c
+++ b/openair3/NAS/COMMON/IES/NrUESecurityCapability.c
@@ -1,11 +1,32 @@
-/*! \file FGSMobileIdentity.c
-
-\brief 5GS Mobile Identity for registration request procedures
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*! \file NrUESecurityCapability.c
+ * \brief 5GS UE Security Capability for registration request procedures
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
+
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/openair3/NAS/COMMON/IES/NrUESecurityCapability.h b/openair3/NAS/COMMON/IES/NrUESecurityCapability.h
index a16b7c1c5c72c8e32467d87e8720e87d8565904b..10aa0cf0eab4c6880845e9877ec7079fd60fa83c 100644
--- a/openair3/NAS/COMMON/IES/NrUESecurityCapability.h
+++ b/openair3/NAS/COMMON/IES/NrUESecurityCapability.h
@@ -1,11 +1,31 @@
-/*! \file FGSMobileIdentity.h
-
-\brief 5GS Mobile Identity for registration request procedures
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*! \file NrUESecurityCapability.h
+ * \brief 5GS UE Security Capability for registration request procedures
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/openair3/NAS/NR_UE/nr_nas_msg_sim.c b/openair3/NAS/NR_UE/nr_nas_msg_sim.c
index 29203dbc470491e52f2818e4a465afa744533bfb..218475f8ffb3473e66ea989823c73fa68ba9a992 100644
--- a/openair3/NAS/NR_UE/nr_nas_msg_sim.c
+++ b/openair3/NAS/NR_UE/nr_nas_msg_sim.c
@@ -1,12 +1,32 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
 
 /*! \file nr_nas_msg_sim.c
+ * \brief simulator for nr nas message
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
 
-\brief simulator for nr nas message
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
 
 #include <string.h> // memset
 #include <stdlib.h> // malloc, free
diff --git a/openair3/NAS/NR_UE/nr_nas_msg_sim.h b/openair3/NAS/NR_UE/nr_nas_msg_sim.h
index c5ec902c4a30b932e791cdff5feb04b57205a7d1..198564b441b20c6b21459bfab75d895a82912fec 100644
--- a/openair3/NAS/NR_UE/nr_nas_msg_sim.h
+++ b/openair3/NAS/NR_UE/nr_nas_msg_sim.h
@@ -1,11 +1,32 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
 /*! \file nr_nas_msg_sim.h
+ * \brief simulator for nr nas message
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
 
-\brief simulator for nr nas message
-\author Yoshio INOUE, Masayuki HARADA
-\email: yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
-\date 2020
-\version 0.1
-*/
 
 
 #ifndef __NR_NAS_MSG_SIM_H__
diff --git a/openair3/NGAP/ngap_gNB.c b/openair3/NGAP/ngap_gNB.c
index 70446eea5f3a61175065363234dd4f26b352ed26..924f28c87f60b22d17b479143588a3f531902441 100644
--- a/openair3/NGAP/ngap_gNB.c
+++ b/openair3/NGAP/ngap_gNB.c
@@ -61,9 +61,6 @@
 
 #include "assertions.h"
 #include "conversions.h"
-#if defined(TEST_S1C_AMF)
-  #include "oaisim_amf_test_s1c.h"
-#endif
 
 ngap_gNB_config_t ngap_config;
 
@@ -98,7 +95,6 @@ static void ngap_gNB_register_amf(ngap_gNB_instance_t *instance_p,
   MessageDef                 *message_p                   = NULL;
   sctp_new_association_req_t *sctp_new_association_req_p  = NULL;
   ngap_gNB_amf_data_t        *ngap_amf_data_p             = NULL;
-  struct ngap_gNB_amf_data_s *amf                         = NULL;
   DevAssert(instance_p != NULL);
   DevAssert(amf_ip_address != NULL);
   message_p = itti_alloc_new_message(TASK_NGAP, SCTP_NEW_ASSOCIATION_REQ);
@@ -114,50 +110,29 @@ static void ngap_gNB_register_amf(ngap_gNB_instance_t *instance_p,
          local_ip_addr,
          sizeof(*local_ip_addr));
   NGAP_INFO("[gNB %d] check the amf registration state\n",instance_p->instance);
-  amf = NULL;
-
-  if ( amf == NULL ) {
-    /* Create new AMF descriptor */
-    ngap_amf_data_p = calloc(1, sizeof(*ngap_amf_data_p));
-    DevAssert(ngap_amf_data_p != NULL);
-    ngap_amf_data_p->cnx_id                = ngap_gNB_fetch_add_global_cnx_id();
-    sctp_new_association_req_p->ulp_cnx_id = ngap_amf_data_p->cnx_id;
-    ngap_amf_data_p->assoc_id          = -1;
-    ngap_amf_data_p->broadcast_plmn_num = broadcast_plmn_num;
-    memcpy(&ngap_amf_data_p->amf_s1_ip,
-    	   amf_ip_address,
-    	   sizeof(*amf_ip_address));
-    for (int i = 0; i < broadcast_plmn_num; ++i)
-      ngap_amf_data_p->broadcast_plmn_index[i] = broadcast_plmn_index[i];
-
-    ngap_amf_data_p->ngap_gNB_instance = instance_p;
-    STAILQ_INIT(&ngap_amf_data_p->served_guami);
-    /* Insert the new descriptor in list of known AMF
-     * but not yet associated.
-     */
-    RB_INSERT(ngap_amf_map, &instance_p->ngap_amf_head, ngap_amf_data_p);
-    ngap_amf_data_p->state = NGAP_GNB_STATE_WAITING;
-    instance_p->ngap_amf_nb ++;
-    instance_p->ngap_amf_pending_nb ++;
-  } else if (amf->state == NGAP_GNB_STATE_WAITING) {
-    instance_p->ngap_amf_pending_nb ++;
-    sctp_new_association_req_p->ulp_cnx_id = amf->cnx_id;
-    NGAP_INFO("[gNB %d] AMF already registered, retrive the data (state %d, cnx %d, amf_nb %d, amf_pending_nb %d)\n",
-              instance_p->instance,
-              amf->state, amf->cnx_id,
-              instance_p->ngap_amf_nb, instance_p->ngap_amf_pending_nb);
-    /*ngap_amf_data_p->cnx_id                = amf->cnx_id;
-    sctp_new_association_req_p->ulp_cnx_id = amf->cnx_id;
-
-    ngap_amf_data_p->assoc_id          = -1;
-    ngap_amf_data_p->ngap_gNB_instance = instance_p;
-    */
-  } else {
-    NGAP_WARN("[gNB %d] AMF already registered but not in the waiting state, retrive the data (state %d, cnx %d, amf_nb %d, amf_pending_nb %d)\n",
-              instance_p->instance,
-              amf->state, amf->cnx_id,
-              instance_p->ngap_amf_nb, instance_p->ngap_amf_pending_nb);
-  }
+
+  /* Create new AMF descriptor */
+  ngap_amf_data_p = calloc(1, sizeof(*ngap_amf_data_p));
+  DevAssert(ngap_amf_data_p != NULL);
+  ngap_amf_data_p->cnx_id                = ngap_gNB_fetch_add_global_cnx_id();
+  sctp_new_association_req_p->ulp_cnx_id = ngap_amf_data_p->cnx_id;
+  ngap_amf_data_p->assoc_id          = -1;
+  ngap_amf_data_p->broadcast_plmn_num = broadcast_plmn_num;
+  memcpy(&ngap_amf_data_p->amf_s1_ip,
+  	   amf_ip_address,
+  	   sizeof(*amf_ip_address));
+  for (int i = 0; i < broadcast_plmn_num; ++i)
+    ngap_amf_data_p->broadcast_plmn_index[i] = broadcast_plmn_index[i];
+
+  ngap_amf_data_p->ngap_gNB_instance = instance_p;
+  STAILQ_INIT(&ngap_amf_data_p->served_guami);
+  /* Insert the new descriptor in list of known AMF
+   * but not yet associated.
+   */
+  RB_INSERT(ngap_amf_map, &instance_p->ngap_amf_head, ngap_amf_data_p);
+  ngap_amf_data_p->state = NGAP_GNB_STATE_WAITING;
+  instance_p->ngap_amf_nb ++;
+  instance_p->ngap_amf_pending_nb ++;
 
   itti_send_msg_to_task(TASK_SCTP, instance_p->instance, message_p);
 }
@@ -280,13 +255,10 @@ static
 void ngap_gNB_handle_sctp_data_ind(sctp_data_ind_t *sctp_data_ind) {
   int result;
   DevAssert(sctp_data_ind != NULL);
-#if defined(TEST_S1C_AMF)
-  amf_test_s1_notify_sctp_data_ind(sctp_data_ind->assoc_id, sctp_data_ind->stream,
-                                   sctp_data_ind->buffer, sctp_data_ind->buffer_length);
-#else
+
   ngap_gNB_handle_message(sctp_data_ind->assoc_id, sctp_data_ind->stream,
                           sctp_data_ind->buffer, sctp_data_ind->buffer_length);
-#endif
+
   result = itti_free(TASK_UNKNOWN, sctp_data_ind->buffer);
   AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
 }
diff --git a/openair3/NGAP/ngap_gNB_nas_procedures.c b/openair3/NGAP/ngap_gNB_nas_procedures.c
index 10b5baf31c8a3155b7812920fec8526b9923b6ad..197cf88a52425c7f19c04c4349291addf579d354 100644
--- a/openair3/NGAP/ngap_gNB_nas_procedures.c
+++ b/openair3/NGAP/ngap_gNB_nas_procedures.c
@@ -55,276 +55,276 @@ int ngap_gNB_handle_nas_first_req(
     instance_t instance, ngap_nas_first_req_t *ngap_nas_first_req_p)
 //------------------------------------------------------------------------------
 {
-    ngap_gNB_instance_t          *instance_p = NULL;
-    struct ngap_gNB_amf_data_s   *amf_desc_p = NULL;
-    struct ngap_gNB_ue_context_s *ue_desc_p  = NULL;
-    NGAP_NGAP_PDU_t               pdu;
-    NGAP_InitialUEMessage_t      *out;
-    NGAP_InitialUEMessage_IEs_t  *ie;
-    NGAP_UserLocationInformationNR_t *userinfo_nr_p = NULL;
-    uint8_t  *buffer = NULL;
-    uint32_t  length = 0;
-    DevAssert(ngap_nas_first_req_p != NULL);
-    /* Retrieve the NGAP gNB instance associated with Mod_id */
-    instance_p = ngap_gNB_get_instance(instance);
-    DevAssert(instance_p != NULL);
-    memset(&pdu, 0, sizeof(pdu));
-    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
-    pdu.choice.initiatingMessage = (NGAP_InitiatingMessage_t *)calloc(1,sizeof(NGAP_InitiatingMessage_t));
-    pdu.choice.initiatingMessage->procedureCode = NGAP_ProcedureCode_id_InitialUEMessage;
-    pdu.choice.initiatingMessage->criticality = NGAP_Criticality_ignore;
-    pdu.choice.initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_InitialUEMessage;
-    out = &pdu.choice.initiatingMessage->value.choice.InitialUEMessage;
-
-    /* Select the AMF corresponding to the provided GUAMI. */
-    //TODO have not be test. it's should be test
-    if (ngap_nas_first_req_p->ue_identity.presenceMask & NGAP_UE_IDENTITIES_guami) {
-        amf_desc_p = ngap_gNB_nnsf_select_amf_by_guami(
-                         instance_p,
-                         ngap_nas_first_req_p->establishment_cause,
-                         ngap_nas_first_req_p->ue_identity.guami);
-
-        if (amf_desc_p) {
-            NGAP_INFO("[gNB %d] Chose AMF '%s' (assoc_id %d) through GUAMI MCC %d MNC %d AMFRI %d AMFSI %d AMFPT %d\n",
-                      instance,
-                      amf_desc_p->amf_name,
-                      amf_desc_p->assoc_id,
-                      ngap_nas_first_req_p->ue_identity.guami.mcc,
-                      ngap_nas_first_req_p->ue_identity.guami.mnc,
-                      ngap_nas_first_req_p->ue_identity.guami.amf_region_id,
-                      ngap_nas_first_req_p->ue_identity.guami.amf_set_id,
-                      ngap_nas_first_req_p->ue_identity.guami.amf_pointer);
-        }
+  ngap_gNB_instance_t          *instance_p = NULL;
+  struct ngap_gNB_amf_data_s   *amf_desc_p = NULL;
+  struct ngap_gNB_ue_context_s *ue_desc_p  = NULL;
+  NGAP_NGAP_PDU_t               pdu;
+  NGAP_InitialUEMessage_t      *out;
+  NGAP_InitialUEMessage_IEs_t  *ie;
+  NGAP_UserLocationInformationNR_t *userinfo_nr_p = NULL;
+  uint8_t  *buffer = NULL;
+  uint32_t  length = 0;
+  DevAssert(ngap_nas_first_req_p != NULL);
+  /* Retrieve the NGAP gNB instance associated with Mod_id */
+  instance_p = ngap_gNB_get_instance(instance);
+  DevAssert(instance_p != NULL);
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
+  pdu.choice.initiatingMessage = (NGAP_InitiatingMessage_t *)calloc(1,sizeof(NGAP_InitiatingMessage_t));
+  pdu.choice.initiatingMessage->procedureCode = NGAP_ProcedureCode_id_InitialUEMessage;
+  pdu.choice.initiatingMessage->criticality = NGAP_Criticality_ignore;
+  pdu.choice.initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_InitialUEMessage;
+  out = &pdu.choice.initiatingMessage->value.choice.InitialUEMessage;
+
+  /* Select the AMF corresponding to the provided GUAMI. */
+  //TODO have not be test. it's should be test
+  if (ngap_nas_first_req_p->ue_identity.presenceMask & NGAP_UE_IDENTITIES_guami) {
+    amf_desc_p = ngap_gNB_nnsf_select_amf_by_guami(
+                     instance_p,
+                     ngap_nas_first_req_p->establishment_cause,
+                     ngap_nas_first_req_p->ue_identity.guami);
+
+    if (amf_desc_p) {
+        NGAP_INFO("[gNB %d] Chose AMF '%s' (assoc_id %d) through GUAMI MCC %d MNC %d AMFRI %d AMFSI %d AMFPT %d\n",
+                  instance,
+                  amf_desc_p->amf_name,
+                  amf_desc_p->assoc_id,
+                  ngap_nas_first_req_p->ue_identity.guami.mcc,
+                  ngap_nas_first_req_p->ue_identity.guami.mnc,
+                  ngap_nas_first_req_p->ue_identity.guami.amf_region_id,
+                  ngap_nas_first_req_p->ue_identity.guami.amf_set_id,
+                  ngap_nas_first_req_p->ue_identity.guami.amf_pointer);
     }
+  }
 
-    if (amf_desc_p == NULL) {
-        /* Select the AMF corresponding to the provided s-TMSI. */
-        //TODO have not be test. it's should be test
-        if (ngap_nas_first_req_p->ue_identity.presenceMask & NGAP_UE_IDENTITIES_FiveG_s_tmsi) {
-            amf_desc_p = ngap_gNB_nnsf_select_amf_by_amf_setid(
-                             instance_p,
-                             ngap_nas_first_req_p->establishment_cause,
-                             ngap_nas_first_req_p->selected_plmn_identity,
-                             ngap_nas_first_req_p->ue_identity.s_tmsi.amf_set_id);
-
-            if (amf_desc_p) {
-                NGAP_INFO("[gNB %d] Chose AMF '%s' (assoc_id %d) through S-TMSI AMFSI %d and selected PLMN Identity index %d MCC %d MNC %d\n",
-                          instance,
-                          amf_desc_p->amf_name,
-                          amf_desc_p->assoc_id,
-                          ngap_nas_first_req_p->ue_identity.s_tmsi.amf_set_id,
-                          ngap_nas_first_req_p->selected_plmn_identity,
-                          instance_p->mcc[ngap_nas_first_req_p->selected_plmn_identity],
-                          instance_p->mnc[ngap_nas_first_req_p->selected_plmn_identity]);
-            }
-        }
-    }
-
-    if (amf_desc_p == NULL) {
-        /* Select AMF based on the selected PLMN identity, received through RRC
-         * Connection Setup Complete */
-        //TODO have not be test. it's should be test
-        amf_desc_p = ngap_gNB_nnsf_select_amf_by_plmn_id(
+  if (amf_desc_p == NULL) {
+    /* Select the AMF corresponding to the provided s-TMSI. */
+    //TODO have not be test. it's should be test
+    if (ngap_nas_first_req_p->ue_identity.presenceMask & NGAP_UE_IDENTITIES_FiveG_s_tmsi) {
+        amf_desc_p = ngap_gNB_nnsf_select_amf_by_amf_setid(
                          instance_p,
                          ngap_nas_first_req_p->establishment_cause,
-                         ngap_nas_first_req_p->selected_plmn_identity);
+                         ngap_nas_first_req_p->selected_plmn_identity,
+                         ngap_nas_first_req_p->ue_identity.s_tmsi.amf_set_id);
 
         if (amf_desc_p) {
-            NGAP_INFO("[gNB %d] Chose AMF '%s' (assoc_id %d) through selected PLMN Identity index %d MCC %d MNC %d\n",
+            NGAP_INFO("[gNB %d] Chose AMF '%s' (assoc_id %d) through S-TMSI AMFSI %d and selected PLMN Identity index %d MCC %d MNC %d\n",
                       instance,
                       amf_desc_p->amf_name,
                       amf_desc_p->assoc_id,
+                      ngap_nas_first_req_p->ue_identity.s_tmsi.amf_set_id,
                       ngap_nas_first_req_p->selected_plmn_identity,
                       instance_p->mcc[ngap_nas_first_req_p->selected_plmn_identity],
                       instance_p->mnc[ngap_nas_first_req_p->selected_plmn_identity]);
         }
     }
+  }
 
-    if (amf_desc_p == NULL) {
-        /*
-         * If no AMF corresponds to the GUAMI, the s-TMSI, or the selected PLMN
-         * identity, selects the AMF with the highest capacity.
-         */
-        //TODO have not be test. it's should be test
-        amf_desc_p = ngap_gNB_nnsf_select_amf(
-                         instance_p,
-                         ngap_nas_first_req_p->establishment_cause);
-
-        if (amf_desc_p) {
-            NGAP_INFO("[gNB %d] Chose AMF '%s' (assoc_id %d) through highest relative capacity\n",
-                      instance,
-                      amf_desc_p->amf_name,
-                      amf_desc_p->assoc_id);
-        }
+  if (amf_desc_p == NULL) {
+    /* Select AMF based on the selected PLMN identity, received through RRC
+     * Connection Setup Complete */
+    //TODO have not be test. it's should be test
+    amf_desc_p = ngap_gNB_nnsf_select_amf_by_plmn_id(
+                     instance_p,
+                     ngap_nas_first_req_p->establishment_cause,
+                     ngap_nas_first_req_p->selected_plmn_identity);
+
+    if (amf_desc_p) {
+        NGAP_INFO("[gNB %d] Chose AMF '%s' (assoc_id %d) through selected PLMN Identity index %d MCC %d MNC %d\n",
+                  instance,
+                  amf_desc_p->amf_name,
+                  amf_desc_p->assoc_id,
+                  ngap_nas_first_req_p->selected_plmn_identity,
+                  instance_p->mcc[ngap_nas_first_req_p->selected_plmn_identity],
+                  instance_p->mnc[ngap_nas_first_req_p->selected_plmn_identity]);
     }
+  }
 
-    if (amf_desc_p == NULL) {
-        /*
-         * In case gNB has no AMF associated, the gNB should inform RRC and discard
-         * this request.
-         */
-        NGAP_WARN("No AMF is associated to the gNB\n");
-        // TODO: Inform RRC
-        return -1;
+  if (amf_desc_p == NULL) {
+    /*
+     * If no AMF corresponds to the GUAMI, the s-TMSI, or the selected PLMN
+     * identity, selects the AMF with the highest capacity.
+     */
+    //TODO have not be test. it's should be test
+    amf_desc_p = ngap_gNB_nnsf_select_amf(
+                     instance_p,
+                     ngap_nas_first_req_p->establishment_cause);
+
+    if (amf_desc_p) {
+        NGAP_INFO("[gNB %d] Chose AMF '%s' (assoc_id %d) through highest relative capacity\n",
+                  instance,
+                  amf_desc_p->amf_name,
+                  amf_desc_p->assoc_id);
     }
+  }
 
-    /* The gNB should allocate a unique gNB UE NGAP ID for this UE. The value
-     * will be used for the duration of the connectivity.
+  if (amf_desc_p == NULL) {
+    /*
+     * In case gNB has no AMF associated, the gNB should inform RRC and discard
+     * this request.
      */
-    ue_desc_p = ngap_gNB_allocate_new_UE_context();
-    DevAssert(ue_desc_p != NULL);
-    /* Keep a reference to the selected AMF */
-    ue_desc_p->amf_ref       = amf_desc_p;
-    ue_desc_p->ue_initial_id = ngap_nas_first_req_p->ue_initial_id;
-    ue_desc_p->gNB_instance  = instance_p;
-    ue_desc_p->selected_plmn_identity = ngap_nas_first_req_p->selected_plmn_identity;
-
-    do {
-        struct ngap_gNB_ue_context_s *collision_p;
-        /* Peek a random value for the gNB_ue_ngap_id */
-        ue_desc_p->gNB_ue_ngap_id = (random() + random()) & 0xffffffff;
-
-        if ((collision_p = RB_INSERT(ngap_ue_map, &instance_p->ngap_ue_head, ue_desc_p))
-                == NULL) {
-            NGAP_DEBUG("Found usable gNB_ue_ngap_id: 0x%08x %u(10)\n",
-                       ue_desc_p->gNB_ue_ngap_id,
-                       ue_desc_p->gNB_ue_ngap_id);
-            /* Break the loop as the id is not already used by another UE */
-            break;
-        }
-    } while(1);
-
-    /* mandatory */
-    ie = (NGAP_InitialUEMessage_IEs_t *)calloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
-    ie->criticality = NGAP_Criticality_reject;
-    ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_RAN_UE_NGAP_ID;
-    ie->value.choice.RAN_UE_NGAP_ID = ue_desc_p->gNB_ue_ngap_id;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* mandatory */
-    ie = (NGAP_InitialUEMessage_IEs_t *)calloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_NAS_PDU;
-    ie->criticality = NGAP_Criticality_reject;
-    ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_NAS_PDU;
+    NGAP_WARN("No AMF is associated to the gNB\n");
+    // TODO: Inform RRC
+    return -1;
+  }
+
+  /* The gNB should allocate a unique gNB UE NGAP ID for this UE. The value
+   * will be used for the duration of the connectivity.
+   */
+  ue_desc_p = ngap_gNB_allocate_new_UE_context();
+  DevAssert(ue_desc_p != NULL);
+  /* Keep a reference to the selected AMF */
+  ue_desc_p->amf_ref       = amf_desc_p;
+  ue_desc_p->ue_initial_id = ngap_nas_first_req_p->ue_initial_id;
+  ue_desc_p->gNB_instance  = instance_p;
+  ue_desc_p->selected_plmn_identity = ngap_nas_first_req_p->selected_plmn_identity;
+
+  do {
+    struct ngap_gNB_ue_context_s *collision_p;
+    /* Peek a random value for the gNB_ue_ngap_id */
+    ue_desc_p->gNB_ue_ngap_id = (random() + random()) & 0xffffffff;
+
+    if ((collision_p = RB_INSERT(ngap_ue_map, &instance_p->ngap_ue_head, ue_desc_p))
+            == NULL) {
+        NGAP_DEBUG("Found usable gNB_ue_ngap_id: 0x%08x %u(10)\n",
+                   ue_desc_p->gNB_ue_ngap_id,
+                   ue_desc_p->gNB_ue_ngap_id);
+        /* Break the loop as the id is not already used by another UE */
+        break;
+    }
+  } while(1);
+
+  /* mandatory */
+  ie = (NGAP_InitialUEMessage_IEs_t *)calloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_reject;
+  ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_RAN_UE_NGAP_ID;
+  ie->value.choice.RAN_UE_NGAP_ID = ue_desc_p->gNB_ue_ngap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (NGAP_InitialUEMessage_IEs_t *)calloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_NAS_PDU;
+  ie->criticality = NGAP_Criticality_reject;
+  ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_NAS_PDU;
 #if 1
-    ie->value.choice.NAS_PDU.buf = ngap_nas_first_req_p->nas_pdu.buffer;
+  ie->value.choice.NAS_PDU.buf = ngap_nas_first_req_p->nas_pdu.buffer;
 #else
-    ie->value.choice.NAS_PDU.buf = malloc(ngap_nas_first_req_p->nas_pdu.length);
-    memcpy(ie->value.choice.NAS_PDU.buf,
-           ngap_nas_first_req_p->nas_pdu.buffer,
-           ngap_nas_first_req_p->nas_pdu.length);
+  ie->value.choice.NAS_PDU.buf = malloc(ngap_nas_first_req_p->nas_pdu.length);
+  memcpy(ie->value.choice.NAS_PDU.buf,
+         ngap_nas_first_req_p->nas_pdu.buffer,
+         ngap_nas_first_req_p->nas_pdu.length);
 #endif
-    ie->value.choice.NAS_PDU.size = ngap_nas_first_req_p->nas_pdu.length;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    
-    /* mandatory */
-    ie = (NGAP_InitialUEMessage_IEs_t *)calloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_UserLocationInformation;
-    ie->criticality = NGAP_Criticality_reject;
-    ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_UserLocationInformation;
-
-    ie->value.choice.UserLocationInformation.present = NGAP_UserLocationInformation_PR_userLocationInformationNR;
-
-    ie->value.choice.UserLocationInformation.choice.userLocationInformationNR = 
-        CALLOC(1, sizeof(*ie->value.choice.UserLocationInformation.choice.userLocationInformationNR));
-    userinfo_nr_p = ie->value.choice.UserLocationInformation.choice.userLocationInformationNR;
-
-    /* Set nRCellIdentity. default userLocationInformationNR */
-    MACRO_GNB_ID_TO_CELL_IDENTITY(instance_p->gNB_id,
-                                      0, // Cell ID
-                                      &userinfo_nr_p->nR_CGI.nRCellIdentity);
-    MCC_MNC_TO_TBCD(instance_p->mcc[ue_desc_p->selected_plmn_identity],
+  ie->value.choice.NAS_PDU.size = ngap_nas_first_req_p->nas_pdu.length;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  
+  /* mandatory */
+  ie = (NGAP_InitialUEMessage_IEs_t *)calloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_UserLocationInformation;
+  ie->criticality = NGAP_Criticality_reject;
+  ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_UserLocationInformation;
+
+  ie->value.choice.UserLocationInformation.present = NGAP_UserLocationInformation_PR_userLocationInformationNR;
+
+  ie->value.choice.UserLocationInformation.choice.userLocationInformationNR = 
+      CALLOC(1, sizeof(*ie->value.choice.UserLocationInformation.choice.userLocationInformationNR));
+  userinfo_nr_p = ie->value.choice.UserLocationInformation.choice.userLocationInformationNR;
+
+  /* Set nRCellIdentity. default userLocationInformationNR */
+  MACRO_GNB_ID_TO_CELL_IDENTITY(instance_p->gNB_id,
+                                    0, // Cell ID
+                                    &userinfo_nr_p->nR_CGI.nRCellIdentity);
+  MCC_MNC_TO_TBCD(instance_p->mcc[ue_desc_p->selected_plmn_identity],
+                  instance_p->mnc[ue_desc_p->selected_plmn_identity],
+                  instance_p->mnc_digit_length[ue_desc_p->selected_plmn_identity],
+                  &userinfo_nr_p->nR_CGI.pLMNIdentity);
+
+  /* Set TAI */
+  INT24_TO_OCTET_STRING(instance_p->tac, &userinfo_nr_p->tAI.tAC);
+  MCC_MNC_TO_PLMNID(instance_p->mcc[ue_desc_p->selected_plmn_identity],
                     instance_p->mnc[ue_desc_p->selected_plmn_identity],
                     instance_p->mnc_digit_length[ue_desc_p->selected_plmn_identity],
-                    &userinfo_nr_p->nR_CGI.pLMNIdentity);
-
-    /* Set TAI */
-    INT24_TO_OCTET_STRING(instance_p->tac, &userinfo_nr_p->tAI.tAC);
-    MCC_MNC_TO_PLMNID(instance_p->mcc[ue_desc_p->selected_plmn_identity],
-                      instance_p->mnc[ue_desc_p->selected_plmn_identity],
-                      instance_p->mnc_digit_length[ue_desc_p->selected_plmn_identity],
-                      &userinfo_nr_p->tAI.pLMNIdentity);
-
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-
-
-    /* Set the establishment cause according to those provided by RRC */
-    DevCheck(ngap_nas_first_req_p->establishment_cause < NGAP_RRC_CAUSE_LAST,
-             ngap_nas_first_req_p->establishment_cause, NGAP_RRC_CAUSE_LAST, 0);
-    
-    /* mandatory */
-    ie = (NGAP_InitialUEMessage_IEs_t *)calloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_RRCEstablishmentCause;
-    ie->criticality = NGAP_Criticality_ignore;
-    ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_RRCEstablishmentCause;
-    ie->value.choice.RRCEstablishmentCause = ngap_nas_first_req_p->establishment_cause;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-
-    /* optional */
-    if (ngap_nas_first_req_p->ue_identity.presenceMask & NGAP_UE_IDENTITIES_FiveG_s_tmsi) {
-        NGAP_DEBUG("FIVEG_S_TMSI_PRESENT\n");
-        ie = (NGAP_InitialUEMessage_IEs_t *)calloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
-        ie->id = NGAP_ProtocolIE_ID_id_FiveG_S_TMSI;
-        ie->criticality = NGAP_Criticality_reject;
-        ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_FiveG_S_TMSI;
-        AMF_SETID_TO_BIT_STRING(ngap_nas_first_req_p->ue_identity.s_tmsi.amf_set_id,
-                                 &ie->value.choice.FiveG_S_TMSI.aMFSetID);
-        AMF_SETID_TO_BIT_STRING(ngap_nas_first_req_p->ue_identity.s_tmsi.amf_pointer,
-                                 &ie->value.choice.FiveG_S_TMSI.aMFPointer);
-        M_TMSI_TO_OCTET_STRING(ngap_nas_first_req_p->ue_identity.s_tmsi.m_tmsi,
-                                 &ie->value.choice.FiveG_S_TMSI.fiveG_TMSI);
-        ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    }
-
-
-    /* optional */
+                    &userinfo_nr_p->tAI.pLMNIdentity);
+
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+
+  /* Set the establishment cause according to those provided by RRC */
+  DevCheck(ngap_nas_first_req_p->establishment_cause < NGAP_RRC_CAUSE_LAST,
+           ngap_nas_first_req_p->establishment_cause, NGAP_RRC_CAUSE_LAST, 0);
+  
+  /* mandatory */
+  ie = (NGAP_InitialUEMessage_IEs_t *)calloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_RRCEstablishmentCause;
+  ie->criticality = NGAP_Criticality_ignore;
+  ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_RRCEstablishmentCause;
+  ie->value.choice.RRCEstablishmentCause = ngap_nas_first_req_p->establishment_cause;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  /* optional */
+  if (ngap_nas_first_req_p->ue_identity.presenceMask & NGAP_UE_IDENTITIES_FiveG_s_tmsi) {
+    NGAP_DEBUG("FIVEG_S_TMSI_PRESENT\n");
     ie = (NGAP_InitialUEMessage_IEs_t *)calloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_UEContextRequest;
-    ie->criticality = NGAP_Criticality_ignore;
-    ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_UEContextRequest;
-    ie->value.choice.UEContextRequest = NGAP_UEContextRequest_requested;
+    ie->id = NGAP_ProtocolIE_ID_id_FiveG_S_TMSI;
+    ie->criticality = NGAP_Criticality_reject;
+    ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_FiveG_S_TMSI;
+    AMF_SETID_TO_BIT_STRING(ngap_nas_first_req_p->ue_identity.s_tmsi.amf_set_id,
+                             &ie->value.choice.FiveG_S_TMSI.aMFSetID);
+    AMF_SETID_TO_BIT_STRING(ngap_nas_first_req_p->ue_identity.s_tmsi.amf_pointer,
+                             &ie->value.choice.FiveG_S_TMSI.aMFPointer);
+    M_TMSI_TO_OCTET_STRING(ngap_nas_first_req_p->ue_identity.s_tmsi.m_tmsi,
+                             &ie->value.choice.FiveG_S_TMSI.fiveG_TMSI);
     ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+
+  /* optional */
+  ie = (NGAP_InitialUEMessage_IEs_t *)calloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_UEContextRequest;
+  ie->criticality = NGAP_Criticality_ignore;
+  ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_UEContextRequest;
+  ie->value.choice.UEContextRequest = NGAP_UEContextRequest_requested;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+
+  if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
+      /* Failed to encode message */
+      DevMessage("Failed to encode initial UE message\n");
+  }
+
+  /* Update the current NGAP UE state */
+  ue_desc_p->ue_state = NGAP_UE_WAITING_CSR;
+  /* Assign a stream for this UE :
+   * From 3GPP 38.412 7)Transport layers:
+   *  Within the SCTP association established between one AMF and gNB pair:
+   *  - a single pair of stream identifiers shall be reserved for the sole use
+   *      of NGAP elementary procedures that utilize non UE-associated signalling.
+   *  - At least one pair of stream identifiers shall be reserved for the sole use
+   *      of NGAP elementary procedures that utilize UE-associated signallings.
+   *      However a few pairs (i.e. more than one) should be reserved.
+   *  - A single UE-associated signalling shall use one SCTP stream and
+   *      the stream should not be changed during the communication of the
+   *      UE-associated signalling.
+   */
+  amf_desc_p->nextstream = (amf_desc_p->nextstream + 1) % amf_desc_p->out_streams;
+
+  if ((amf_desc_p->nextstream == 0) && (amf_desc_p->out_streams > 1)) {
+    amf_desc_p->nextstream += 1;
+  }
+
+  ue_desc_p->tx_stream = amf_desc_p->nextstream;
+  MSC_LOG_TX_MESSAGE(
+      MSC_NGAP_GNB,
+      MSC_NGAP_AMF,
+      (const char *)NULL,
+      0,
+      MSC_AS_TIME_FMT" initialUEMessage initiatingMessage gNB_ue_ngap_id %u",
+      0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
+      ue_desc_p->gNB_ue_ngap_id);
+  /* Send encoded message over sctp */
+  ngap_gNB_itti_send_sctp_data_req(instance_p->instance, amf_desc_p->assoc_id,
+                                   buffer, length, ue_desc_p->tx_stream);
 
-
-    if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
-        /* Failed to encode message */
-        DevMessage("Failed to encode initial UE message\n");
-    }
-
-    /* Update the current NGAP UE state */
-    ue_desc_p->ue_state = NGAP_UE_WAITING_CSR;
-    /* Assign a stream for this UE :
-     * From 3GPP 38.412 7)Transport layers:
-     *  Within the SCTP association established between one AMF and gNB pair:
-     *  - a single pair of stream identifiers shall be reserved for the sole use
-     *      of NGAP elementary procedures that utilize non UE-associated signalling.
-     *  - At least one pair of stream identifiers shall be reserved for the sole use
-     *      of NGAP elementary procedures that utilize UE-associated signallings.
-     *      However a few pairs (i.e. more than one) should be reserved.
-     *  - A single UE-associated signalling shall use one SCTP stream and
-     *      the stream should not be changed during the communication of the
-     *      UE-associated signalling.
-     */
-    amf_desc_p->nextstream = (amf_desc_p->nextstream + 1) % amf_desc_p->out_streams;
-
-    if ((amf_desc_p->nextstream == 0) && (amf_desc_p->out_streams > 1)) {
-        amf_desc_p->nextstream += 1;
-    }
-
-    ue_desc_p->tx_stream = amf_desc_p->nextstream;
-    MSC_LOG_TX_MESSAGE(
-        MSC_NGAP_GNB,
-        MSC_NGAP_AMF,
-        (const char *)NULL,
-        0,
-        MSC_AS_TIME_FMT" initialUEMessage initiatingMessage gNB_ue_ngap_id %u",
-        0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
-        ue_desc_p->gNB_ue_ngap_id);
-    /* Send encoded message over sctp */
-    ngap_gNB_itti_send_sctp_data_req(instance_p->instance, amf_desc_p->assoc_id,
-                                     buffer, length, ue_desc_p->tx_stream);
-
-    return 0;
+  return 0;
 }
 
 //------------------------------------------------------------------------------
@@ -334,217 +334,217 @@ int ngap_gNB_handle_nas_downlink(uint32_t         assoc_id,
 //------------------------------------------------------------------------------
 {
 
-    ngap_gNB_amf_data_t             *amf_desc_p        = NULL;
-    ngap_gNB_ue_context_t           *ue_desc_p         = NULL;
-    ngap_gNB_instance_t             *ngap_gNB_instance = NULL;
-    NGAP_DownlinkNASTransport_t     *container;
-    NGAP_DownlinkNASTransport_IEs_t *ie;
-    NGAP_RAN_UE_NGAP_ID_t            gnb_ue_ngap_id;
-    uint64_t                         amf_ue_ngap_id;
-    DevAssert(pdu != NULL);
-
-    /* UE-related procedure -> stream != 0 */
-    if (stream == 0) {
-        NGAP_ERROR("[SCTP %d] Received UE-related procedure on stream == 0\n",
-                   assoc_id);
-        return -1;
-    }
-
-    if ((amf_desc_p = ngap_gNB_get_AMF(NULL, assoc_id, 0)) == NULL) {
-        NGAP_ERROR(
-            "[SCTP %d] Received NAS downlink message for non existing AMF context\n",
-            assoc_id);
-        return -1;
-    }
-
-    ngap_gNB_instance = amf_desc_p->ngap_gNB_instance;
-    /* Prepare the NGAP message to encode */
-    container = &pdu->choice.initiatingMessage->value.choice.DownlinkNASTransport;
-    NGAP_FIND_PROTOCOLIE_BY_ID(NGAP_DownlinkNASTransport_IEs_t, ie, container,
-                               NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID, true);
-    asn_INTEGER2ulong(&(ie->value.choice.AMF_UE_NGAP_ID), &amf_ue_ngap_id);
-
-
-    NGAP_FIND_PROTOCOLIE_BY_ID(NGAP_DownlinkNASTransport_IEs_t, ie, container,
-                               NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID, true);
-    gnb_ue_ngap_id = ie->value.choice.RAN_UE_NGAP_ID;
-
-    if ((ue_desc_p = ngap_gNB_get_ue_context(ngap_gNB_instance,
-                     gnb_ue_ngap_id)) == NULL) {
-        MSC_LOG_RX_DISCARDED_MESSAGE(
-            MSC_NGAP_GNB,
-            MSC_NGAP_AMF,
-            NULL,
-            0,
-            MSC_AS_TIME_FMT" downlinkNASTransport  gNB_ue_ngap_id %u amf_ue_ngap_id %u",
-            gnb_ue_ngap_id,
-            amf_ue_ngap_id);
-        NGAP_ERROR("[SCTP %d] Received NAS downlink message for non existing UE context gNB_UE_NGAP_ID: 0x%lx\n",
-                   assoc_id,
-                   gnb_ue_ngap_id);
-        return -1;
-    }
-
-    if (0 == ue_desc_p->rx_stream) {
-        ue_desc_p->rx_stream = stream;
-    } else if (stream != ue_desc_p->rx_stream) {
-        NGAP_ERROR("[SCTP %d] Received UE-related procedure on stream %u, expecting %u\n",
-                   assoc_id, stream, ue_desc_p->rx_stream);
-        return -1;
-    }
-
-    /* Is it the first outcome of the AMF for this UE ? If so store the amf
-     * UE ngap id.
-     */
-    if (ue_desc_p->amf_ue_ngap_id == 0) {
-        ue_desc_p->amf_ue_ngap_id = amf_ue_ngap_id;
-    } else {
-        /* We already have a amf ue ngap id check the received is the same */
-        if (ue_desc_p->amf_ue_ngap_id != amf_ue_ngap_id) {
-            NGAP_ERROR("[SCTP %d] Mismatch in AMF UE NGAP ID (0x%lx != 0x%"PRIx64"\n",
-                       assoc_id,
-                       amf_ue_ngap_id,
-                       (uint64_t)ue_desc_p->amf_ue_ngap_id
-                      );
-            return -1;
-        }
-    }
-
-    MSC_LOG_RX_MESSAGE(
+  ngap_gNB_amf_data_t             *amf_desc_p        = NULL;
+  ngap_gNB_ue_context_t           *ue_desc_p         = NULL;
+  ngap_gNB_instance_t             *ngap_gNB_instance = NULL;
+  NGAP_DownlinkNASTransport_t     *container;
+  NGAP_DownlinkNASTransport_IEs_t *ie;
+  NGAP_RAN_UE_NGAP_ID_t            gnb_ue_ngap_id;
+  uint64_t                         amf_ue_ngap_id;
+  DevAssert(pdu != NULL);
+
+  /* UE-related procedure -> stream != 0 */
+  if (stream == 0) {
+    NGAP_ERROR("[SCTP %d] Received UE-related procedure on stream == 0\n",
+               assoc_id);
+    return -1;
+  }
+
+  if ((amf_desc_p = ngap_gNB_get_AMF(NULL, assoc_id, 0)) == NULL) {
+    NGAP_ERROR(
+        "[SCTP %d] Received NAS downlink message for non existing AMF context\n",
+        assoc_id);
+    return -1;
+  }
+
+  ngap_gNB_instance = amf_desc_p->ngap_gNB_instance;
+  /* Prepare the NGAP message to encode */
+  container = &pdu->choice.initiatingMessage->value.choice.DownlinkNASTransport;
+  NGAP_FIND_PROTOCOLIE_BY_ID(NGAP_DownlinkNASTransport_IEs_t, ie, container,
+                             NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID, true);
+  asn_INTEGER2ulong(&(ie->value.choice.AMF_UE_NGAP_ID), &amf_ue_ngap_id);
+
+
+  NGAP_FIND_PROTOCOLIE_BY_ID(NGAP_DownlinkNASTransport_IEs_t, ie, container,
+                             NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID, true);
+  gnb_ue_ngap_id = ie->value.choice.RAN_UE_NGAP_ID;
+
+  if ((ue_desc_p = ngap_gNB_get_ue_context(ngap_gNB_instance,
+                   gnb_ue_ngap_id)) == NULL) {
+    MSC_LOG_RX_DISCARDED_MESSAGE(
         MSC_NGAP_GNB,
         MSC_NGAP_AMF,
         NULL,
         0,
         MSC_AS_TIME_FMT" downlinkNASTransport  gNB_ue_ngap_id %u amf_ue_ngap_id %u",
-        assoc_id,
+        gnb_ue_ngap_id,
         amf_ue_ngap_id);
+    NGAP_ERROR("[SCTP %d] Received NAS downlink message for non existing UE context gNB_UE_NGAP_ID: 0x%lx\n",
+               assoc_id,
+               gnb_ue_ngap_id);
+    return -1;
+  }
+
+  if (0 == ue_desc_p->rx_stream) {
+    ue_desc_p->rx_stream = stream;
+  } else if (stream != ue_desc_p->rx_stream) {
+    NGAP_ERROR("[SCTP %d] Received UE-related procedure on stream %u, expecting %u\n",
+               assoc_id, stream, ue_desc_p->rx_stream);
+    return -1;
+  }
+
+  /* Is it the first outcome of the AMF for this UE ? If so store the amf
+   * UE ngap id.
+   */
+  if (ue_desc_p->amf_ue_ngap_id == 0) {
+    ue_desc_p->amf_ue_ngap_id = amf_ue_ngap_id;
+  } else {
+    /* We already have a amf ue ngap id check the received is the same */
+    if (ue_desc_p->amf_ue_ngap_id != amf_ue_ngap_id) {
+        NGAP_ERROR("[SCTP %d] Mismatch in AMF UE NGAP ID (0x%lx != 0x%"PRIx64"\n",
+                   assoc_id,
+                   amf_ue_ngap_id,
+                   (uint64_t)ue_desc_p->amf_ue_ngap_id
+                  );
+        return -1;
+    }
+  }
+
+  MSC_LOG_RX_MESSAGE(
+      MSC_NGAP_GNB,
+      MSC_NGAP_AMF,
+      NULL,
+      0,
+      MSC_AS_TIME_FMT" downlinkNASTransport  gNB_ue_ngap_id %u amf_ue_ngap_id %u",
+      assoc_id,
+      amf_ue_ngap_id);
+
+  NGAP_FIND_PROTOCOLIE_BY_ID(NGAP_DownlinkNASTransport_IEs_t, ie, container,
+                             NGAP_ProtocolIE_ID_id_NAS_PDU, true);
+  /* Forward the NAS PDU to NR-RRC */
+  ngap_gNB_itti_send_nas_downlink_ind(ngap_gNB_instance->instance,
+                                      ue_desc_p->ue_initial_id,
+                                      ue_desc_p->gNB_ue_ngap_id,
+                                      ie->value.choice.NAS_PDU.buf,
+                                      ie->value.choice.NAS_PDU.size);
 
-    NGAP_FIND_PROTOCOLIE_BY_ID(NGAP_DownlinkNASTransport_IEs_t, ie, container,
-                               NGAP_ProtocolIE_ID_id_NAS_PDU, true);
-    /* Forward the NAS PDU to NR-RRC */
-    ngap_gNB_itti_send_nas_downlink_ind(ngap_gNB_instance->instance,
-                                        ue_desc_p->ue_initial_id,
-                                        ue_desc_p->gNB_ue_ngap_id,
-                                        ie->value.choice.NAS_PDU.buf,
-                                        ie->value.choice.NAS_PDU.size);
-
-    return 0;
+  return 0;
 }
 
 //------------------------------------------------------------------------------
 int ngap_gNB_nas_uplink(instance_t instance, ngap_uplink_nas_t *ngap_uplink_nas_p)
 //------------------------------------------------------------------------------
 {
-    struct ngap_gNB_ue_context_s  *ue_context_p;
-    ngap_gNB_instance_t           *ngap_gNB_instance_p;
-    NGAP_NGAP_PDU_t                pdu;
-    NGAP_UplinkNASTransport_t     *out;
-    NGAP_UplinkNASTransport_IEs_t *ie;
-    NGAP_UserLocationInformationNR_t *userinfo_nr_p = NULL;
-    uint8_t  *buffer;
-    uint32_t  length;
-    DevAssert(ngap_uplink_nas_p != NULL);
-    /* Retrieve the NGAP gNB instance associated with Mod_id */
-    ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
-    DevAssert(ngap_gNB_instance_p != NULL);
-
-    if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p, ngap_uplink_nas_p->gNB_ue_ngap_id)) == NULL) {
-        /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
-        NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: %08x\n",
-                  ngap_uplink_nas_p->gNB_ue_ngap_id);
-        return -1;
-    }
-
-    /* Uplink NAS transport can occur either during an ngap connected state
-     * or during initial attach (for example: NAS authentication).
-     */
-    if (!(ue_context_p->ue_state == NGAP_UE_CONNECTED ||
-            ue_context_p->ue_state == NGAP_UE_WAITING_CSR)) {
-        NGAP_WARN("You are attempting to send NAS data over non-connected "
-                  "gNB ue ngap id: %u, current state: %d\n",
-                  ngap_uplink_nas_p->gNB_ue_ngap_id, ue_context_p->ue_state);
-        return -1;
-    }
-
-    /* Prepare the NGAP message to encode */
-    memset(&pdu, 0, sizeof(pdu));
-    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
-    pdu.choice.initiatingMessage->procedureCode = NGAP_ProcedureCode_id_UplinkNASTransport;
-    pdu.choice.initiatingMessage->criticality = NGAP_Criticality_ignore;
-    pdu.choice.initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_UplinkNASTransport;
-    out = &pdu.choice.initiatingMessage->value.choice.UplinkNASTransport;
-    /* mandatory */
-    ie = (NGAP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(NGAP_UplinkNASTransport_IEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
-    ie->criticality = NGAP_Criticality_reject;
-    ie->value.present = NGAP_UplinkNASTransport_IEs__value_PR_AMF_UE_NGAP_ID;
-    //ie->value.choice.AMF_UE_NGAP_ID = ue_context_p->amf_ue_ngap_id;
-    asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* mandatory */
-    ie = (NGAP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(NGAP_UplinkNASTransport_IEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
-    ie->criticality = NGAP_Criticality_reject;
-    ie->value.present = NGAP_UplinkNASTransport_IEs__value_PR_RAN_UE_NGAP_ID;
-    ie->value.choice.RAN_UE_NGAP_ID = ue_context_p->gNB_ue_ngap_id;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* mandatory */
-    ie = (NGAP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(NGAP_UplinkNASTransport_IEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_NAS_PDU;
-    ie->criticality = NGAP_Criticality_reject;
-    ie->value.present = NGAP_UplinkNASTransport_IEs__value_PR_NAS_PDU;
-    ie->value.choice.NAS_PDU.buf = ngap_uplink_nas_p->nas_pdu.buffer;
-    ie->value.choice.NAS_PDU.size = ngap_uplink_nas_p->nas_pdu.length;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* mandatory */
-    ie = (NGAP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(NGAP_UplinkNASTransport_IEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_UserLocationInformation;
-    ie->criticality = NGAP_Criticality_ignore;
-    ie->value.present = NGAP_UplinkNASTransport_IEs__value_PR_UserLocationInformation;
-
-    ie->value.choice.UserLocationInformation.present = NGAP_UserLocationInformation_PR_userLocationInformationNR;
-    userinfo_nr_p = ie->value.choice.UserLocationInformation.choice.userLocationInformationNR;
-
-    /* Set nRCellIdentity. default userLocationInformationNR */
-    MACRO_GNB_ID_TO_CELL_IDENTITY(ngap_gNB_instance_p->gNB_id,
-                                      0, // Cell ID
-                                      &userinfo_nr_p->nR_CGI.nRCellIdentity);
-    MCC_MNC_TO_TBCD(ngap_gNB_instance_p->mcc[ue_context_p->selected_plmn_identity],
+  struct ngap_gNB_ue_context_s  *ue_context_p;
+  ngap_gNB_instance_t           *ngap_gNB_instance_p;
+  NGAP_NGAP_PDU_t                pdu;
+  NGAP_UplinkNASTransport_t     *out;
+  NGAP_UplinkNASTransport_IEs_t *ie;
+  NGAP_UserLocationInformationNR_t *userinfo_nr_p = NULL;
+  uint8_t  *buffer;
+  uint32_t  length;
+  DevAssert(ngap_uplink_nas_p != NULL);
+  /* Retrieve the NGAP gNB instance associated with Mod_id */
+  ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
+  DevAssert(ngap_gNB_instance_p != NULL);
+
+  if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p, ngap_uplink_nas_p->gNB_ue_ngap_id)) == NULL) {
+    /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
+    NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: %08x\n",
+              ngap_uplink_nas_p->gNB_ue_ngap_id);
+    return -1;
+  }
+
+  /* Uplink NAS transport can occur either during an ngap connected state
+   * or during initial attach (for example: NAS authentication).
+   */
+  if (!(ue_context_p->ue_state == NGAP_UE_CONNECTED ||
+          ue_context_p->ue_state == NGAP_UE_WAITING_CSR)) {
+    NGAP_WARN("You are attempting to send NAS data over non-connected "
+              "gNB ue ngap id: %u, current state: %d\n",
+              ngap_uplink_nas_p->gNB_ue_ngap_id, ue_context_p->ue_state);
+    return -1;
+  }
+
+  /* Prepare the NGAP message to encode */
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
+  pdu.choice.initiatingMessage->procedureCode = NGAP_ProcedureCode_id_UplinkNASTransport;
+  pdu.choice.initiatingMessage->criticality = NGAP_Criticality_ignore;
+  pdu.choice.initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_UplinkNASTransport;
+  out = &pdu.choice.initiatingMessage->value.choice.UplinkNASTransport;
+  /* mandatory */
+  ie = (NGAP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(NGAP_UplinkNASTransport_IEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_reject;
+  ie->value.present = NGAP_UplinkNASTransport_IEs__value_PR_AMF_UE_NGAP_ID;
+  //ie->value.choice.AMF_UE_NGAP_ID = ue_context_p->amf_ue_ngap_id;
+  asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (NGAP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(NGAP_UplinkNASTransport_IEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_reject;
+  ie->value.present = NGAP_UplinkNASTransport_IEs__value_PR_RAN_UE_NGAP_ID;
+  ie->value.choice.RAN_UE_NGAP_ID = ue_context_p->gNB_ue_ngap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (NGAP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(NGAP_UplinkNASTransport_IEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_NAS_PDU;
+  ie->criticality = NGAP_Criticality_reject;
+  ie->value.present = NGAP_UplinkNASTransport_IEs__value_PR_NAS_PDU;
+  ie->value.choice.NAS_PDU.buf = ngap_uplink_nas_p->nas_pdu.buffer;
+  ie->value.choice.NAS_PDU.size = ngap_uplink_nas_p->nas_pdu.length;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (NGAP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(NGAP_UplinkNASTransport_IEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_UserLocationInformation;
+  ie->criticality = NGAP_Criticality_ignore;
+  ie->value.present = NGAP_UplinkNASTransport_IEs__value_PR_UserLocationInformation;
+
+  ie->value.choice.UserLocationInformation.present = NGAP_UserLocationInformation_PR_userLocationInformationNR;
+  userinfo_nr_p = ie->value.choice.UserLocationInformation.choice.userLocationInformationNR;
+
+  /* Set nRCellIdentity. default userLocationInformationNR */
+  MACRO_GNB_ID_TO_CELL_IDENTITY(ngap_gNB_instance_p->gNB_id,
+                                    0, // Cell ID
+                                    &userinfo_nr_p->nR_CGI.nRCellIdentity);
+  MCC_MNC_TO_TBCD(ngap_gNB_instance_p->mcc[ue_context_p->selected_plmn_identity],
+                  ngap_gNB_instance_p->mnc[ue_context_p->selected_plmn_identity],
+                  ngap_gNB_instance_p->mnc_digit_length[ue_context_p->selected_plmn_identity],
+                  &userinfo_nr_p->nR_CGI.pLMNIdentity);
+
+  /* Set TAI */
+  INT24_TO_OCTET_STRING(ngap_gNB_instance_p->tac, &userinfo_nr_p->tAI.tAC);
+  MCC_MNC_TO_PLMNID(ngap_gNB_instance_p->mcc[ue_context_p->selected_plmn_identity],
                     ngap_gNB_instance_p->mnc[ue_context_p->selected_plmn_identity],
                     ngap_gNB_instance_p->mnc_digit_length[ue_context_p->selected_plmn_identity],
-                    &userinfo_nr_p->nR_CGI.pLMNIdentity);
-
-    /* Set TAI */
-    INT24_TO_OCTET_STRING(ngap_gNB_instance_p->tac, &userinfo_nr_p->tAI.tAC);
-    MCC_MNC_TO_PLMNID(ngap_gNB_instance_p->mcc[ue_context_p->selected_plmn_identity],
-                      ngap_gNB_instance_p->mnc[ue_context_p->selected_plmn_identity],
-                      ngap_gNB_instance_p->mnc_digit_length[ue_context_p->selected_plmn_identity],
-                      &userinfo_nr_p->tAI.pLMNIdentity);
+                    &userinfo_nr_p->tAI.pLMNIdentity);
+
+
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
+    NGAP_ERROR("Failed to encode uplink NAS transport\n");
+    /* Encode procedure has failed... */
+    return -1;
+  }
+
+  MSC_LOG_TX_MESSAGE(
+      MSC_NGAP_GNB,
+      MSC_NGAP_AMF,
+      (const char *)NULL,
+      0,
+      MSC_AS_TIME_FMT" uplinkNASTransport initiatingMessage gNB_ue_ngap_id %u amf_ue_ngap_id %u",
+      0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
+      ue_context_p->gNB_ue_ngap_id,
+      ue_context_p->amf_ue_ngap_id);
+  /* UE associated signalling -> use the allocated stream */
+  ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
+                                   ue_context_p->amf_ref->assoc_id, buffer,
+                                   length, ue_context_p->tx_stream);
 
-
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-
-    if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
-        NGAP_ERROR("Failed to encode uplink NAS transport\n");
-        /* Encode procedure has failed... */
-        return -1;
-    }
-
-    MSC_LOG_TX_MESSAGE(
-        MSC_NGAP_GNB,
-        MSC_NGAP_AMF,
-        (const char *)NULL,
-        0,
-        MSC_AS_TIME_FMT" uplinkNASTransport initiatingMessage gNB_ue_ngap_id %u amf_ue_ngap_id %u",
-        0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
-        ue_context_p->gNB_ue_ngap_id,
-        ue_context_p->amf_ue_ngap_id);
-    /* UE associated signalling -> use the allocated stream */
-    ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
-                                     ue_context_p->amf_ref->assoc_id, buffer,
-                                     length, ue_context_p->tx_stream);
-
-    return 0;
+  return 0;
 }
 
 
@@ -553,92 +553,92 @@ int ngap_gNB_nas_non_delivery_ind(instance_t instance,
                                   ngap_nas_non_delivery_ind_t *ngap_nas_non_delivery_ind)
 //------------------------------------------------------------------------------
 {
-    struct ngap_gNB_ue_context_s        *ue_context_p;
-    ngap_gNB_instance_t                 *ngap_gNB_instance_p;
-    NGAP_NGAP_PDU_t                      pdu;
-    NGAP_NASNonDeliveryIndication_t     *out;
-    NGAP_NASNonDeliveryIndication_IEs_t *ie;
-    uint8_t  *buffer;
-    uint32_t  length;
-    DevAssert(ngap_nas_non_delivery_ind != NULL);
-    /* Retrieve the NGAP gNB instance associated with Mod_id */
-    ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
-    DevAssert(ngap_gNB_instance_p != NULL);
-
-    if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p, ngap_nas_non_delivery_ind->gNB_ue_ngap_id)) == NULL) {
-        /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
-        NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: %08x\n",
-                  ngap_nas_non_delivery_ind->gNB_ue_ngap_id);
-        MSC_LOG_EVENT(
-            MSC_NGAP_GNB,
-            MSC_AS_TIME_FMT" Sent of NAS_NON_DELIVERY_IND to AMF failed, no context for gNB_ue_ngap_id %08x",
-            ngap_nas_non_delivery_ind->gNB_ue_ngap_id);
-        return -1;
-    }
-
-    /* Prepare the NGAP message to encode */
-    memset(&pdu, 0, sizeof(pdu));
-    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
-    pdu.choice.initiatingMessage->procedureCode = NGAP_ProcedureCode_id_NASNonDeliveryIndication;
-    pdu.choice.initiatingMessage->criticality = NGAP_Criticality_ignore;
-    pdu.choice.initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_NASNonDeliveryIndication;
-    out = &pdu.choice.initiatingMessage->value.choice.NASNonDeliveryIndication;
-    /* mandatory */
-    ie = (NGAP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(NGAP_NASNonDeliveryIndication_IEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
-    ie->criticality = NGAP_Criticality_reject;
-    ie->value.present = NGAP_NASNonDeliveryIndication_IEs__value_PR_AMF_UE_NGAP_ID;
-    asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* mandatory */
-    ie = (NGAP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(NGAP_NASNonDeliveryIndication_IEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
-    ie->criticality = NGAP_Criticality_reject;
-    ie->value.present = NGAP_NASNonDeliveryIndication_IEs__value_PR_RAN_UE_NGAP_ID;
-    ie->value.choice.RAN_UE_NGAP_ID = ue_context_p->gNB_ue_ngap_id;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* mandatory */
-    ie = (NGAP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(NGAP_NASNonDeliveryIndication_IEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_NAS_PDU;
-    ie->criticality = NGAP_Criticality_ignore;
-    ie->value.present = NGAP_NASNonDeliveryIndication_IEs__value_PR_NAS_PDU;
-    ie->value.choice.NAS_PDU.buf = ngap_nas_non_delivery_ind->nas_pdu.buffer;
-    ie->value.choice.NAS_PDU.size = ngap_nas_non_delivery_ind->nas_pdu.length;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* mandatory */
-    ie = (NGAP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(NGAP_NASNonDeliveryIndication_IEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_Cause;
-    ie->criticality = NGAP_Criticality_ignore;
-    /* Send a dummy cause */
-    ie->value.present = NGAP_NASNonDeliveryIndication_IEs__value_PR_Cause;
-    ie->value.choice.Cause.present = NGAP_Cause_PR_radioNetwork;
-    ie->value.choice.Cause.choice.radioNetwork = NGAP_CauseRadioNetwork_radio_connection_with_ue_lost;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-
-    if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
-        NGAP_ERROR("Failed to encode NAS NON delivery indication\n");
-        /* Encode procedure has failed... */
-        MSC_LOG_EVENT(
-            MSC_NGAP_GNB,
-            MSC_AS_TIME_FMT" Sent of NAS_NON_DELIVERY_IND to AMF failed (encoding)");
-        return -1;
-    }
-
-    MSC_LOG_TX_MESSAGE(
+  struct ngap_gNB_ue_context_s        *ue_context_p;
+  ngap_gNB_instance_t                 *ngap_gNB_instance_p;
+  NGAP_NGAP_PDU_t                      pdu;
+  NGAP_NASNonDeliveryIndication_t     *out;
+  NGAP_NASNonDeliveryIndication_IEs_t *ie;
+  uint8_t  *buffer;
+  uint32_t  length;
+  DevAssert(ngap_nas_non_delivery_ind != NULL);
+  /* Retrieve the NGAP gNB instance associated with Mod_id */
+  ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
+  DevAssert(ngap_gNB_instance_p != NULL);
+
+  if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p, ngap_nas_non_delivery_ind->gNB_ue_ngap_id)) == NULL) {
+    /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
+    NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: %08x\n",
+              ngap_nas_non_delivery_ind->gNB_ue_ngap_id);
+    MSC_LOG_EVENT(
         MSC_NGAP_GNB,
-        MSC_NGAP_AMF,
-        (const char *)buffer,
-        length,
-        MSC_AS_TIME_FMT" NASNonDeliveryIndication initiatingMessage gNB_ue_ngap_id %u amf_ue_ngap_id %lu",
-        0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
-        ue_context_p->gNB_ue_ngap_id,
-        ue_context_p->amf_ue_ngap_id);
-    /* UE associated signalling -> use the allocated stream */
-    ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
-                                     ue_context_p->amf_ref->assoc_id, buffer,
-                                     length, ue_context_p->tx_stream);
-
-    return 0;
+        MSC_AS_TIME_FMT" Sent of NAS_NON_DELIVERY_IND to AMF failed, no context for gNB_ue_ngap_id %08x",
+        ngap_nas_non_delivery_ind->gNB_ue_ngap_id);
+    return -1;
+  }
+
+  /* Prepare the NGAP message to encode */
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
+  pdu.choice.initiatingMessage->procedureCode = NGAP_ProcedureCode_id_NASNonDeliveryIndication;
+  pdu.choice.initiatingMessage->criticality = NGAP_Criticality_ignore;
+  pdu.choice.initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_NASNonDeliveryIndication;
+  out = &pdu.choice.initiatingMessage->value.choice.NASNonDeliveryIndication;
+  /* mandatory */
+  ie = (NGAP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(NGAP_NASNonDeliveryIndication_IEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_reject;
+  ie->value.present = NGAP_NASNonDeliveryIndication_IEs__value_PR_AMF_UE_NGAP_ID;
+  asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (NGAP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(NGAP_NASNonDeliveryIndication_IEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_reject;
+  ie->value.present = NGAP_NASNonDeliveryIndication_IEs__value_PR_RAN_UE_NGAP_ID;
+  ie->value.choice.RAN_UE_NGAP_ID = ue_context_p->gNB_ue_ngap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (NGAP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(NGAP_NASNonDeliveryIndication_IEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_NAS_PDU;
+  ie->criticality = NGAP_Criticality_ignore;
+  ie->value.present = NGAP_NASNonDeliveryIndication_IEs__value_PR_NAS_PDU;
+  ie->value.choice.NAS_PDU.buf = ngap_nas_non_delivery_ind->nas_pdu.buffer;
+  ie->value.choice.NAS_PDU.size = ngap_nas_non_delivery_ind->nas_pdu.length;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (NGAP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(NGAP_NASNonDeliveryIndication_IEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_Cause;
+  ie->criticality = NGAP_Criticality_ignore;
+  /* Send a dummy cause */
+  ie->value.present = NGAP_NASNonDeliveryIndication_IEs__value_PR_Cause;
+  ie->value.choice.Cause.present = NGAP_Cause_PR_radioNetwork;
+  ie->value.choice.Cause.choice.radioNetwork = NGAP_CauseRadioNetwork_radio_connection_with_ue_lost;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
+    NGAP_ERROR("Failed to encode NAS NON delivery indication\n");
+    /* Encode procedure has failed... */
+    MSC_LOG_EVENT(
+        MSC_NGAP_GNB,
+        MSC_AS_TIME_FMT" Sent of NAS_NON_DELIVERY_IND to AMF failed (encoding)");
+    return -1;
+  }
+
+  MSC_LOG_TX_MESSAGE(
+      MSC_NGAP_GNB,
+      MSC_NGAP_AMF,
+      (const char *)buffer,
+      length,
+      MSC_AS_TIME_FMT" NASNonDeliveryIndication initiatingMessage gNB_ue_ngap_id %u amf_ue_ngap_id %lu",
+      0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
+      ue_context_p->gNB_ue_ngap_id,
+      ue_context_p->amf_ue_ngap_id);
+  /* UE associated signalling -> use the allocated stream */
+  ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
+                                   ue_context_p->amf_ref->assoc_id, buffer,
+                                   length, ue_context_p->tx_stream);
+
+  return 0;
 }
 
 //------------------------------------------------------------------------------
@@ -647,221 +647,221 @@ int ngap_gNB_initial_ctxt_resp(
 //------------------------------------------------------------------------------
 {
 
-    ngap_gNB_instance_t                   *ngap_gNB_instance_p = NULL;
-    struct ngap_gNB_ue_context_s          *ue_context_p        = NULL;
-    NGAP_NGAP_PDU_t                        pdu;
-    NGAP_InitialContextSetupResponse_t    *out;
-    NGAP_InitialContextSetupResponseIEs_t *ie;
-    uint8_t  *buffer = NULL;
-    uint32_t length;
-    int      i;
-    asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
+  ngap_gNB_instance_t                   *ngap_gNB_instance_p = NULL;
+  struct ngap_gNB_ue_context_s          *ue_context_p        = NULL;
+  NGAP_NGAP_PDU_t                        pdu;
+  NGAP_InitialContextSetupResponse_t    *out;
+  NGAP_InitialContextSetupResponseIEs_t *ie;
+  uint8_t  *buffer = NULL;
+  uint32_t length;
+  int      i;
+  asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
+
+  
+  /* Retrieve the NGAP gNB instance associated with Mod_id */
+  ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
+  DevAssert(initial_ctxt_resp_p != NULL);
+  DevAssert(ngap_gNB_instance_p != NULL);
+
+  if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p,
+                      initial_ctxt_resp_p->gNB_ue_ngap_id)) == NULL) {
+    /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
+    NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: 0x%08x\n",
+              initial_ctxt_resp_p->gNB_ue_ngap_id);
+    return -1;
+  }
+
+  /* Uplink NAS transport can occur either during an ngap connected state
+   * or during initial attach (for example: NAS authentication).
+   */
+  if (!(ue_context_p->ue_state == NGAP_UE_CONNECTED ||
+          ue_context_p->ue_state == NGAP_UE_WAITING_CSR)) {
+    NGAP_WARN("You are attempting to send NAS data over non-connected "
+              "gNB ue ngap id: %08x, current state: %d\n",
+              initial_ctxt_resp_p->gNB_ue_ngap_id, ue_context_p->ue_state);
+    return -1;
+  }
+
+  /* Prepare the NGAP message to encode */
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = NGAP_NGAP_PDU_PR_successfulOutcome;
+  pdu.choice.successfulOutcome->procedureCode = NGAP_ProcedureCode_id_InitialContextSetup;
+  pdu.choice.successfulOutcome->criticality = NGAP_Criticality_reject;
+  pdu.choice.successfulOutcome->value.present = NGAP_SuccessfulOutcome__value_PR_InitialContextSetupResponse;
+  out = &pdu.choice.successfulOutcome->value.choice.InitialContextSetupResponse;
+  /* mandatory */
+  ie = (NGAP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(NGAP_InitialContextSetupResponseIEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_ignore;
+  ie->value.present = NGAP_InitialContextSetupResponseIEs__value_PR_AMF_UE_NGAP_ID;
+  //ie->value.choice.AMF_UE_NGAP_ID = ue_context_p->amf_ue_ngap_id;
+  asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (NGAP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(NGAP_InitialContextSetupResponseIEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_ignore;
+  ie->value.present = NGAP_InitialContextSetupResponseIEs__value_PR_RAN_UE_NGAP_ID;
+  ie->value.choice.RAN_UE_NGAP_ID = initial_ctxt_resp_p->gNB_ue_ngap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* optional */
+  ie = (NGAP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(NGAP_InitialContextSetupResponseIEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceSetupListCxtRes;
+  ie->criticality = NGAP_Criticality_ignore;
+  ie->value.present = NGAP_InitialContextSetupResponseIEs__value_PR_PDUSessionResourceSetupListCxtRes;
+
+  for (i = 0; i < initial_ctxt_resp_p->nb_of_pdusessions; i++) {
+    NGAP_PDUSessionResourceSetupItemCxtRes_t *item;
+    NGAP_PDUSessionResourceSetupResponseTransfer_t     *pdusessionTransfer_p = NULL;
+  
+    /* mandatory */
+    item = (NGAP_PDUSessionResourceSetupItemCxtRes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupItemCxtRes_t));
+
+    /* pDUSessionID */
+    item->pDUSessionID = initial_ctxt_resp_p->pdusessions[i].pdusession_id;
+
+    /* dLQosFlowPerTNLInformation */
+    pdusessionTransfer_p = (NGAP_PDUSessionResourceSetupResponseTransfer_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseTransfer_t));
+
+    pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.present = NGAP_UPTransportLayerInformation_PR_gTPTunnel;
+     
+    GTP_TEID_TO_ASN1(initial_ctxt_resp_p->pdusessions[i].gtp_teid, &pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->gTP_TEID);
+
+    pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf = malloc(initial_ctxt_resp_p->pdusessions[i].gNB_addr.length);
+
+    memcpy(pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf,
+           initial_ctxt_resp_p->pdusessions[i].gNB_addr.buffer,
+           initial_ctxt_resp_p->pdusessions[i].gNB_addr.length);
+    pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.size = initial_ctxt_resp_p->pdusessions[i].gNB_addr.length;
+    pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.bits_unused = 0;
+
+    NGAP_DEBUG("initial_ctxt_resp_p: pdusession ID %ld, gnb_addr %d.%d.%d.%d, SIZE %ld \n",
+               item->pDUSessionID,
+               pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[0],
+               pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[1],
+               pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[2],
+               pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[3],
+               pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.size);
+
+    /* associatedQosFlowList. number of 1? */
+    for(int j=0; j < initial_ctxt_resp_p->pdusessions[i].nb_of_qos_flow; j++) {
+      NGAP_AssociatedQosFlowItem_t *ass_qos_item_p;
+      ass_qos_item_p = (NGAP_AssociatedQosFlowItem_t *)calloc(1, sizeof(NGAP_AssociatedQosFlowItem_t));
+
+      /* qosFlowIdentifier */
+      ass_qos_item_p->qosFlowIdentifier = initial_ctxt_resp_p->pdusessions[i].associated_qos_flows[j].qci;
+
+      /* qosFlowMappingIndication */
+      if(initial_ctxt_resp_p->pdusessions[i].associated_qos_flows[j].qos_flow_mapping_ind != QOSFLOW_MAPPING_INDICATION_NON) {
+        ass_qos_item_p->qosFlowMappingIndication = malloc(sizeof(*ass_qos_item_p->qosFlowMappingIndication));
+        *ass_qos_item_p->qosFlowMappingIndication = initial_ctxt_resp_p->pdusessions[i].associated_qos_flows[j].qos_flow_mapping_ind;
+      }
+      ASN_SEQUENCE_ADD(&pdusessionTransfer_p->dLQosFlowPerTNLInformation.associatedQosFlowList.list, ass_qos_item_p);
+    }
+               
+    memset(&res, 0, sizeof(res));
+    res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_NGAP_PDUSessionResourceSetupResponseTransfer, pdusessionTransfer_p);
+    item->pDUSessionResourceSetupResponseTransfer.buf = res.buffer;
+    item->pDUSessionResourceSetupResponseTransfer.size = res.result.encoded;
 
+    ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_NGAP_PDUSessionResourceSetupResponseTransfer, pdusessionTransfer_p);
     
-    /* Retrieve the NGAP gNB instance associated with Mod_id */
-    ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
-    DevAssert(initial_ctxt_resp_p != NULL);
-    DevAssert(ngap_gNB_instance_p != NULL);
-
-    if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p,
-                        initial_ctxt_resp_p->gNB_ue_ngap_id)) == NULL) {
-        /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
-        NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: 0x%08x\n",
-                  initial_ctxt_resp_p->gNB_ue_ngap_id);
-        return -1;
-    }
+    ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceSetupListCxtRes.list, item);
+  }
 
-    /* Uplink NAS transport can occur either during an ngap connected state
-     * or during initial attach (for example: NAS authentication).
-     */
-    if (!(ue_context_p->ue_state == NGAP_UE_CONNECTED ||
-            ue_context_p->ue_state == NGAP_UE_WAITING_CSR)) {
-        NGAP_WARN("You are attempting to send NAS data over non-connected "
-                  "gNB ue ngap id: %08x, current state: %d\n",
-                  initial_ctxt_resp_p->gNB_ue_ngap_id, ue_context_p->ue_state);
-        return -1;
-    }
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
 
-    /* Prepare the NGAP message to encode */
-    memset(&pdu, 0, sizeof(pdu));
-    pdu.present = NGAP_NGAP_PDU_PR_successfulOutcome;
-    pdu.choice.successfulOutcome->procedureCode = NGAP_ProcedureCode_id_InitialContextSetup;
-    pdu.choice.successfulOutcome->criticality = NGAP_Criticality_reject;
-    pdu.choice.successfulOutcome->value.present = NGAP_SuccessfulOutcome__value_PR_InitialContextSetupResponse;
-    out = &pdu.choice.successfulOutcome->value.choice.InitialContextSetupResponse;
-    /* mandatory */
-    ie = (NGAP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(NGAP_InitialContextSetupResponseIEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
-    ie->criticality = NGAP_Criticality_ignore;
-    ie->value.present = NGAP_InitialContextSetupResponseIEs__value_PR_AMF_UE_NGAP_ID;
-    //ie->value.choice.AMF_UE_NGAP_ID = ue_context_p->amf_ue_ngap_id;
-    asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* mandatory */
+  /* optional */
+  if (initial_ctxt_resp_p->nb_of_pdusessions_failed) {
     ie = (NGAP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(NGAP_InitialContextSetupResponseIEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
+    ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceFailedToSetupListCxtRes;
     ie->criticality = NGAP_Criticality_ignore;
-    ie->value.present = NGAP_InitialContextSetupResponseIEs__value_PR_RAN_UE_NGAP_ID;
-    ie->value.choice.RAN_UE_NGAP_ID = initial_ctxt_resp_p->gNB_ue_ngap_id;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* optional */
-    ie = (NGAP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(NGAP_InitialContextSetupResponseIEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceSetupListCxtRes;
-    ie->criticality = NGAP_Criticality_ignore;
-    ie->value.present = NGAP_InitialContextSetupResponseIEs__value_PR_PDUSessionResourceSetupListCxtRes;
+    ie->value.present = NGAP_InitialContextSetupResponseIEs__value_PR_PDUSessionResourceFailedToSetupListCxtRes;
 
-    for (i = 0; i < initial_ctxt_resp_p->nb_of_pdusessions; i++) {
-        NGAP_PDUSessionResourceSetupItemCxtRes_t *item;
-        NGAP_PDUSessionResourceSetupResponseTransfer_t     *pdusessionTransfer_p = NULL;
-      
+    for (i = 0; i < initial_ctxt_resp_p->nb_of_pdusessions_failed; i++) {
+        NGAP_PDUSessionResourceFailedToSetupItemCxtRes_t *item;
+        NGAP_PDUSessionResourceSetupUnsuccessfulTransfer_t *pdusessionUnTransfer_p = NULL;
+    
         /* mandatory */
-        item = (NGAP_PDUSessionResourceSetupItemCxtRes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupItemCxtRes_t));
-
+        item = (NGAP_PDUSessionResourceFailedToSetupItemCxtRes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceFailedToSetupItemCxtRes_t));
         /* pDUSessionID */
-        item->pDUSessionID = initial_ctxt_resp_p->pdusessions[i].pdusession_id;
-
-        /* dLQosFlowPerTNLInformation */
-        pdusessionTransfer_p = (NGAP_PDUSessionResourceSetupResponseTransfer_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseTransfer_t));
-
-        pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.present = NGAP_UPTransportLayerInformation_PR_gTPTunnel;
-         
-        GTP_TEID_TO_ASN1(initial_ctxt_resp_p->pdusessions[i].gtp_teid, &pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->gTP_TEID);
-
-        pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf = malloc(initial_ctxt_resp_p->pdusessions[i].gNB_addr.length);
-
-        memcpy(pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf,
-               initial_ctxt_resp_p->pdusessions[i].gNB_addr.buffer,
-               initial_ctxt_resp_p->pdusessions[i].gNB_addr.length);
-        pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.size = initial_ctxt_resp_p->pdusessions[i].gNB_addr.length;
-        pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.bits_unused = 0;
-
-        NGAP_DEBUG("initial_ctxt_resp_p: pdusession ID %ld, gnb_addr %d.%d.%d.%d, SIZE %ld \n",
-                   item->pDUSessionID,
-                   pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[0],
-                   pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[1],
-                   pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[2],
-                   pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[3],
-                   pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.size);
-
-        /* associatedQosFlowList. number of 1? */
-        for(int j=0; j < initial_ctxt_resp_p->pdusessions[i].nb_of_qos_flow; j++) {
-          NGAP_AssociatedQosFlowItem_t *ass_qos_item_p;
-          ass_qos_item_p = (NGAP_AssociatedQosFlowItem_t *)calloc(1, sizeof(NGAP_AssociatedQosFlowItem_t));
-
-          /* qosFlowIdentifier */
-          ass_qos_item_p->qosFlowIdentifier = initial_ctxt_resp_p->pdusessions[i].associated_qos_flows[j].qci;
-
-          /* qosFlowMappingIndication */
-          if(initial_ctxt_resp_p->pdusessions[i].associated_qos_flows[j].qos_flow_mapping_ind != QOSFLOW_MAPPING_INDICATION_NON) {
-            ass_qos_item_p->qosFlowMappingIndication = malloc(sizeof(*ass_qos_item_p->qosFlowMappingIndication));
-            *ass_qos_item_p->qosFlowMappingIndication = initial_ctxt_resp_p->pdusessions[i].associated_qos_flows[j].qos_flow_mapping_ind;
-          }
-          ASN_SEQUENCE_ADD(&pdusessionTransfer_p->dLQosFlowPerTNLInformation.associatedQosFlowList.list, ass_qos_item_p);
+        item->pDUSessionID = initial_ctxt_resp_p->pdusessions_failed[i].pdusession_id;
+
+        /* cause */
+        pdusessionUnTransfer_p = (NGAP_PDUSessionResourceSetupUnsuccessfulTransfer_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupUnsuccessfulTransfer_t));
+        pdusessionUnTransfer_p->cause.present = initial_ctxt_resp_p->pdusessions_failed[i].cause;
+        switch(pdusessionUnTransfer_p->cause.present) {
+          case NGAP_Cause_PR_radioNetwork:
+              pdusessionUnTransfer_p->cause.choice.radioNetwork = initial_ctxt_resp_p->pdusessions_failed[i].cause_value;
+              break;
+
+          case NGAP_Cause_PR_transport:
+              pdusessionUnTransfer_p->cause.choice.transport = initial_ctxt_resp_p->pdusessions_failed[i].cause_value;
+              break;
+
+          case NGAP_Cause_PR_nas:
+              pdusessionUnTransfer_p->cause.choice.nas = initial_ctxt_resp_p->pdusessions_failed[i].cause_value;
+              break;
+
+          case NGAP_Cause_PR_protocol:
+              pdusessionUnTransfer_p->cause.choice.protocol = initial_ctxt_resp_p->pdusessions_failed[i].cause_value;
+              break;
+
+          case NGAP_Cause_PR_misc:
+              pdusessionUnTransfer_p->cause.choice.misc = initial_ctxt_resp_p->pdusessions_failed[i].cause_value;
+              break;
+
+          case NGAP_Cause_PR_NOTHING:
+          default:
+              break;
         }
-                   
-        memset(&res, 0, sizeof(res));
-        res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_NGAP_PDUSessionResourceSetupResponseTransfer, pdusessionTransfer_p);
-        item->pDUSessionResourceSetupResponseTransfer.buf = res.buffer;
-        item->pDUSessionResourceSetupResponseTransfer.size = res.result.encoded;
-
-        ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_NGAP_PDUSessionResourceSetupResponseTransfer, pdusessionTransfer_p);
-        
-        ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceSetupListCxtRes.list, item);
-    }
-
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
 
-    /* optional */
-    if (initial_ctxt_resp_p->nb_of_pdusessions_failed) {
-        ie = (NGAP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(NGAP_InitialContextSetupResponseIEs_t));
-        ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceFailedToSetupListCxtRes;
-        ie->criticality = NGAP_Criticality_ignore;
-        ie->value.present = NGAP_InitialContextSetupResponseIEs__value_PR_PDUSessionResourceFailedToSetupListCxtRes;
+        NGAP_DEBUG("initial context setup response: failed pdusession ID %ld\n", item->pDUSessionID);
 
-        for (i = 0; i < initial_ctxt_resp_p->nb_of_pdusessions_failed; i++) {
-            NGAP_PDUSessionResourceFailedToSetupItemCxtRes_t *item;
-            NGAP_PDUSessionResourceSetupUnsuccessfulTransfer_t *pdusessionUnTransfer_p = NULL;
-        
-            /* mandatory */
-            item = (NGAP_PDUSessionResourceFailedToSetupItemCxtRes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceFailedToSetupItemCxtRes_t));
-            /* pDUSessionID */
-            item->pDUSessionID = initial_ctxt_resp_p->pdusessions_failed[i].pdusession_id;
-
-            /* cause */
-            pdusessionUnTransfer_p = (NGAP_PDUSessionResourceSetupUnsuccessfulTransfer_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupUnsuccessfulTransfer_t));
-            pdusessionUnTransfer_p->cause.present = initial_ctxt_resp_p->pdusessions_failed[i].cause;
-            switch(pdusessionUnTransfer_p->cause.present) {
-              case NGAP_Cause_PR_radioNetwork:
-                  pdusessionUnTransfer_p->cause.choice.radioNetwork = initial_ctxt_resp_p->pdusessions_failed[i].cause_value;
-                  break;
-
-              case NGAP_Cause_PR_transport:
-                  pdusessionUnTransfer_p->cause.choice.transport = initial_ctxt_resp_p->pdusessions_failed[i].cause_value;
-                  break;
-
-              case NGAP_Cause_PR_nas:
-                  pdusessionUnTransfer_p->cause.choice.nas = initial_ctxt_resp_p->pdusessions_failed[i].cause_value;
-                  break;
-
-              case NGAP_Cause_PR_protocol:
-                  pdusessionUnTransfer_p->cause.choice.protocol = initial_ctxt_resp_p->pdusessions_failed[i].cause_value;
-                  break;
-
-              case NGAP_Cause_PR_misc:
-                  pdusessionUnTransfer_p->cause.choice.misc = initial_ctxt_resp_p->pdusessions_failed[i].cause_value;
-                  break;
-
-              case NGAP_Cause_PR_NOTHING:
-              default:
-                  break;
-            }
-
-            NGAP_DEBUG("initial context setup response: failed pdusession ID %ld\n", item->pDUSessionID);
-
-            memset(&res, 0, sizeof(res));
-            res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_NGAP_PDUSessionResourceSetupUnsuccessfulTransfer, pdusessionUnTransfer_p);
-            item->pDUSessionResourceSetupUnsuccessfulTransfer.buf = res.buffer;
-            item->pDUSessionResourceSetupUnsuccessfulTransfer.size = res.result.encoded;
-
-            ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_NGAP_PDUSessionResourceSetupUnsuccessfulTransfer, pdusessionUnTransfer_p);
-        
-            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceFailedToSetupListCxtRes.list, item);
-        }
+        memset(&res, 0, sizeof(res));
+        res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_NGAP_PDUSessionResourceSetupUnsuccessfulTransfer, pdusessionUnTransfer_p);
+        item->pDUSessionResourceSetupUnsuccessfulTransfer.buf = res.buffer;
+        item->pDUSessionResourceSetupUnsuccessfulTransfer.size = res.result.encoded;
 
-        ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+        ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_NGAP_PDUSessionResourceSetupUnsuccessfulTransfer, pdusessionUnTransfer_p);
+    
+        ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceFailedToSetupListCxtRes.list, item);
     }
 
-    /* optional */
-    if (0) {
-        ie = (NGAP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(NGAP_InitialContextSetupResponseIEs_t));
-        ie->id = NGAP_ProtocolIE_ID_id_CriticalityDiagnostics;
-        ie->criticality = NGAP_Criticality_ignore;
-        ie->value.present = NGAP_InitialContextSetupResponseIEs__value_PR_CriticalityDiagnostics;
-        // ie->value.choice.CriticalityDiagnostics =;
-        ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    }
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-    if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
-        NGAP_ERROR("Failed to encode InitialContextSetupResponse\n");
-        /* Encode procedure has failed... */
-        return -1;
-    }
+  /* optional */
+  if (0) {
+    ie = (NGAP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(NGAP_InitialContextSetupResponseIEs_t));
+    ie->id = NGAP_ProtocolIE_ID_id_CriticalityDiagnostics;
+    ie->criticality = NGAP_Criticality_ignore;
+    ie->value.present = NGAP_InitialContextSetupResponseIEs__value_PR_CriticalityDiagnostics;
+    // ie->value.choice.CriticalityDiagnostics =;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
+    NGAP_ERROR("Failed to encode InitialContextSetupResponse\n");
+    /* Encode procedure has failed... */
+    return -1;
+  }
+
+  MSC_LOG_TX_MESSAGE(
+      MSC_NGAP_GNB,
+      MSC_NGAP_AMF,
+      (const char *)buffer,
+      length,
+      MSC_AS_TIME_FMT" InitialContextSetup successfulOutcome gNB_ue_ngap_id %u amf_ue_ngap_id %u",
+      0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
+      initial_ctxt_resp_p->gNB_ue_ngap_id,
+      ue_context_p->amf_ue_ngap_id);
+  /* UE associated signalling -> use the allocated stream */
+  ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
+                                   ue_context_p->amf_ref->assoc_id, buffer,
+                                   length, ue_context_p->tx_stream);
 
-    MSC_LOG_TX_MESSAGE(
-        MSC_NGAP_GNB,
-        MSC_NGAP_AMF,
-        (const char *)buffer,
-        length,
-        MSC_AS_TIME_FMT" InitialContextSetup successfulOutcome gNB_ue_ngap_id %u amf_ue_ngap_id %u",
-        0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
-        initial_ctxt_resp_p->gNB_ue_ngap_id,
-        ue_context_p->amf_ue_ngap_id);
-    /* UE associated signalling -> use the allocated stream */
-    ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
-                                     ue_context_p->amf_ref->assoc_id, buffer,
-                                     length, ue_context_p->tx_stream);
-
-    return 0;
+  return 0;
 }
 
 //------------------------------------------------------------------------------
@@ -869,89 +869,89 @@ int ngap_gNB_ue_capabilities(instance_t instance,
                              ngap_ue_cap_info_ind_t *ue_cap_info_ind_p)
 //------------------------------------------------------------------------------
 {
-    ngap_gNB_instance_t          *ngap_gNB_instance_p;
-    struct ngap_gNB_ue_context_s *ue_context_p;
-    NGAP_NGAP_PDU_t                       pdu;
-    NGAP_UERadioCapabilityInfoIndication_t    *out;
-    NGAP_UERadioCapabilityInfoIndicationIEs_t *ie;
-    uint8_t  *buffer;
-    uint32_t length;
-    /* Retrieve the NGAP gNB instance associated with Mod_id */
-    ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
-    DevAssert(ue_cap_info_ind_p != NULL);
-    DevAssert(ngap_gNB_instance_p != NULL);
-
-    if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p,
-                        ue_cap_info_ind_p->gNB_ue_ngap_id)) == NULL) {
-        /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
-        NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: %u\n",
-                  ue_cap_info_ind_p->gNB_ue_ngap_id);
-        return -1;
-    }
-
-    /* UE radio capabilities message can occur either during an ngap connected state
-     * or during initial attach (for example: NAS authentication).
-     */
-    if (!(ue_context_p->ue_state == NGAP_UE_CONNECTED ||
-            ue_context_p->ue_state == NGAP_UE_WAITING_CSR)) {
-        NGAP_WARN("You are attempting to send NAS data over non-connected "
-                  "gNB ue ngap id: %u, current state: %d\n",
-                  ue_cap_info_ind_p->gNB_ue_ngap_id, ue_context_p->ue_state);
-        return -1;
-    }
-
-    /* Prepare the NGAP message to encode */
-    memset(&pdu, 0, sizeof(pdu));
-    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
-    pdu.choice.initiatingMessage->procedureCode = NGAP_ProcedureCode_id_UERadioCapabilityInfoIndication;
-    pdu.choice.initiatingMessage->criticality = NGAP_Criticality_ignore;
-    pdu.choice.initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_UERadioCapabilityInfoIndication;
-    out = &pdu.choice.initiatingMessage->value.choice.UERadioCapabilityInfoIndication;
-    /* mandatory */
-    ie = (NGAP_UERadioCapabilityInfoIndicationIEs_t *)calloc(1, sizeof(NGAP_UERadioCapabilityInfoIndicationIEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
-    ie->criticality = NGAP_Criticality_reject;
-    ie->value.present = NGAP_UERadioCapabilityInfoIndicationIEs__value_PR_AMF_UE_NGAP_ID;
-    //ie->value.choice.AMF_UE_NGAP_ID = ue_context_p->amf_ue_ngap_id;
-    asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* mandatory */
-    ie = (NGAP_UERadioCapabilityInfoIndicationIEs_t *)calloc(1, sizeof(NGAP_UERadioCapabilityInfoIndicationIEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
-    ie->criticality = NGAP_Criticality_reject;
-    ie->value.present = NGAP_UERadioCapabilityInfoIndicationIEs__value_PR_RAN_UE_NGAP_ID;
-    ie->value.choice.RAN_UE_NGAP_ID = ue_cap_info_ind_p->gNB_ue_ngap_id;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* mandatory */
-    ie = (NGAP_UERadioCapabilityInfoIndicationIEs_t *)calloc(1, sizeof(NGAP_UERadioCapabilityInfoIndicationIEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_UERadioCapability;
-    ie->criticality = NGAP_Criticality_reject;
-    ie->value.present = NGAP_UERadioCapabilityInfoIndicationIEs__value_PR_UERadioCapability;
-    ie->value.choice.UERadioCapability.buf = ue_cap_info_ind_p->ue_radio_cap.buffer;
-    ie->value.choice.UERadioCapability.size = ue_cap_info_ind_p->ue_radio_cap.length;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* optional */
-    //NGAP_UERadioCapabilityForPaging TBD
-    if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
-        /* Encode procedure has failed... */
-        NGAP_ERROR("Failed to encode UE radio capabilities indication\n");
-        return -1;
-    }
-
-    MSC_LOG_TX_MESSAGE(
-        MSC_NGAP_GNB,
-        MSC_NGAP_AMF,
-        (const char *)buffer,
-        length,
-        MSC_AS_TIME_FMT" UECapabilityInfoIndication initiatingMessage gNB_ue_ngap_id %u amf_ue_ngap_id %u",
-        0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
-        ue_cap_info_ind_p->gNB_ue_ngap_id,
-        ue_context_p->amf_ue_ngap_id);
-    /* UE associated signalling -> use the allocated stream */
-    ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
-                                     ue_context_p->amf_ref->assoc_id, buffer,
-                                     length, ue_context_p->tx_stream);
-    return 0;
+  ngap_gNB_instance_t          *ngap_gNB_instance_p;
+  struct ngap_gNB_ue_context_s *ue_context_p;
+  NGAP_NGAP_PDU_t                       pdu;
+  NGAP_UERadioCapabilityInfoIndication_t    *out;
+  NGAP_UERadioCapabilityInfoIndicationIEs_t *ie;
+  uint8_t  *buffer;
+  uint32_t length;
+  /* Retrieve the NGAP gNB instance associated with Mod_id */
+  ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
+  DevAssert(ue_cap_info_ind_p != NULL);
+  DevAssert(ngap_gNB_instance_p != NULL);
+
+  if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p,
+                      ue_cap_info_ind_p->gNB_ue_ngap_id)) == NULL) {
+    /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
+    NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: %u\n",
+              ue_cap_info_ind_p->gNB_ue_ngap_id);
+    return -1;
+  }
+
+  /* UE radio capabilities message can occur either during an ngap connected state
+   * or during initial attach (for example: NAS authentication).
+   */
+  if (!(ue_context_p->ue_state == NGAP_UE_CONNECTED ||
+          ue_context_p->ue_state == NGAP_UE_WAITING_CSR)) {
+    NGAP_WARN("You are attempting to send NAS data over non-connected "
+              "gNB ue ngap id: %u, current state: %d\n",
+              ue_cap_info_ind_p->gNB_ue_ngap_id, ue_context_p->ue_state);
+    return -1;
+  }
+
+  /* Prepare the NGAP message to encode */
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
+  pdu.choice.initiatingMessage->procedureCode = NGAP_ProcedureCode_id_UERadioCapabilityInfoIndication;
+  pdu.choice.initiatingMessage->criticality = NGAP_Criticality_ignore;
+  pdu.choice.initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_UERadioCapabilityInfoIndication;
+  out = &pdu.choice.initiatingMessage->value.choice.UERadioCapabilityInfoIndication;
+  /* mandatory */
+  ie = (NGAP_UERadioCapabilityInfoIndicationIEs_t *)calloc(1, sizeof(NGAP_UERadioCapabilityInfoIndicationIEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_reject;
+  ie->value.present = NGAP_UERadioCapabilityInfoIndicationIEs__value_PR_AMF_UE_NGAP_ID;
+  //ie->value.choice.AMF_UE_NGAP_ID = ue_context_p->amf_ue_ngap_id;
+  asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (NGAP_UERadioCapabilityInfoIndicationIEs_t *)calloc(1, sizeof(NGAP_UERadioCapabilityInfoIndicationIEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_reject;
+  ie->value.present = NGAP_UERadioCapabilityInfoIndicationIEs__value_PR_RAN_UE_NGAP_ID;
+  ie->value.choice.RAN_UE_NGAP_ID = ue_cap_info_ind_p->gNB_ue_ngap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (NGAP_UERadioCapabilityInfoIndicationIEs_t *)calloc(1, sizeof(NGAP_UERadioCapabilityInfoIndicationIEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_UERadioCapability;
+  ie->criticality = NGAP_Criticality_reject;
+  ie->value.present = NGAP_UERadioCapabilityInfoIndicationIEs__value_PR_UERadioCapability;
+  ie->value.choice.UERadioCapability.buf = ue_cap_info_ind_p->ue_radio_cap.buffer;
+  ie->value.choice.UERadioCapability.size = ue_cap_info_ind_p->ue_radio_cap.length;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* optional */
+  //NGAP_UERadioCapabilityForPaging TBD
+  if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
+    /* Encode procedure has failed... */
+    NGAP_ERROR("Failed to encode UE radio capabilities indication\n");
+    return -1;
+  }
+
+  MSC_LOG_TX_MESSAGE(
+      MSC_NGAP_GNB,
+      MSC_NGAP_AMF,
+      (const char *)buffer,
+      length,
+      MSC_AS_TIME_FMT" UECapabilityInfoIndication initiatingMessage gNB_ue_ngap_id %u amf_ue_ngap_id %u",
+      0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
+      ue_cap_info_ind_p->gNB_ue_ngap_id,
+      ue_context_p->amf_ue_ngap_id);
+  /* UE associated signalling -> use the allocated stream */
+  ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
+                                   ue_context_p->amf_ref->assoc_id, buffer,
+                                   length, ue_context_p->tx_stream);
+  return 0;
 }
 
 //------------------------------------------------------------------------------
@@ -959,221 +959,221 @@ int ngap_gNB_pdusession_setup_resp(instance_t instance,
                               ngap_pdusession_setup_resp_t *pdusession_setup_resp_p)
 //------------------------------------------------------------------------------
 {
-    ngap_gNB_instance_t          *ngap_gNB_instance_p = NULL;
-    struct ngap_gNB_ue_context_s *ue_context_p        = NULL;
-    NGAP_NGAP_PDU_t               pdu;
-    NGAP_PDUSessionResourceSetupResponse_t    *out;
-    NGAP_PDUSessionResourceSetupResponseIEs_t *ie;
-    uint8_t  *buffer  = NULL;
-    uint32_t length;
-    int      i;
-    asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
-
-    /* Retrieve the NGAP gNB instance associated with Mod_id */
-    ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
-    DevAssert(pdusession_setup_resp_p != NULL);
-    DevAssert(ngap_gNB_instance_p != NULL);
-
-    if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p,
-                        pdusession_setup_resp_p->gNB_ue_ngap_id)) == NULL) {
-        /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
-        NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: 0x%08x\n",
-                  pdusession_setup_resp_p->gNB_ue_ngap_id);
-        return -1;
-    }
-
-    /* Uplink NAS transport can occur either during an ngap connected state
-     * or during initial attach (for example: NAS authentication).
-     */
-    if (!(ue_context_p->ue_state == NGAP_UE_CONNECTED ||
-            ue_context_p->ue_state == NGAP_UE_WAITING_CSR)) {
-        NGAP_WARN("You are attempting to send NAS data over non-connected "
-                  "gNB ue ngap id: %08x, current state: %d\n",
-                  pdusession_setup_resp_p->gNB_ue_ngap_id, ue_context_p->ue_state);
-        return -1;
-    }
-
-    /* Prepare the NGAP message to encode */
-    memset(&pdu, 0, sizeof(pdu));
-    pdu.present = NGAP_NGAP_PDU_PR_successfulOutcome;
-    pdu.choice.successfulOutcome->procedureCode = NGAP_ProcedureCode_id_PDUSessionResourceSetup;
-    pdu.choice.successfulOutcome->criticality = NGAP_Criticality_reject;
-    pdu.choice.successfulOutcome->value.present = NGAP_SuccessfulOutcome__value_PR_PDUSessionResourceSetupResponse;
-    out = &pdu.choice.successfulOutcome->value.choice.PDUSessionResourceSetupResponse;
-    /* mandatory */
+  ngap_gNB_instance_t          *ngap_gNB_instance_p = NULL;
+  struct ngap_gNB_ue_context_s *ue_context_p        = NULL;
+  NGAP_NGAP_PDU_t               pdu;
+  NGAP_PDUSessionResourceSetupResponse_t    *out;
+  NGAP_PDUSessionResourceSetupResponseIEs_t *ie;
+  uint8_t  *buffer  = NULL;
+  uint32_t length;
+  int      i;
+  asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
+
+  /* Retrieve the NGAP gNB instance associated with Mod_id */
+  ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
+  DevAssert(pdusession_setup_resp_p != NULL);
+  DevAssert(ngap_gNB_instance_p != NULL);
+
+  if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p,
+                      pdusession_setup_resp_p->gNB_ue_ngap_id)) == NULL) {
+    /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
+    NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: 0x%08x\n",
+              pdusession_setup_resp_p->gNB_ue_ngap_id);
+    return -1;
+  }
+
+  /* Uplink NAS transport can occur either during an ngap connected state
+   * or during initial attach (for example: NAS authentication).
+   */
+  if (!(ue_context_p->ue_state == NGAP_UE_CONNECTED ||
+          ue_context_p->ue_state == NGAP_UE_WAITING_CSR)) {
+    NGAP_WARN("You are attempting to send NAS data over non-connected "
+              "gNB ue ngap id: %08x, current state: %d\n",
+              pdusession_setup_resp_p->gNB_ue_ngap_id, ue_context_p->ue_state);
+    return -1;
+  }
+
+  /* Prepare the NGAP message to encode */
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = NGAP_NGAP_PDU_PR_successfulOutcome;
+  pdu.choice.successfulOutcome->procedureCode = NGAP_ProcedureCode_id_PDUSessionResourceSetup;
+  pdu.choice.successfulOutcome->criticality = NGAP_Criticality_reject;
+  pdu.choice.successfulOutcome->value.present = NGAP_SuccessfulOutcome__value_PR_PDUSessionResourceSetupResponse;
+  out = &pdu.choice.successfulOutcome->value.choice.PDUSessionResourceSetupResponse;
+  /* mandatory */
+  ie = (NGAP_PDUSessionResourceSetupResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseIEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_ignore;
+  ie->value.present = NGAP_PDUSessionResourceSetupResponseIEs__value_PR_AMF_UE_NGAP_ID;
+  asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (NGAP_PDUSessionResourceSetupResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseIEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_ignore;
+  ie->value.present = NGAP_PDUSessionResourceSetupResponseIEs__value_PR_RAN_UE_NGAP_ID;
+  ie->value.choice.RAN_UE_NGAP_ID = pdusession_setup_resp_p->gNB_ue_ngap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  /* optional */
+  if (pdusession_setup_resp_p->nb_of_pdusessions > 0) {
     ie = (NGAP_PDUSessionResourceSetupResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseIEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
+    ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceSetupListSURes;
     ie->criticality = NGAP_Criticality_ignore;
-    ie->value.present = NGAP_PDUSessionResourceSetupResponseIEs__value_PR_AMF_UE_NGAP_ID;
-    asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* mandatory */
-    ie = (NGAP_PDUSessionResourceSetupResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseIEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
-    ie->criticality = NGAP_Criticality_ignore;
-    ie->value.present = NGAP_PDUSessionResourceSetupResponseIEs__value_PR_RAN_UE_NGAP_ID;
-    ie->value.choice.RAN_UE_NGAP_ID = pdusession_setup_resp_p->gNB_ue_ngap_id;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+    ie->value.present = NGAP_PDUSessionResourceSetupResponseIEs__value_PR_PDUSessionResourceSetupListSURes;
 
-    /* optional */
-    if (pdusession_setup_resp_p->nb_of_pdusessions > 0) {
-        ie = (NGAP_PDUSessionResourceSetupResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseIEs_t));
-        ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceSetupListSURes;
-        ie->criticality = NGAP_Criticality_ignore;
-        ie->value.present = NGAP_PDUSessionResourceSetupResponseIEs__value_PR_PDUSessionResourceSetupListSURes;
+    for (i = 0; i < pdusession_setup_resp_p->nb_of_pdusessions; i++) {
+      NGAP_PDUSessionResourceSetupItemSURes_t *item;
+      NGAP_PDUSessionResourceSetupResponseTransfer_t     *pdusessionTransfer_p = NULL;
 
-        for (i = 0; i < pdusession_setup_resp_p->nb_of_pdusessions; i++) {
-            NGAP_PDUSessionResourceSetupItemSURes_t *item;
-            NGAP_PDUSessionResourceSetupResponseTransfer_t     *pdusessionTransfer_p = NULL;
+      /* mandatory */
+      item = (NGAP_PDUSessionResourceSetupItemSURes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupItemSURes_t));
 
-            /* mandatory */
-            item = (NGAP_PDUSessionResourceSetupItemSURes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupItemSURes_t));
+      /* pDUSessionID */
+      item->pDUSessionID = pdusession_setup_resp_p->pdusessions[i].pdusession_id;
 
-            /* pDUSessionID */
-            item->pDUSessionID = pdusession_setup_resp_p->pdusessions[i].pdusession_id;
+      /* dLQosFlowPerTNLInformation */
+      pdusessionTransfer_p = (NGAP_PDUSessionResourceSetupResponseTransfer_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseTransfer_t));
 
-            /* dLQosFlowPerTNLInformation */
-            pdusessionTransfer_p = (NGAP_PDUSessionResourceSetupResponseTransfer_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseTransfer_t));
+      pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.present = NGAP_UPTransportLayerInformation_PR_gTPTunnel;
 
-            pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.present = NGAP_UPTransportLayerInformation_PR_gTPTunnel;
+      GTP_TEID_TO_ASN1(pdusession_setup_resp_p->pdusessions[i].gtp_teid, &pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->gTP_TEID);
 
-            GTP_TEID_TO_ASN1(pdusession_setup_resp_p->pdusessions[i].gtp_teid, &pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->gTP_TEID);
+      pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf = malloc(pdusession_setup_resp_p->pdusessions[i].gNB_addr.length);
 
-            pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf = malloc(pdusession_setup_resp_p->pdusessions[i].gNB_addr.length);
+      memcpy(pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf,
+             pdusession_setup_resp_p->pdusessions[i].gNB_addr.buffer,
+             pdusession_setup_resp_p->pdusessions[i].gNB_addr.length);
+      pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.size = pdusession_setup_resp_p->pdusessions[i].gNB_addr.length;
+      pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.bits_unused = 0;
 
-            memcpy(pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf,
-                   pdusession_setup_resp_p->pdusessions[i].gNB_addr.buffer,
-                   pdusession_setup_resp_p->pdusessions[i].gNB_addr.length);
-            pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.size = pdusession_setup_resp_p->pdusessions[i].gNB_addr.length;
-            pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.bits_unused = 0;
+      NGAP_DEBUG("pdusession_setup_resp_p: pdusession ID %ld, gnb_addr %d.%d.%d.%d, SIZE %ld \n",
+                 item->pDUSessionID,
+                 pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[0],
+                 pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[1],
+                 pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[2],
+                 pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[3],
+                 pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.size);
 
-            NGAP_DEBUG("pdusession_setup_resp_p: pdusession ID %ld, gnb_addr %d.%d.%d.%d, SIZE %ld \n",
-                       item->pDUSessionID,
-                       pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[0],
-                       pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[1],
-                       pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[2],
-                       pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.buf[3],
-                       pdusessionTransfer_p->dLQosFlowPerTNLInformation.uPTransportLayerInformation.choice.gTPTunnel->transportLayerAddress.size);
+      /* associatedQosFlowList. number of 1? */
+      for(int j=0; j < pdusession_setup_resp_p->pdusessions[i].nb_of_qos_flow; j++) {
+        NGAP_AssociatedQosFlowItem_t *ass_qos_item_p;
+        ass_qos_item_p = (NGAP_AssociatedQosFlowItem_t *)calloc(1, sizeof(NGAP_AssociatedQosFlowItem_t));
 
-            /* associatedQosFlowList. number of 1? */
-            for(int j=0; j < pdusession_setup_resp_p->pdusessions[i].nb_of_qos_flow; j++) {
-              NGAP_AssociatedQosFlowItem_t *ass_qos_item_p;
-              ass_qos_item_p = (NGAP_AssociatedQosFlowItem_t *)calloc(1, sizeof(NGAP_AssociatedQosFlowItem_t));
+        /* qosFlowIdentifier */
+        ass_qos_item_p->qosFlowIdentifier = pdusession_setup_resp_p->pdusessions[i].associated_qos_flows[j].qci;
 
-              /* qosFlowIdentifier */
-              ass_qos_item_p->qosFlowIdentifier = pdusession_setup_resp_p->pdusessions[i].associated_qos_flows[j].qci;
-
-              /* qosFlowMappingIndication */
-              if(pdusession_setup_resp_p->pdusessions[i].associated_qos_flows[j].qos_flow_mapping_ind != QOSFLOW_MAPPING_INDICATION_NON) {
-                ass_qos_item_p->qosFlowMappingIndication = malloc(sizeof(*ass_qos_item_p->qosFlowMappingIndication));
-                *ass_qos_item_p->qosFlowMappingIndication = pdusession_setup_resp_p->pdusessions[i].associated_qos_flows[j].qos_flow_mapping_ind;
-              }
-              ASN_SEQUENCE_ADD(&pdusessionTransfer_p->dLQosFlowPerTNLInformation.associatedQosFlowList.list, ass_qos_item_p);
-            }
+        /* qosFlowMappingIndication */
+        if(pdusession_setup_resp_p->pdusessions[i].associated_qos_flows[j].qos_flow_mapping_ind != QOSFLOW_MAPPING_INDICATION_NON) {
+          ass_qos_item_p->qosFlowMappingIndication = malloc(sizeof(*ass_qos_item_p->qosFlowMappingIndication));
+          *ass_qos_item_p->qosFlowMappingIndication = pdusession_setup_resp_p->pdusessions[i].associated_qos_flows[j].qos_flow_mapping_ind;
+        }
+        ASN_SEQUENCE_ADD(&pdusessionTransfer_p->dLQosFlowPerTNLInformation.associatedQosFlowList.list, ass_qos_item_p);
+      }
 
-            memset(&res, 0, sizeof(res));
-            res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_NGAP_PDUSessionResourceSetupResponseTransfer, pdusessionTransfer_p);
-            item->pDUSessionResourceSetupResponseTransfer.buf = res.buffer;
-            item->pDUSessionResourceSetupResponseTransfer.size = res.result.encoded;
+      memset(&res, 0, sizeof(res));
+      res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_NGAP_PDUSessionResourceSetupResponseTransfer, pdusessionTransfer_p);
+      item->pDUSessionResourceSetupResponseTransfer.buf = res.buffer;
+      item->pDUSessionResourceSetupResponseTransfer.size = res.result.encoded;
 
-            ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_NGAP_PDUSessionResourceSetupResponseTransfer, pdusessionTransfer_p);
+      ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_NGAP_PDUSessionResourceSetupResponseTransfer, pdusessionTransfer_p);
 
-            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceSetupListSURes.list, item);
-        }
-        ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+      ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceSetupListSURes.list, item);
     }
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-    /* optional */
-    if (pdusession_setup_resp_p->nb_of_pdusessions_failed > 0) {
-        ie = (NGAP_PDUSessionResourceSetupResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseIEs_t));
-        ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceFailedToSetupListSURes;
-        ie->criticality = NGAP_Criticality_ignore;
-        ie->value.present = NGAP_PDUSessionResourceSetupResponseIEs__value_PR_PDUSessionResourceFailedToSetupListSURes;
-
-        for (i = 0; i < pdusession_setup_resp_p->nb_of_pdusessions_failed; i++) {
-            NGAP_PDUSessionResourceFailedToSetupItemSURes_t *item;
-            NGAP_PDUSessionResourceSetupUnsuccessfulTransfer_t *pdusessionUnTransfer_p = NULL;
-
-            /* mandatory */
-            item = (NGAP_PDUSessionResourceFailedToSetupItemSURes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceFailedToSetupItemSURes_t));
-            /* pDUSessionID */
-            item->pDUSessionID = pdusession_setup_resp_p->pdusessions_failed[i].pdusession_id;
-
-            /* cause */
-            pdusessionUnTransfer_p = (NGAP_PDUSessionResourceSetupUnsuccessfulTransfer_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupUnsuccessfulTransfer_t));
-            pdusessionUnTransfer_p->cause.present = pdusession_setup_resp_p->pdusessions_failed[i].cause;
-            switch(pdusessionUnTransfer_p->cause.present) {
-              case NGAP_Cause_PR_radioNetwork:
-                  pdusessionUnTransfer_p->cause.choice.radioNetwork = pdusession_setup_resp_p->pdusessions_failed[i].cause_value;
-                  break;
-
-              case NGAP_Cause_PR_transport:
-                  pdusessionUnTransfer_p->cause.choice.transport = pdusession_setup_resp_p->pdusessions_failed[i].cause_value;
-                  break;
-
-              case NGAP_Cause_PR_nas:
-                  pdusessionUnTransfer_p->cause.choice.nas = pdusession_setup_resp_p->pdusessions_failed[i].cause_value;
-                  break;
-
-              case NGAP_Cause_PR_protocol:
-                  pdusessionUnTransfer_p->cause.choice.protocol = pdusession_setup_resp_p->pdusessions_failed[i].cause_value;
-                  break;
-
-              case NGAP_Cause_PR_misc:
-                  pdusessionUnTransfer_p->cause.choice.misc = pdusession_setup_resp_p->pdusessions_failed[i].cause_value;
-                  break;
-
-              case NGAP_Cause_PR_NOTHING:
-              default:
-                  break;
-            }
-
-            NGAP_DEBUG("pdusession setup response: failed pdusession ID %ld\n", item->pDUSessionID);
-
-            memset(&res, 0, sizeof(res));
-            res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_NGAP_PDUSessionResourceSetupUnsuccessfulTransfer, pdusessionUnTransfer_p);
-            item->pDUSessionResourceSetupUnsuccessfulTransfer.buf = res.buffer;
-            item->pDUSessionResourceSetupUnsuccessfulTransfer.size = res.result.encoded;
-
-            ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_NGAP_PDUSessionResourceSetupUnsuccessfulTransfer, pdusessionUnTransfer_p);
-
-            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceFailedToSetupListSURes.list, item);
-        }
+  /* optional */
+  if (pdusession_setup_resp_p->nb_of_pdusessions_failed > 0) {
+    ie = (NGAP_PDUSessionResourceSetupResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseIEs_t));
+    ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceFailedToSetupListSURes;
+    ie->criticality = NGAP_Criticality_ignore;
+    ie->value.present = NGAP_PDUSessionResourceSetupResponseIEs__value_PR_PDUSessionResourceFailedToSetupListSURes;
+
+    for (i = 0; i < pdusession_setup_resp_p->nb_of_pdusessions_failed; i++) {
+      NGAP_PDUSessionResourceFailedToSetupItemSURes_t *item;
+      NGAP_PDUSessionResourceSetupUnsuccessfulTransfer_t *pdusessionUnTransfer_p = NULL;
+
+      /* mandatory */
+      item = (NGAP_PDUSessionResourceFailedToSetupItemSURes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceFailedToSetupItemSURes_t));
+      /* pDUSessionID */
+      item->pDUSessionID = pdusession_setup_resp_p->pdusessions_failed[i].pdusession_id;
+
+      /* cause */
+      pdusessionUnTransfer_p = (NGAP_PDUSessionResourceSetupUnsuccessfulTransfer_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupUnsuccessfulTransfer_t));
+      pdusessionUnTransfer_p->cause.present = pdusession_setup_resp_p->pdusessions_failed[i].cause;
+      switch(pdusessionUnTransfer_p->cause.present) {
+        case NGAP_Cause_PR_radioNetwork:
+            pdusessionUnTransfer_p->cause.choice.radioNetwork = pdusession_setup_resp_p->pdusessions_failed[i].cause_value;
+            break;
 
-        ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    }
+        case NGAP_Cause_PR_transport:
+            pdusessionUnTransfer_p->cause.choice.transport = pdusession_setup_resp_p->pdusessions_failed[i].cause_value;
+            break;
 
-    /* optional */
-    if (0) {
-        ie = (NGAP_PDUSessionResourceSetupResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseIEs_t));
-        ie->id = NGAP_ProtocolIE_ID_id_CriticalityDiagnostics;
-        ie->criticality = NGAP_Criticality_ignore;
-        ie->value.present = NGAP_PDUSessionResourceSetupResponseIEs__value_PR_CriticalityDiagnostics;
-        // ie->value.choice.CriticalityDiagnostics = ;
-        ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    }
+        case NGAP_Cause_PR_nas:
+            pdusessionUnTransfer_p->cause.choice.nas = pdusession_setup_resp_p->pdusessions_failed[i].cause_value;
+            break;
 
+        case NGAP_Cause_PR_protocol:
+            pdusessionUnTransfer_p->cause.choice.protocol = pdusession_setup_resp_p->pdusessions_failed[i].cause_value;
+            break;
 
-    if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
-        NGAP_ERROR("Failed to encode uplink transport\n");
-        /* Encode procedure has failed... */
-        return -1;
+        case NGAP_Cause_PR_misc:
+            pdusessionUnTransfer_p->cause.choice.misc = pdusession_setup_resp_p->pdusessions_failed[i].cause_value;
+            break;
+
+        case NGAP_Cause_PR_NOTHING:
+        default:
+            break;
+      }
+
+      NGAP_DEBUG("pdusession setup response: failed pdusession ID %ld\n", item->pDUSessionID);
+
+      memset(&res, 0, sizeof(res));
+      res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_NGAP_PDUSessionResourceSetupUnsuccessfulTransfer, pdusessionUnTransfer_p);
+      item->pDUSessionResourceSetupUnsuccessfulTransfer.buf = res.buffer;
+      item->pDUSessionResourceSetupUnsuccessfulTransfer.size = res.result.encoded;
+
+      ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_NGAP_PDUSessionResourceSetupUnsuccessfulTransfer, pdusessionUnTransfer_p);
+
+      ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceFailedToSetupListSURes.list, item);
     }
 
-    MSC_LOG_TX_MESSAGE(
-        MSC_NGAP_GNB,
-        MSC_NGAP_AMF,
-        (const char *)buffer,
-        length,
-        MSC_AS_TIME_FMT" PduSession Setup successfulOutcome gNB_ue_ngap_id %u amf_ue_ngap_id %u",
-        0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
-        pdusession_setup_resp_p->gNB_ue_ngap_id,
-        ue_context_p->amf_ue_ngap_id);
-    /* UE associated signalling -> use the allocated stream */
-    ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
-                                     ue_context_p->amf_ref->assoc_id, buffer,
-                                     length, ue_context_p->tx_stream);
-    return 0;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (0) {
+      ie = (NGAP_PDUSessionResourceSetupResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseIEs_t));
+      ie->id = NGAP_ProtocolIE_ID_id_CriticalityDiagnostics;
+      ie->criticality = NGAP_Criticality_ignore;
+      ie->value.present = NGAP_PDUSessionResourceSetupResponseIEs__value_PR_CriticalityDiagnostics;
+      // ie->value.choice.CriticalityDiagnostics = ;
+      ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+
+  if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
+      NGAP_ERROR("Failed to encode uplink transport\n");
+      /* Encode procedure has failed... */
+      return -1;
+  }
+
+  MSC_LOG_TX_MESSAGE(
+      MSC_NGAP_GNB,
+      MSC_NGAP_AMF,
+      (const char *)buffer,
+      length,
+      MSC_AS_TIME_FMT" PduSession Setup successfulOutcome gNB_ue_ngap_id %u amf_ue_ngap_id %u",
+      0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
+      pdusession_setup_resp_p->gNB_ue_ngap_id,
+      ue_context_p->amf_ue_ngap_id);
+  /* UE associated signalling -> use the allocated stream */
+  ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
+                                   ue_context_p->amf_ref->assoc_id, buffer,
+                                   length, ue_context_p->tx_stream);
+  return 0;
 }
 
 //------------------------------------------------------------------------------
@@ -1181,265 +1181,265 @@ int ngap_gNB_pdusession_modify_resp(instance_t instance,
                                ngap_pdusession_modify_resp_t *pdusession_modify_resp_p)
 //------------------------------------------------------------------------------
 {
-    ngap_gNB_instance_t                         *ngap_gNB_instance_p = NULL;
-    struct ngap_gNB_ue_context_s                *ue_context_p        = NULL;
-    NGAP_NGAP_PDU_t                             pdu;
-    NGAP_PDUSessionResourceModifyResponse_t     *out;
-    NGAP_PDUSessionResourceModifyResponseIEs_t  *ie;
-    uint8_t  *buffer  = NULL;
-    uint32_t length;
-    int      i;
-    asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
-    
-    /* Retrieve the NGAP gNB instance associated with Mod_id */
-    ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
-    DevAssert(pdusession_modify_resp_p != NULL);
-    DevAssert(ngap_gNB_instance_p != NULL);
-
-    if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p,
-                        pdusession_modify_resp_p->gNB_ue_ngap_id)) == NULL) {
-        /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
-        NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: 0x%08x\n",
-                  pdusession_modify_resp_p->gNB_ue_ngap_id);
-        return -1;
-    }
+  ngap_gNB_instance_t                         *ngap_gNB_instance_p = NULL;
+  struct ngap_gNB_ue_context_s                *ue_context_p        = NULL;
+  NGAP_NGAP_PDU_t                             pdu;
+  NGAP_PDUSessionResourceModifyResponse_t     *out;
+  NGAP_PDUSessionResourceModifyResponseIEs_t  *ie;
+  uint8_t  *buffer  = NULL;
+  uint32_t length;
+  int      i;
+  asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
+  
+  /* Retrieve the NGAP gNB instance associated with Mod_id */
+  ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
+  DevAssert(pdusession_modify_resp_p != NULL);
+  DevAssert(ngap_gNB_instance_p != NULL);
+
+  if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p,
+                      pdusession_modify_resp_p->gNB_ue_ngap_id)) == NULL) {
+    /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
+    NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: 0x%08x\n",
+              pdusession_modify_resp_p->gNB_ue_ngap_id);
+    return -1;
+  }
+
+  /* Uplink NAS transport can occur either during an ngap connected state
+   * or during initial attach (for example: NAS authentication).
+   */
+  if (!(ue_context_p->ue_state == NGAP_UE_CONNECTED ||
+          ue_context_p->ue_state == NGAP_UE_WAITING_CSR)) {
+    NGAP_WARN("You are attempting to send NAS data over non-connected "
+              "gNB ue ngap id: %08x, current state: %d\n",
+              pdusession_modify_resp_p->gNB_ue_ngap_id, ue_context_p->ue_state);
+    return -1;
+  }
+
+  /* Prepare the NGAP message to encode */
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = NGAP_NGAP_PDU_PR_successfulOutcome;
+  pdu.choice.successfulOutcome->procedureCode = NGAP_ProcedureCode_id_PDUSessionResourceModify;
+  pdu.choice.successfulOutcome->criticality = NGAP_Criticality_reject;
+  pdu.choice.successfulOutcome->value.present = NGAP_SuccessfulOutcome__value_PR_PDUSessionResourceModifyResponse;
+  out = &pdu.choice.successfulOutcome->value.choice.PDUSessionResourceModifyResponse;
+  /* mandatory */
+  ie = (NGAP_PDUSessionResourceModifyResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyResponseIEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_ignore;
+  ie->value.present = NGAP_PDUSessionResourceModifyResponseIEs__value_PR_AMF_UE_NGAP_ID;
+  asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (NGAP_PDUSessionResourceModifyResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyResponseIEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_ignore;
+  ie->value.present = NGAP_PDUSessionResourceModifyResponseIEs__value_PR_RAN_UE_NGAP_ID;
+  ie->value.choice.RAN_UE_NGAP_ID = pdusession_modify_resp_p->gNB_ue_ngap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  /* optional */
+  if (pdusession_modify_resp_p->nb_of_pdusessions > 0) {
+    ie = (NGAP_PDUSessionResourceModifyResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyResponseIEs_t));
+    ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceModifyListModRes;
+    ie->criticality = NGAP_Criticality_ignore;
+    ie->value.present = NGAP_PDUSessionResourceModifyResponseIEs__value_PR_PDUSessionResourceModifyListModRes;
 
-    /* Uplink NAS transport can occur either during an ngap connected state
-     * or during initial attach (for example: NAS authentication).
-     */
-    if (!(ue_context_p->ue_state == NGAP_UE_CONNECTED ||
-            ue_context_p->ue_state == NGAP_UE_WAITING_CSR)) {
-        NGAP_WARN("You are attempting to send NAS data over non-connected "
-                  "gNB ue ngap id: %08x, current state: %d\n",
-                  pdusession_modify_resp_p->gNB_ue_ngap_id, ue_context_p->ue_state);
-        return -1;
+    for (i = 0; i < pdusession_modify_resp_p->nb_of_pdusessions; i++) {
+        NGAP_PDUSessionResourceModifyItemModRes_t *item;
+    
+        item = (NGAP_PDUSessionResourceModifyItemModRes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyItemModRes_t));
+        item->pDUSessionID = pdusession_modify_resp_p->pdusessions[i].pdusession_id;
+        
+        NGAP_DEBUG("pdusession_modify_resp: modified pdusession ID %ld\n", item->pDUSessionID);
+        ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceModifyListModRes.list, item);
     }
 
-    /* Prepare the NGAP message to encode */
-    memset(&pdu, 0, sizeof(pdu));
-    pdu.present = NGAP_NGAP_PDU_PR_successfulOutcome;
-    pdu.choice.successfulOutcome->procedureCode = NGAP_ProcedureCode_id_PDUSessionResourceModify;
-    pdu.choice.successfulOutcome->criticality = NGAP_Criticality_reject;
-    pdu.choice.successfulOutcome->value.present = NGAP_SuccessfulOutcome__value_PR_PDUSessionResourceModifyResponse;
-    out = &pdu.choice.successfulOutcome->value.choice.PDUSessionResourceModifyResponse;
-    /* mandatory */
-    ie = (NGAP_PDUSessionResourceModifyResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyResponseIEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
-    ie->criticality = NGAP_Criticality_ignore;
-    ie->value.present = NGAP_PDUSessionResourceModifyResponseIEs__value_PR_AMF_UE_NGAP_ID;
-    asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
     ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* mandatory */
+  }
+
+  /* optional */
+  if (pdusession_modify_resp_p->nb_of_pdusessions_failed > 0) {
     ie = (NGAP_PDUSessionResourceModifyResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyResponseIEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
+    ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceFailedToModifyListModRes;
     ie->criticality = NGAP_Criticality_ignore;
-    ie->value.present = NGAP_PDUSessionResourceModifyResponseIEs__value_PR_RAN_UE_NGAP_ID;
-    ie->value.choice.RAN_UE_NGAP_ID = pdusession_modify_resp_p->gNB_ue_ngap_id;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+    ie->value.present = NGAP_PDUSessionResourceModifyResponseIEs__value_PR_PDUSessionResourceFailedToModifyListModRes;
 
-    /* optional */
-    if (pdusession_modify_resp_p->nb_of_pdusessions > 0) {
-        ie = (NGAP_PDUSessionResourceModifyResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyResponseIEs_t));
-        ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceModifyListModRes;
-        ie->criticality = NGAP_Criticality_ignore;
-        ie->value.present = NGAP_PDUSessionResourceModifyResponseIEs__value_PR_PDUSessionResourceModifyListModRes;
+    for (i = 0; i < pdusession_modify_resp_p->nb_of_pdusessions_failed; i++) {
+      NGAP_PDUSessionResourceFailedToModifyItemModRes_t *item;
+      NGAP_PDUSessionResourceModifyUnsuccessfulTransfer_t *pdusessionTransfer_p = NULL;
+  
+      item = (NGAP_PDUSessionResourceFailedToModifyItemModRes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceFailedToModifyItemModRes_t));
+      item->pDUSessionID = pdusession_modify_resp_p->pdusessions_failed[i].pdusession_id;
 
-        for (i = 0; i < pdusession_modify_resp_p->nb_of_pdusessions; i++) {
-            NGAP_PDUSessionResourceModifyItemModRes_t *item;
-        
-            item = (NGAP_PDUSessionResourceModifyItemModRes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyItemModRes_t));
-            item->pDUSessionID = pdusession_modify_resp_p->pdusessions[i].pdusession_id;
-            
-            NGAP_DEBUG("pdusession_modify_resp: modified pdusession ID %ld\n", item->pDUSessionID);
-            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceModifyListModRes.list, item);
-        }
+      pdusessionTransfer_p = (NGAP_PDUSessionResourceModifyUnsuccessfulTransfer_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyUnsuccessfulTransfer_t));
+      pdusessionTransfer_p->cause.present = pdusession_modify_resp_p->pdusessions_failed[i].cause;
+      
+      switch(pdusessionTransfer_p->cause.present) {
+      case NGAP_Cause_PR_radioNetwork:
+          pdusessionTransfer_p->cause.choice.radioNetwork  = pdusession_modify_resp_p->pdusessions_failed[i].cause_value;
+          break;
 
-        ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    }
+      case NGAP_Cause_PR_transport:
+          pdusessionTransfer_p->cause.choice.transport     = pdusession_modify_resp_p->pdusessions_failed[i].cause_value;
+          break;
 
-    /* optional */
-    if (pdusession_modify_resp_p->nb_of_pdusessions_failed > 0) {
-        ie = (NGAP_PDUSessionResourceModifyResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyResponseIEs_t));
-        ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceFailedToModifyListModRes;
-        ie->criticality = NGAP_Criticality_ignore;
-        ie->value.present = NGAP_PDUSessionResourceModifyResponseIEs__value_PR_PDUSessionResourceFailedToModifyListModRes;
+      case NGAP_Cause_PR_nas:
+          pdusessionTransfer_p->cause.choice.nas           = pdusession_modify_resp_p->pdusessions_failed[i].cause_value;
+          break;
 
-        for (i = 0; i < pdusession_modify_resp_p->nb_of_pdusessions_failed; i++) {
-            NGAP_PDUSessionResourceFailedToModifyItemModRes_t *item;
-            NGAP_PDUSessionResourceModifyUnsuccessfulTransfer_t *pdusessionTransfer_p = NULL;
-        
-            item = (NGAP_PDUSessionResourceFailedToModifyItemModRes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceFailedToModifyItemModRes_t));
-            item->pDUSessionID = pdusession_modify_resp_p->pdusessions_failed[i].pdusession_id;
-
-            pdusessionTransfer_p = (NGAP_PDUSessionResourceModifyUnsuccessfulTransfer_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyUnsuccessfulTransfer_t));
-            pdusessionTransfer_p->cause.present = pdusession_modify_resp_p->pdusessions_failed[i].cause;
-            
-            switch(pdusessionTransfer_p->cause.present) {
-            case NGAP_Cause_PR_radioNetwork:
-                pdusessionTransfer_p->cause.choice.radioNetwork  = pdusession_modify_resp_p->pdusessions_failed[i].cause_value;
-                break;
-
-            case NGAP_Cause_PR_transport:
-                pdusessionTransfer_p->cause.choice.transport     = pdusession_modify_resp_p->pdusessions_failed[i].cause_value;
-                break;
-
-            case NGAP_Cause_PR_nas:
-                pdusessionTransfer_p->cause.choice.nas           = pdusession_modify_resp_p->pdusessions_failed[i].cause_value;
-                break;
-
-            case NGAP_Cause_PR_protocol:
-                pdusessionTransfer_p->cause.choice.protocol      = pdusession_modify_resp_p->pdusessions_failed[i].cause_value;
-                break;
-
-            case NGAP_Cause_PR_misc:
-                pdusessionTransfer_p->cause.choice.misc          = pdusession_modify_resp_p->pdusessions_failed[i].cause_value;
-                break;
-
-            case NGAP_Cause_PR_NOTHING:
-            default:
-                break;
-            }
-
-            memset(&res, 0, sizeof(res));
-            res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_NGAP_PDUSessionResourceModifyUnsuccessfulTransfer, pdusessionTransfer_p);
-            item->pDUSessionResourceModifyUnsuccessfulTransfer.buf = res.buffer;
-            item->pDUSessionResourceModifyUnsuccessfulTransfer.size = res.result.encoded;
-
-            ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_NGAP_PDUSessionResourceModifyUnsuccessfulTransfer, pdusessionTransfer_p);
-
-            
-            NGAP_DEBUG("pdusession_modify_resp: failed pdusession ID %ld\n", item->pDUSessionID);
-            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceFailedToModifyListModRes.list, item);
-        }
+      case NGAP_Cause_PR_protocol:
+          pdusessionTransfer_p->cause.choice.protocol      = pdusession_modify_resp_p->pdusessions_failed[i].cause_value;
+          break;
 
-        ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    }
+      case NGAP_Cause_PR_misc:
+          pdusessionTransfer_p->cause.choice.misc          = pdusession_modify_resp_p->pdusessions_failed[i].cause_value;
+          break;
 
-    /* optional */
-    if (0) {
-        ie = (NGAP_PDUSessionResourceModifyResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyResponseIEs_t));
-        ie->id = NGAP_ProtocolIE_ID_id_CriticalityDiagnostics;
-        ie->criticality = NGAP_Criticality_ignore;
-        ie->value.present = NGAP_PDUSessionResourceModifyResponseIEs__value_PR_CriticalityDiagnostics;
-        // ie->value.choice.CriticalityDiagnostics = ;
-        ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    }
+      case NGAP_Cause_PR_NOTHING:
+      default:
+          break;
+      }
 
-    fprintf(stderr, "start encode\n");
+      memset(&res, 0, sizeof(res));
+      res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_NGAP_PDUSessionResourceModifyUnsuccessfulTransfer, pdusessionTransfer_p);
+      item->pDUSessionResourceModifyUnsuccessfulTransfer.buf = res.buffer;
+      item->pDUSessionResourceModifyUnsuccessfulTransfer.size = res.result.encoded;
 
-    if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
-        NGAP_ERROR("Failed to encode uplink transport\n");
-        /* Encode procedure has failed... */
-        return -1;
+      ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_NGAP_PDUSessionResourceModifyUnsuccessfulTransfer, pdusessionTransfer_p);
+
+      
+      NGAP_DEBUG("pdusession_modify_resp: failed pdusession ID %ld\n", item->pDUSessionID);
+      ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceFailedToModifyListModRes.list, item);
     }
 
-    MSC_LOG_TX_MESSAGE(
-        MSC_NGAP_GNB,
-        MSC_NGAP_AMF,
-        (const char *)buffer,
-        length,
-        MSC_AS_TIME_FMT" E_RAN Modify successful Outcome gNB_ue_ngap_id %u amf_ue_ngap_id %u",
-        0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
-        pdusession_modify_resp_p->gNB_ue_ngap_id,
-        ue_context_p->amf_ue_ngap_id);
-    /* UE associated signalling -> use the allocated stream */
-    ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
-                                     ue_context_p->amf_ref->assoc_id, buffer,
-                                     length, ue_context_p->tx_stream);
-
-    return 0;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (0) {
+    ie = (NGAP_PDUSessionResourceModifyResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyResponseIEs_t));
+    ie->id = NGAP_ProtocolIE_ID_id_CriticalityDiagnostics;
+    ie->criticality = NGAP_Criticality_ignore;
+    ie->value.present = NGAP_PDUSessionResourceModifyResponseIEs__value_PR_CriticalityDiagnostics;
+    // ie->value.choice.CriticalityDiagnostics = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  fprintf(stderr, "start encode\n");
+
+  if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
+    NGAP_ERROR("Failed to encode uplink transport\n");
+    /* Encode procedure has failed... */
+    return -1;
+  }
+
+  MSC_LOG_TX_MESSAGE(
+      MSC_NGAP_GNB,
+      MSC_NGAP_AMF,
+      (const char *)buffer,
+      length,
+      MSC_AS_TIME_FMT" E_RAN Modify successful Outcome gNB_ue_ngap_id %u amf_ue_ngap_id %u",
+      0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
+      pdusession_modify_resp_p->gNB_ue_ngap_id,
+      ue_context_p->amf_ue_ngap_id);
+  /* UE associated signalling -> use the allocated stream */
+  ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
+                                   ue_context_p->amf_ref->assoc_id, buffer,
+                                   length, ue_context_p->tx_stream);
+
+  return 0;
 }
 //------------------------------------------------------------------------------
 int ngap_gNB_pdusession_release_resp(instance_t instance,
                                 ngap_pdusession_release_resp_t *pdusession_release_resp_p)
 //------------------------------------------------------------------------------
 {
-    ngap_gNB_instance_t            *ngap_gNB_instance_p = NULL;
-    struct ngap_gNB_ue_context_s   *ue_context_p        = NULL;
-    NGAP_NGAP_PDU_t                 pdu;
-    NGAP_PDUSessionResourceReleaseResponse_t    *out;
-    NGAP_PDUSessionResourceReleaseResponseIEs_t *ie;
-    uint8_t  *buffer  = NULL;
-    uint32_t length;
-    int      i;
-    /* Retrieve the NGAP gNB instance associated with Mod_id */
-    ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
-    DevAssert(pdusession_release_resp_p != NULL);
-    DevAssert(ngap_gNB_instance_p != NULL);
-
-    if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p,
-                        pdusession_release_resp_p->gNB_ue_ngap_id)) == NULL) {
-        /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
-        NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: 0x%08x\n",
-                  pdusession_release_resp_p->gNB_ue_ngap_id);
-        return -1;
-    }
-
-    /* Prepare the NGAP message to encode */
-    memset(&pdu, 0, sizeof(pdu));
-    pdu.present = NGAP_NGAP_PDU_PR_successfulOutcome;
-    pdu.choice.successfulOutcome->procedureCode = NGAP_ProcedureCode_id_PDUSessionResourceRelease;
-    pdu.choice.successfulOutcome->criticality = NGAP_Criticality_reject;
-    pdu.choice.successfulOutcome->value.present = NGAP_SuccessfulOutcome__value_PR_PDUSessionResourceReleaseResponse;
-    out = &pdu.choice.successfulOutcome->value.choice.PDUSessionResourceReleaseResponse;
-    /* mandatory */
-    ie = (NGAP_PDUSessionResourceReleaseResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceReleaseResponseIEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
-    ie->criticality = NGAP_Criticality_ignore;
-    ie->value.present = NGAP_PDUSessionResourceReleaseResponseIEs__value_PR_AMF_UE_NGAP_ID;
-    asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-    /* mandatory */
+  ngap_gNB_instance_t            *ngap_gNB_instance_p = NULL;
+  struct ngap_gNB_ue_context_s   *ue_context_p        = NULL;
+  NGAP_NGAP_PDU_t                 pdu;
+  NGAP_PDUSessionResourceReleaseResponse_t    *out;
+  NGAP_PDUSessionResourceReleaseResponseIEs_t *ie;
+  uint8_t  *buffer  = NULL;
+  uint32_t length;
+  int      i;
+  /* Retrieve the NGAP gNB instance associated with Mod_id */
+  ngap_gNB_instance_p = ngap_gNB_get_instance(instance);
+  DevAssert(pdusession_release_resp_p != NULL);
+  DevAssert(ngap_gNB_instance_p != NULL);
+
+  if ((ue_context_p = ngap_gNB_get_ue_context(ngap_gNB_instance_p,
+                      pdusession_release_resp_p->gNB_ue_ngap_id)) == NULL) {
+    /* The context for this gNB ue ngap id doesn't exist in the map of gNB UEs */
+    NGAP_WARN("Failed to find ue context associated with gNB ue ngap id: 0x%08x\n",
+              pdusession_release_resp_p->gNB_ue_ngap_id);
+    return -1;
+  }
+
+  /* Prepare the NGAP message to encode */
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = NGAP_NGAP_PDU_PR_successfulOutcome;
+  pdu.choice.successfulOutcome->procedureCode = NGAP_ProcedureCode_id_PDUSessionResourceRelease;
+  pdu.choice.successfulOutcome->criticality = NGAP_Criticality_reject;
+  pdu.choice.successfulOutcome->value.present = NGAP_SuccessfulOutcome__value_PR_PDUSessionResourceReleaseResponse;
+  out = &pdu.choice.successfulOutcome->value.choice.PDUSessionResourceReleaseResponse;
+  /* mandatory */
+  ie = (NGAP_PDUSessionResourceReleaseResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceReleaseResponseIEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_ignore;
+  ie->value.present = NGAP_PDUSessionResourceReleaseResponseIEs__value_PR_AMF_UE_NGAP_ID;
+  asn_uint642INTEGER(&ie->value.choice.AMF_UE_NGAP_ID, ue_context_p->amf_ue_ngap_id);
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (NGAP_PDUSessionResourceReleaseResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceReleaseResponseIEs_t));
+  ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
+  ie->criticality = NGAP_Criticality_ignore;
+  ie->value.present = NGAP_PDUSessionResourceReleaseResponseIEs__value_PR_RAN_UE_NGAP_ID;
+  ie->value.choice.RAN_UE_NGAP_ID = pdusession_release_resp_p->gNB_ue_ngap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  /* optional */
+  if (pdusession_release_resp_p->nb_of_pdusessions_released > 0) {
     ie = (NGAP_PDUSessionResourceReleaseResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceReleaseResponseIEs_t));
-    ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
+    ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceReleasedListRelRes;
     ie->criticality = NGAP_Criticality_ignore;
-    ie->value.present = NGAP_PDUSessionResourceReleaseResponseIEs__value_PR_RAN_UE_NGAP_ID;
-    ie->value.choice.RAN_UE_NGAP_ID = pdusession_release_resp_p->gNB_ue_ngap_id;
-    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
-
-    /* optional */
-    if (pdusession_release_resp_p->nb_of_pdusessions_released > 0) {
-        ie = (NGAP_PDUSessionResourceReleaseResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceReleaseResponseIEs_t));
-        ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceReleasedListRelRes;
-        ie->criticality = NGAP_Criticality_ignore;
-        ie->value.present = NGAP_PDUSessionResourceReleaseResponseIEs__value_PR_PDUSessionResourceReleasedListRelRes;
-
-        for (i = 0; i < pdusession_release_resp_p->nb_of_pdusessions_released; i++) {
-            NGAP_PDUSessionResourceReleasedItemRelRes_t *item;
-            item = (NGAP_PDUSessionResourceReleasedItemRelRes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceReleasedItemRelRes_t));
-        
-            item->pDUSessionID = pdusession_release_resp_p->pdusession_release[i].pdusession_id;
-            NGAP_DEBUG("pdusession_release_resp: pdusession ID %ld\n", item->pDUSessionID);
-            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceReleasedListRelRes.list, item);
-        }
+    ie->value.present = NGAP_PDUSessionResourceReleaseResponseIEs__value_PR_PDUSessionResourceReleasedListRelRes;
 
-        ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+    for (i = 0; i < pdusession_release_resp_p->nb_of_pdusessions_released; i++) {
+        NGAP_PDUSessionResourceReleasedItemRelRes_t *item;
+        item = (NGAP_PDUSessionResourceReleasedItemRelRes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceReleasedItemRelRes_t));
+    
+        item->pDUSessionID = pdusession_release_resp_p->pdusession_release[i].pdusession_id;
+        NGAP_DEBUG("pdusession_release_resp: pdusession ID %ld\n", item->pDUSessionID);
+        ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceReleasedListRelRes.list, item);
     }
 
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+
+  if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
+    NGAP_ERROR("Failed to encode release response\n");
+    /* Encode procedure has failed... */
+    return -1;
+  }
+
+  MSC_LOG_TX_MESSAGE(
+      MSC_NGAP_GNB,
+      MSC_NGAP_AMF,
+      (const char *)buffer,
+      length,
+      MSC_AS_TIME_FMT" E_RAN Release successfulOutcome gNB_ue_ngap_id %u amf_ue_ngap_id %lu",
+      0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
+      pdusession_release_resp_p->gNB_ue_ngap_id,
+      (uint64_t)ue_context_p->amf_ue_ngap_id);
+  /* UE associated signalling -> use the allocated stream */
+  ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
+                                   ue_context_p->amf_ref->assoc_id, buffer,
+                                   length, ue_context_p->tx_stream);
+  NGAP_INFO("pdusession_release_response sended gNB_UE_NGAP_ID %u  amf_ue_ngap_id %lu nb_of_pdusessions_released %d nb_of_pdusessions_failed %d\n",
+            pdusession_release_resp_p->gNB_ue_ngap_id, (uint64_t)ue_context_p->amf_ue_ngap_id,pdusession_release_resp_p->nb_of_pdusessions_released,pdusession_release_resp_p->nb_of_pdusessions_failed);
 
-    if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
-        NGAP_ERROR("Failed to encode release response\n");
-        /* Encode procedure has failed... */
-        return -1;
-    }
-
-    MSC_LOG_TX_MESSAGE(
-        MSC_NGAP_GNB,
-        MSC_NGAP_AMF,
-        (const char *)buffer,
-        length,
-        MSC_AS_TIME_FMT" E_RAN Release successfulOutcome gNB_ue_ngap_id %u amf_ue_ngap_id %lu",
-        0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
-        pdusession_release_resp_p->gNB_ue_ngap_id,
-        (uint64_t)ue_context_p->amf_ue_ngap_id);
-    /* UE associated signalling -> use the allocated stream */
-    ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
-                                     ue_context_p->amf_ref->assoc_id, buffer,
-                                     length, ue_context_p->tx_stream);
-    NGAP_INFO("pdusession_release_response sended gNB_UE_NGAP_ID %u  amf_ue_ngap_id %lu nb_of_pdusessions_released %d nb_of_pdusessions_failed %d\n",
-              pdusession_release_resp_p->gNB_ue_ngap_id, (uint64_t)ue_context_p->amf_ue_ngap_id,pdusession_release_resp_p->nb_of_pdusessions_released,pdusession_release_resp_p->nb_of_pdusessions_failed);
-
-    return 0;
+  return 0;
 }
 
 int ngap_gNB_path_switch_req(instance_t instance,