diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index 34b868642d966cd58f1a4491169a67cfb0ee5dff..393ac9f3fe9e1a2ade3d819edf53f404c0de0ead 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -280,6 +280,7 @@ set(protobuf_generated_dir ${OPENAIR_BIN_DIR})
 
 # RRC
 ######
+
 add_list2_option(RRC_ASN1_VERSION "Rel14" "ASN.1 version of RRC interface" "Rel8" "Rel10" "Rel14" "CBA")
 
 if (${RRC_ASN1_VERSION} STREQUAL "Rel8")
@@ -292,7 +293,7 @@ else()
   set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1c/ASN1_files/RRC-e30.asn)
 endif  (${RRC_ASN1_VERSION} STREQUAL "Rel8")
 
-set (RRC_FULL_DIR ${asn1_generated_dir}/${RRC_ASN1_VERSION})
+set (RRC_FULL_DIR ${asn1_generated_dir}/RRC_${RRC_ASN1_VERSION})
 if(NOT EXISTS ${asn1c_call})
   message( FATAL_ERROR "The script ${asn1c_call} must be present" )
 endif(NOT EXISTS ${asn1c_call})
@@ -331,10 +332,14 @@ add_custom_command (
 # Same limitation as described in RRC: unknown generated file list
 # so we generate it at cmake time
 ##############
-add_list1_option(S1AP_VERSION R10 "S1AP Asn.1 grammar version" R8 R9 R10)
+add_list1_option(S1AP_VERSION R14 "S1AP Asn.1 grammar version" R8 R9 R10 R14)
 
 set(S1AP_DIR ${OPENAIR3_DIR}/S1AP)
-if (${S1AP_VERSION} STREQUAL "R10")
+if (${S1AP_VERSION} STREQUAL "R14")
+  set (ASN1RELDIR R14.4)
+  add_definitions("-DUPDATE_RELEASE_9 -DUPDATE_RELEASE_10 -DUPDATE_RELEASE_14")
+  set(S1AP_ASN_FILES s1ap-14.4.0.asn1)
+elseif (${S1AP_VERSION} STREQUAL "R10")
   set (ASN1RELDIR R10.5)
   add_definitions("-DUPDATE_RELEASE_9 -DUPDATE_RELEASE_10")
 elseif (${S1AP_VERSION} STREQUAL "R9")
@@ -342,52 +347,28 @@ elseif (${S1AP_VERSION} STREQUAL "R9")
   add_definitions("-DUPDATE_RELEASE_9")
 else(${S1AP_VERSION} STREQUAL "R8")
   set (ASN1RELDIR R8.10)
-endif(${S1AP_VERSION} STREQUAL "R10")
+endif(${S1AP_VERSION} STREQUAL "R14")
 set(S1AP_ASN_DIR ${S1AP_DIR}/MESSAGES/ASN1/${ASN1RELDIR})
-set(S1AP_ASN_FILES
-  ${S1AP_ASN_DIR}/S1AP-CommonDataTypes.asn
-  ${S1AP_ASN_DIR}/S1AP-Constants.asn
-  ${S1AP_ASN_DIR}/S1AP-IEs.asn
-  ${S1AP_ASN_DIR}/S1AP-PDU.asn
-  )
-set(S1AP_C_DIR ${asn1_generated_dir}/${ASN1RELDIR})
-#message("calling ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES}")
-execute_process(COMMAND ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES}
-                RESULT_VARIABLE ret)
-if (NOT ${ret} STREQUAL 0)
-  message(FATAL_ERROR "${asn1c_call}: error")
-endif (NOT ${ret} STREQUAL 0)
-execute_process(COMMAND python ${S1AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f${S1AP_ASN_DIR}/S1AP-PDU-Contents.asn -o${S1AP_C_DIR}
+set(S1AP_C_DIR ${asn1_generated_dir}/S1AP_${ASN1RELDIR})
+message("calling ASN1C_PREFIX=S1AP_ asn1c -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D ${S1AP_C_DIR} ${S1AP_ASN_DIR}/${S1AP_ASN_FILES}")
+execute_process(COMMAND mkdir -p ${S1AP_C_DIR}
+                COMMAND env "ASN1C_PREFIX=S1AP_" asn1c -pdu=all -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D ${S1AP_C_DIR} ${S1AP_ASN_DIR}/${S1AP_ASN_FILES}
                 RESULT_VARIABLE ret)
 if (NOT ${ret} STREQUAL 0)
-  message(FATAL_ERROR "asn1tostruct.py: error")
-endif (NOT ${ret} STREQUAL 0)
-execute_process(COMMAND ${fix_asn1c_call} ${S1AP_C_DIR} S1AP ${S1AP_VERSION}
-                RESULT_VARIABLE ret)
-if (NOT ${ret} STREQUAL 0)
-  message(FATAL_ERROR "${fix_asn1c_call}: error")
+  message(FATAL_ERROR "${ret}: error")
 endif (NOT ${ret} STREQUAL 0)
 file(GLOB S1AP_source ${S1AP_C_DIR}/*.c)
 
-set(S1AP_OAI_generated
-  ${S1AP_C_DIR}/s1ap_decoder.c
-  ${S1AP_C_DIR}/s1ap_encoder.c
-  ${S1AP_C_DIR}/s1ap_xer_print.c
-  ${S1AP_C_DIR}/s1ap_compare.c
-  ${S1AP_C_DIR}/s1ap_ies_defs.h
-  )
 file(GLOB s1ap_h ${S1AP_C_DIR}/*.h)
 set(s1ap_h ${s1ap_h} )
 
 add_custom_command (
-  OUTPUT ${S1AP_OAI_generated}
-  COMMAND ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES}
-  COMMAND python ${S1AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f${S1AP_ASN_DIR}/S1AP-PDU-Contents.asn -o${S1AP_C_DIR}
-  COMMAND ${fix_asn1c_call} ${S1AP_C_DIR} S1AP ${S1AP_VERSION}
-  DEPENDS ${S1AP_ASN_FILES}
-  )
+  OUTPUT ${S1AP_C_DIR}/S1AP_asn_constant.h
+  COMMAND mkdir -p ${S1AP_C_DIR}
+  COMMAND env "ASN1C_PREFIX=S1AP_" asn1c -pdu=all -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D ${S1AP_C_DIR} ${S1AP_ASN_DIR}/${S1AP_ASN_FILES}
+  DEPENDS ${S1AP_ASN_DIR}/${S1AP_ASN_FILES}
+)
 add_library(S1AP_LIB
-  ${S1AP_OAI_generated}
   ${S1AP_source}
   ${S1AP_DIR}/s1ap_common.c
   )
@@ -396,10 +377,9 @@ include_directories ("${S1AP_C_DIR}")
 include_directories ("${S1AP_DIR}")
 
 add_library(S1AP_ENB
-  ${S1AP_C_DIR}/s1ap_ies_defs.h
+  # ${S1AP_C_DIR}/s1ap_ies_defs.h
   ${S1AP_DIR}/s1ap_eNB.c
   ${S1AP_DIR}/s1ap_eNB_context_management_procedures.c
-  ${S1AP_DIR}/s1ap_eNB_decoder.c
   ${S1AP_DIR}/s1ap_eNB_encoder.c
   ${S1AP_DIR}/s1ap_eNB_handlers.c
   ${S1AP_DIR}/s1ap_eNB_itti_messaging.c
@@ -409,6 +389,7 @@ add_library(S1AP_ENB
   ${S1AP_DIR}/s1ap_eNB_overload.c
   ${S1AP_DIR}/s1ap_eNB_trace.c
   ${S1AP_DIR}/s1ap_eNB_ue_context.c
+  ${S1AP_DIR}/s1ap_eNB_decoder.c
   )
 
 
@@ -417,61 +398,39 @@ add_library(S1AP_ENB
 # Same limitation as described in RRC/S1AP: unknown generated file list
 # so we generate it at cmake time
 ##############
-add_list1_option(X2AP_VERSION R11 "X2AP Asn.1 grammar version" R10 R11)
+add_list1_option(X2AP_VERSION R14 "X2AP Asn.1 grammar version" R10 R11 R14)
 set(X2AP_DIR ${OPENAIR2_DIR}/X2AP)
-if (${X2AP_VERSION} STREQUAL "R11")
+if (${X2AP_VERSION} STREQUAL "R14")
+  set (ASN1RELDIR R14.5)
+  set (X2AP_ASN_FILES x2ap-14.5.0.asn1)
+elseif (${X2AP_VERSION} STREQUAL "R11")
   set (ASN1RELDIR R11.2)
 elseif (${X2AP_VERSION} STREQUAL "R10")
   set (ASN1RELDIR R.UNKNOWN)
-endif(${X2AP_VERSION} STREQUAL "R11")
+endif(${X2AP_VERSION} STREQUAL "R14")
 set(X2AP_ASN_DIR ${X2AP_DIR}/MESSAGES/ASN1/${ASN1RELDIR})
-set(X2AP_ASN_FILES
-  ${X2AP_ASN_DIR}/X2AP-CommonDataTypes.asn
-  ${X2AP_ASN_DIR}/X2AP-Constants.asn
-  ${X2AP_ASN_DIR}/X2AP-IEs.asn
-  ${X2AP_ASN_DIR}/X2AP-PDU.asn
-  ${X2AP_ASN_DIR}/X2AP-Containers.asn
-  )
 
-set(X2AP_C_DIR ${asn1_generated_dir}/${ASN1RELDIR})
-#message("calling ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES}")
-execute_process(COMMAND ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES}
+set(X2AP_C_DIR ${asn1_generated_dir}/X2AP_${ASN1RELDIR})
+message("calling asn1c -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D ${X2AP_C_DIR} ${X2AP_ASN_DIR}/${X2AP_ASN_FILES}")
+execute_process(COMMAND mkdir -p ${X2AP_C_DIR}
+                COMMAND env "ASN1C_PREFIX=X2AP_" asn1c -pdu=all -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D ${X2AP_C_DIR} ${X2AP_ASN_DIR}/${X2AP_ASN_FILES}
                 RESULT_VARIABLE ret)
 if (NOT ${ret} STREQUAL 0)
   message(FATAL_ERROR "${asn1c_call}: error")
 endif (NOT ${ret} STREQUAL 0)
-execute_process(COMMAND python ${X2AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f ${X2AP_ASN_DIR}/X2AP-PDU-Contents.asn -o ${X2AP_C_DIR}
-                RESULT_VARIABLE ret)
-if (NOT ${ret} STREQUAL 0)
-  message(FATAL_ERROR "asn1tostruct.py: error")
-endif (NOT ${ret} STREQUAL 0)
-execute_process(COMMAND ${fix_asn1c_call} ${X2AP_C_DIR} X2AP ${X2AP_VERSION}
-                RESULT_VARIABLE ret)
-if (NOT ${ret} STREQUAL 0)
-  message(FATAL_ERROR "${fix_asn1c_call}: error")
-endif (NOT ${ret} STREQUAL 0)
 file(GLOB X2AP_source ${X2AP_C_DIR}/*.c)
 
-set(X2AP_OAI_generated
-  ${X2AP_C_DIR}/x2ap_decoder.c
-  ${X2AP_C_DIR}/x2ap_encoder.c
-  ${X2AP_C_DIR}/x2ap_xer_print.c
-  ${X2AP_C_DIR}/x2ap_ies_defs.h
-  )
 file(GLOB x2ap_h ${X2AP_C_DIR}/*.h)
 set(x2ap_h ${x2ap_h} )
 
-#message("calling ${X2AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f ${X2AP_ASN_DIR}/X2AP-PDU-Contents.asn -o ${X2AP_C_DIR}")
 add_custom_command (
-  OUTPUT ${X2AP_OAI_generated}
-  COMMAND ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES}
-  COMMAND python ${X2AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f ${X2AP_ASN_DIR}/X2AP-PDU-Contents.asn -o ${X2AP_C_DIR}
-  COMMAND ${fix_asn1c_call} ${X2AP_C_DIR} X2AP ${X2AP_VERSION}
-  DEPENDS ${X2AP_ASN_FILES}
+  OUTPUT ${X2AP_C_DIR}/X2AP_asn_constant.h
+  COMMAND mkdir -p ${X2AP_C_DIR}
+  COMMAND env "ASN1C_PREFIX=X2AP_" asn1c -pdu=all -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D ${X2AP_C_DIR} ${X2AP_ASN_DIR}/${X2AP_ASN_FILES}
+  DEPENDS ${X2AP_ASN_DIR}/${X2AP_ASN_FILES}
   )
 
 add_library(X2AP_LIB
-  ${X2AP_OAI_generated}
   ${X2AP_source}
   ${X2AP_DIR}/x2ap_common.c
   )
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index 3bb051f2912a06eaddae332db052be2baa089272..243841dcc01fa142fe6b3474dec9181fb168d6e3 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -659,8 +659,10 @@ install_asn1c_from_source(){
     echo_info "\nInstalling ASN1. The log file for ASN1 installation is here: $asn1_install_log "
     (
     $SUDO rm -rf /tmp/asn1c
-    GIT_SSL_NO_VERIFY=true git clone https://gitlab.eurecom.fr/oai/asn1c.git /tmp/asn1c
+    # GIT_SSL_NO_VERIFY=true git clone https://gitlab.eurecom.fr/oai/asn1c.git /tmp/asn1c
+    git clone git checkout https://github.com/velichkov/asn1c /tmp/asn1c
     cd /tmp/asn1c
+    git checkout s1ap
     ./configure
     make -j`nproc`
     $SUDO make install
diff --git a/cmake_targets/tools/fix_asn1 b/cmake_targets/tools/fix_asn1
index fe819c27162df2174c27cc2cc93aa250b00c3bd1..297aa83ffe8bbd5eb7d72d942a3ddee892042182 100755
--- a/cmake_targets/tools/fix_asn1
+++ b/cmake_targets/tools/fix_asn1
@@ -94,7 +94,7 @@ function patch_rrc()
   case "$version" in
     Rel14 )
       echo "patching RRC files release 14"
-      apply_patches "$directory" RRC_Rel14 ${#RRC_Rel14[*]}
+      # apply_patches "$directory" RRC_Rel14 ${#RRC_Rel14[*]}
       ;;
     Rel10 )
       echo "patching RRC files release 10"
@@ -115,6 +115,8 @@ function patch_x2ap()
   local version="$2"
 
   case "$version" in
+    R14 )
+      ;;
     R11 )
       echo "patching X2AP files release 11.2"
       apply_patches "$directory" X2AP_Rel11_2 ${#X2AP_Rel11_2[*]}
@@ -131,6 +133,8 @@ function patch_s1ap()
   local version="$2"
 
   case "$version" in
+    R14 )
+      ;;
     R10 )
       #nothing to do anymore (fixes went to asn1c)
       ;;
diff --git a/cmake_targets/tools/generate_asn1 b/cmake_targets/tools/generate_asn1
index 79becbf28881395dd495bad7921ee11dce02100b..bad91041c14f94b9bdda1a28dd01a2ff0f219cad 100755
--- a/cmake_targets/tools/generate_asn1
+++ b/cmake_targets/tools/generate_asn1
@@ -99,7 +99,7 @@ echo done with asnfix
 
 echo running asn1c
 
-asn1c -gen-PER -fcompound-names fixed_grammar.asn 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
+asn1c -gen-PER -fcompound-names -no-gen-example fixed_grammar.asn 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
 
 rm -f fixed_grammar.asn
 
@@ -107,7 +107,7 @@ echo asn1c done
 
 else
 
-asn1c -gen-PER -fcompound-names $* 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
+asn1c -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example $* 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
 
 fi
 
diff --git a/openair2/RRC/LITE/L2_interface.c b/openair2/RRC/LITE/L2_interface.c
index 91834d9c9d64f4742cec1cd2b9d538a8ca9b8065..c0ab3cecd5649cd84468f25c610a833486ad2ee0 100644
--- a/openair2/RRC/LITE/L2_interface.c
+++ b/openair2/RRC/LITE/L2_interface.c
@@ -69,7 +69,7 @@ mac_rrc_data_req(
   const frame_t     frameP,
   const rb_id_t     Srb_id,
   const uint8_t     Nb_tb,
-  uint8_t*    const buffer_pP,
+  uint8_t    *const buffer_pP,
   const uint8_t     mbsfn_sync_area
 )
 //--------------------------------------------------------------------------
@@ -78,286 +78,262 @@ mac_rrc_data_req(
   SRB_INFO *Srb_info;
   uint8_t Sdu_size                = 0;
   uint8_t sfn                     = (uint8_t)((frameP>>2)&0xff);
-
-
 #ifdef DEBUG_RRC
   int i;
   LOG_I(RRC,"[eNB %d] mac_rrc_data_req to SRB ID=%d\n",Mod_idP,Srb_id);
 #endif
-
   eNB_RRC_INST *rrc;
   rrc_eNB_carrier_data_t *carrier;
   BCCH_BCH_Message_t *mib;
+  rrc     = RC.rrc[Mod_idP];
+  carrier = &rrc->carrier[0];
+  mib     = &carrier->mib;
 
+  if((Srb_id & RAB_OFFSET) == BCCH) {
+    if(RC.rrc[Mod_idP]->carrier[CC_id].SI.Active==0) {
+      return 0;
+    }
 
-    rrc     = RC.rrc[Mod_idP];
-    carrier = &rrc->carrier[0];
-    mib     = &carrier->mib;
-
-    if((Srb_id & RAB_OFFSET) == BCCH) {
-      if(RC.rrc[Mod_idP]->carrier[CC_id].SI.Active==0) {
-        return 0;
-      }
-
-      // All even frames transmit SIB in SF 5
-      AssertFatal(RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1 != 255, 
-		  "[eNB %d] MAC Request for SIB1 and SIB1 not initialized\n",Mod_idP);
-
-      if ((frameP%2) == 0) {
-        memcpy(&buffer_pP[0],
-               RC.rrc[Mod_idP]->carrier[CC_id].SIB1,
-               RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1);
+    // All even frames transmit SIB in SF 5
+    AssertFatal(RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1 != 255,
+                "[eNB %d] MAC Request for SIB1 and SIB1 not initialized\n",Mod_idP);
 
+    if ((frameP%2) == 0) {
+      memcpy(&buffer_pP[0],
+             RC.rrc[Mod_idP]->carrier[CC_id].SIB1,
+             RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1);
 #if 0 //defined(ENABLE_ITTI)
-        {
-          MessageDef *message_p;
-          int sib1_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1;
-          int sdu_size = sizeof(RRC_MAC_BCCH_DATA_REQ (message_p).sdu);
-
-          if (sib1_size > sdu_size) {
-            LOG_E(RRC, "SIB1 SDU larger than BCCH SDU buffer size (%d, %d)", sib1_size, sdu_size);
-            sib1_size = sdu_size;
-          }
-
-          message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_BCCH_DATA_REQ);
-          RRC_MAC_BCCH_DATA_REQ (message_p).frame    = frameP;
-          RRC_MAC_BCCH_DATA_REQ (message_p).sdu_size = sib1_size;
-          memset (RRC_MAC_BCCH_DATA_REQ (message_p).sdu, 0, BCCH_SDU_SIZE);
-          memcpy (RRC_MAC_BCCH_DATA_REQ (message_p).sdu,
-                  RC.rrc[Mod_idP]->carrier[CC_id].SIB1,
-                  sib1_size);
-          RRC_MAC_BCCH_DATA_REQ (message_p).enb_index = eNB_index;
-
-          itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
-        }
-#endif
-
-#ifdef DEBUG_RRC
-        LOG_T(RRC,"[eNB %d] Frame %d : BCCH request => SIB 1\n",Mod_idP,frameP);
+      {
+        MessageDef *message_p;
+        int sib1_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1;
+        int sdu_size = sizeof(RRC_MAC_BCCH_DATA_REQ (message_p).sdu);
 
-        for (i=0; i<RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1; i++) {
-          LOG_T(RRC,"%x.",buffer_pP[i]);
+        if (sib1_size > sdu_size) {
+          LOG_E(RRC, "SIB1 SDU larger than BCCH SDU buffer size (%d, %d)", sib1_size, sdu_size);
+          sib1_size = sdu_size;
         }
 
-        LOG_T(RRC,"\n");
+        message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_BCCH_DATA_REQ);
+        RRC_MAC_BCCH_DATA_REQ (message_p).frame    = frameP;
+        RRC_MAC_BCCH_DATA_REQ (message_p).sdu_size = sib1_size;
+        memset (RRC_MAC_BCCH_DATA_REQ (message_p).sdu, 0, BCCH_SDU_SIZE);
+        memcpy (RRC_MAC_BCCH_DATA_REQ (message_p).sdu,
+                RC.rrc[Mod_idP]->carrier[CC_id].SIB1,
+                sib1_size);
+        RRC_MAC_BCCH_DATA_REQ (message_p).enb_index = eNB_index;
+        itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
+      }
 #endif
+#ifdef DEBUG_RRC
+      LOG_T(RRC,"[eNB %d] Frame %d : BCCH request => SIB 1\n",Mod_idP,frameP);
 
-        return (RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1);
-      } // All RFN mod 8 transmit SIB2-3 in SF 5
-      else if ((frameP%8) == 1) {
-        memcpy(&buffer_pP[0],
-               RC.rrc[Mod_idP]->carrier[CC_id].SIB23,
-               RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23);
+      for (i=0; i<RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1; i++) {
+        LOG_T(RRC,"%x.",buffer_pP[i]);
+      }
 
-#if 0 //defined(ENABLE_ITTI)
-        {
-          MessageDef *message_p;
-          int sib23_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23;
-          int sdu_size = sizeof(RRC_MAC_BCCH_DATA_REQ (message_p).sdu);
-
-          if (sib23_size > sdu_size) {
-            LOG_E(RRC, "SIB23 SDU larger than BCCH SDU buffer size (%d, %d)", sib23_size, sdu_size);
-            sib23_size = sdu_size;
-          }
-
-          message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_BCCH_DATA_REQ);
-          RRC_MAC_BCCH_DATA_REQ (message_p).frame = frameP;
-          RRC_MAC_BCCH_DATA_REQ (message_p).sdu_size = sib23_size;
-          memset (RRC_MAC_BCCH_DATA_REQ (message_p).sdu, 0, BCCH_SDU_SIZE);
-          memcpy (RRC_MAC_BCCH_DATA_REQ (message_p).sdu,
-                  RC.rrc[Mod_idP]->carrier[CC_id].SIB23,
-                  sib23_size);
-          RRC_MAC_BCCH_DATA_REQ (message_p).enb_index = eNB_index;
-
-          itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
-        }
+      LOG_T(RRC,"\n");
 #endif
+      return (RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1);
+    } // All RFN mod 8 transmit SIB2-3 in SF 5
+    else if ((frameP%8) == 1) {
+      memcpy(&buffer_pP[0],
+             RC.rrc[Mod_idP]->carrier[CC_id].SIB23,
+             RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23);
+#if 0 //defined(ENABLE_ITTI)
+      {
+        MessageDef *message_p;
+        int sib23_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23;
+        int sdu_size = sizeof(RRC_MAC_BCCH_DATA_REQ (message_p).sdu);
 
-#ifdef DEBUG_RRC
-        LOG_T(RRC,"[eNB %d] Frame %d BCCH request => SIB 2-3\n",Mod_idP,frameP);
-
-        for (i=0; i<RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23; i++) {
-          LOG_T(RRC,"%x.",buffer_pP[i]);
+        if (sib23_size > sdu_size) {
+          LOG_E(RRC, "SIB23 SDU larger than BCCH SDU buffer size (%d, %d)", sib23_size, sdu_size);
+          sib23_size = sdu_size;
         }
 
-        LOG_T(RRC,"\n");
-#endif
-        return(RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23);
-      } else {
-        return(0);
+        message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_BCCH_DATA_REQ);
+        RRC_MAC_BCCH_DATA_REQ (message_p).frame = frameP;
+        RRC_MAC_BCCH_DATA_REQ (message_p).sdu_size = sib23_size;
+        memset (RRC_MAC_BCCH_DATA_REQ (message_p).sdu, 0, BCCH_SDU_SIZE);
+        memcpy (RRC_MAC_BCCH_DATA_REQ (message_p).sdu,
+                RC.rrc[Mod_idP]->carrier[CC_id].SIB23,
+                sib23_size);
+        RRC_MAC_BCCH_DATA_REQ (message_p).enb_index = eNB_index;
+        itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
       }
-    }
-    if( (Srb_id & RAB_OFFSET ) == MIBCH) {
-
-        mib->message.systemFrameNumber.buf = &sfn;
-	enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_BCH_Message,
-					 (void*)mib,
-					 carrier->MIB,
-					 24);
-	LOG_D(RRC,"Encoded MIB for frame %d (%p), bits %lu\n",sfn,carrier->MIB,enc_rval.encoded);
-	buffer_pP[0]=carrier->MIB[0];
-	buffer_pP[1]=carrier->MIB[1];
-	buffer_pP[2]=carrier->MIB[2];
-	AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
-		     enc_rval.failed_type->name, enc_rval.encoded);
-	return(3);
-    }
-
-    if( (Srb_id & RAB_OFFSET ) == CCCH) {
-      LOG_T(RRC,"[eNB %d] Frame %d CCCH request (Srb_id %d)\n",Mod_idP,frameP, Srb_id);
+#endif
+#ifdef DEBUG_RRC
+      LOG_T(RRC,"[eNB %d] Frame %d BCCH request => SIB 2-3\n",Mod_idP,frameP);
 
-      if(RC.rrc[Mod_idP]->carrier[CC_id].Srb0.Active==0) {
-        LOG_E(RRC,"[eNB %d] CCCH Not active\n",Mod_idP);
-        return -1;
+      for (i=0; i<RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23; i++) {
+        LOG_T(RRC,"%x.",buffer_pP[i]);
       }
 
-      Srb_info=&RC.rrc[Mod_idP]->carrier[CC_id].Srb0;
-
-      // check if data is there for MAC
-      if(Srb_info->Tx_buffer.payload_size>0) { //Fill buffer
-        LOG_D(RRC,"[eNB %d] CCCH (%p) has %d bytes (dest: %p, src %p)\n",Mod_idP,Srb_info,Srb_info->Tx_buffer.payload_size,buffer_pP,Srb_info->Tx_buffer.Payload);
-
-#if 0 // defined(ENABLE_ITTI)
-        {
-          MessageDef *message_p;
-          int ccch_size = Srb_info->Tx_buffer.payload_size;
-          int sdu_size = sizeof(RRC_MAC_CCCH_DATA_REQ (message_p).sdu);
-
-          if (ccch_size > sdu_size) {
-            LOG_E(RRC, "SDU larger than CCCH SDU buffer size (%d, %d)", ccch_size, sdu_size);
-            ccch_size = sdu_size;
-          }
-
-          message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_CCCH_DATA_REQ);
-          RRC_MAC_CCCH_DATA_REQ (message_p).frame = frameP;
-          RRC_MAC_CCCH_DATA_REQ (message_p).sdu_size = ccch_size;
-          memset (RRC_MAC_CCCH_DATA_REQ (message_p).sdu, 0, CCCH_SDU_SIZE);
-          memcpy (RRC_MAC_CCCH_DATA_REQ (message_p).sdu, Srb_info->Tx_buffer.Payload, ccch_size);
-          RRC_MAC_CCCH_DATA_REQ (message_p).enb_index = eNB_index;
-
-          itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
-        }
+      LOG_T(RRC,"\n");
 #endif
+      return(RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23);
+    } else {
+      return(0);
+    }
+  }
 
-        memcpy(buffer_pP,Srb_info->Tx_buffer.Payload,Srb_info->Tx_buffer.payload_size);
-        Sdu_size = Srb_info->Tx_buffer.payload_size;
-        Srb_info->Tx_buffer.payload_size=0;
-      }
+  if( (Srb_id & RAB_OFFSET ) == MIBCH) {
+    mib->message.systemFrameNumber.buf = &sfn;
+    enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_BCH_Message,
+                                     NULL,
+                                     (void *)mib,
+                                     carrier->MIB,
+                                     24);
+    LOG_D(RRC,"Encoded MIB for frame %d (%p), bits %lu\n",sfn,carrier->MIB,enc_rval.encoded);
+    buffer_pP[0]=carrier->MIB[0];
+    buffer_pP[1]=carrier->MIB[1];
+    buffer_pP[2]=carrier->MIB[2];
+    AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
+                 enc_rval.failed_type->name, enc_rval.encoded);
+    return(3);
+  }
+
+  if( (Srb_id & RAB_OFFSET ) == CCCH) {
+    LOG_T(RRC,"[eNB %d] Frame %d CCCH request (Srb_id %d)\n",Mod_idP,frameP, Srb_id);
 
-      return (Sdu_size);
+    if(RC.rrc[Mod_idP]->carrier[CC_id].Srb0.Active==0) {
+      LOG_E(RRC,"[eNB %d] CCCH Not active\n",Mod_idP);
+      return -1;
     }
 
-    if( (Srb_id & RAB_OFFSET ) == PCCH) {
-      LOG_T(RRC,"[eNB %d] Frame %d PCCH request (Srb_id %d)\n",Mod_idP,frameP, Srb_id);
+    Srb_info=&RC.rrc[Mod_idP]->carrier[CC_id].Srb0;
 
-      // check if data is there for MAC
-      if(RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area] > 0) { //Fill buffer
-        LOG_D(RRC,"[eNB %d] PCCH (%p) has %d bytes\n",Mod_idP,&RC.rrc[Mod_idP]->carrier[CC_id].paging[mbsfn_sync_area],
-               RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area]);
+    // check if data is there for MAC
+    if(Srb_info->Tx_buffer.payload_size>0) { //Fill buffer
+      LOG_D(RRC,"[eNB %d] CCCH (%p) has %d bytes (dest: %p, src %p)\n",Mod_idP,Srb_info,Srb_info->Tx_buffer.payload_size,buffer_pP,Srb_info->Tx_buffer.Payload);
+#if 0 // defined(ENABLE_ITTI)
+      {
+        MessageDef *message_p;
+        int ccch_size = Srb_info->Tx_buffer.payload_size;
+        int sdu_size = sizeof(RRC_MAC_CCCH_DATA_REQ (message_p).sdu);
 
-#if 0 //defined(ENABLE_ITTI)
-        {
-          MessageDef *message_p;
-          int pcch_size = RC.rrc[Mod_idP]->arrier[CC_id].sizeof_paging[mbsfn_sync_area];
-          int sdu_size = sizeof(RRC_MAC_PCCH_DATA_REQ (message_p).sdu);
-
-          if (pcch_size > sdu_size) {
-            LOG_E(RRC, "SDU larger than PCCH SDU buffer size (%d, %d)", pcch_size, sdu_size);
-            pcch_size = sdu_size;
-          }
-
-          message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_PCCH_DATA_REQ);
-          RRC_MAC_PCCH_DATA_REQ (message_p).frame = frameP;
-          RRC_MAC_PCCH_DATA_REQ (message_p).sdu_size = pcch_size;
-          memset (RRC_MAC_PCCH_DATA_REQ (message_p).sdu, 0, PCCH_SDU_SIZE);
-          memcpy (RRC_MAC_PCCH_DATA_REQ (message_p).sdu, RC.rrc[Mod_idP]->carrier[CC_id].paging[mbsfn_sync_area], pcch_size);
-          RRC_MAC_PCCH_DATA_REQ (message_p).enb_index = eNB_index;
-
-          itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
+        if (ccch_size > sdu_size) {
+          LOG_E(RRC, "SDU larger than CCCH SDU buffer size (%d, %d)", ccch_size, sdu_size);
+          ccch_size = sdu_size;
         }
-#endif
 
-        memcpy(buffer_pP, RC.rrc[Mod_idP]->carrier[CC_id].paging[mbsfn_sync_area], RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area]);
-        Sdu_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area];
-        RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area] = 0;
+        message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_CCCH_DATA_REQ);
+        RRC_MAC_CCCH_DATA_REQ (message_p).frame = frameP;
+        RRC_MAC_CCCH_DATA_REQ (message_p).sdu_size = ccch_size;
+        memset (RRC_MAC_CCCH_DATA_REQ (message_p).sdu, 0, CCCH_SDU_SIZE);
+        memcpy (RRC_MAC_CCCH_DATA_REQ (message_p).sdu, Srb_info->Tx_buffer.Payload, ccch_size);
+        RRC_MAC_CCCH_DATA_REQ (message_p).enb_index = eNB_index;
+        itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
       }
-
-      return (Sdu_size);
+#endif
+      memcpy(buffer_pP,Srb_info->Tx_buffer.Payload,Srb_info->Tx_buffer.payload_size);
+      Sdu_size = Srb_info->Tx_buffer.payload_size;
+      Srb_info->Tx_buffer.payload_size=0;
     }
 
-#if defined(Rel10) || defined(Rel14)
-
-    if((Srb_id & RAB_OFFSET) == MCCH) {
-      if(RC.rrc[Mod_idP]->carrier[CC_id].MCCH_MESS[mbsfn_sync_area].Active==0) {
-        return 0;  // this parameter is set in function init_mcch in rrc_eNB.c
-      }
+    return (Sdu_size);
+  }
 
+  if( (Srb_id & RAB_OFFSET ) == PCCH) {
+    LOG_T(RRC,"[eNB %d] Frame %d PCCH request (Srb_id %d)\n",Mod_idP,frameP, Srb_id);
 
-#if 0 // defined(ENABLE_ITTI)
+    // check if data is there for MAC
+    if(RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area] > 0) { //Fill buffer
+      LOG_D(RRC,"[eNB %d] PCCH (%p) has %d bytes\n",Mod_idP,&RC.rrc[Mod_idP]->carrier[CC_id].paging[mbsfn_sync_area],
+            RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area]);
+#if 0 //defined(ENABLE_ITTI)
       {
         MessageDef *message_p;
-        int mcch_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area];
-        int sdu_size = sizeof(RRC_MAC_MCCH_DATA_REQ (message_p).sdu);
+        int pcch_size = RC.rrc[Mod_idP]->arrier[CC_id].sizeof_paging[mbsfn_sync_area];
+        int sdu_size = sizeof(RRC_MAC_PCCH_DATA_REQ (message_p).sdu);
 
-        if (mcch_size > sdu_size) {
-          LOG_E(RRC, "SDU larger than MCCH SDU buffer size (%d, %d)", mcch_size, sdu_size);
-          mcch_size = sdu_size;
+        if (pcch_size > sdu_size) {
+          LOG_E(RRC, "SDU larger than PCCH SDU buffer size (%d, %d)", pcch_size, sdu_size);
+          pcch_size = sdu_size;
         }
 
-        message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_MCCH_DATA_REQ);
-        RRC_MAC_MCCH_DATA_REQ (message_p).frame = frameP;
-        RRC_MAC_MCCH_DATA_REQ (message_p).sdu_size = mcch_size;
-        memset (RRC_MAC_MCCH_DATA_REQ (message_p).sdu, 0, MCCH_SDU_SIZE);
-        memcpy (RRC_MAC_MCCH_DATA_REQ (message_p).sdu,
-                RC.rrc[Mod_idP]->carrier[CC_id].MCCH_MESSAGE[mbsfn_sync_area],
-                mcch_size);
-        RRC_MAC_MCCH_DATA_REQ (message_p).enb_index = eNB_index;
-        RRC_MAC_MCCH_DATA_REQ (message_p).mbsfn_sync_area = mbsfn_sync_area;
-
+        message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_PCCH_DATA_REQ);
+        RRC_MAC_PCCH_DATA_REQ (message_p).frame = frameP;
+        RRC_MAC_PCCH_DATA_REQ (message_p).sdu_size = pcch_size;
+        memset (RRC_MAC_PCCH_DATA_REQ (message_p).sdu, 0, PCCH_SDU_SIZE);
+        memcpy (RRC_MAC_PCCH_DATA_REQ (message_p).sdu, RC.rrc[Mod_idP]->carrier[CC_id].paging[mbsfn_sync_area], pcch_size);
+        RRC_MAC_PCCH_DATA_REQ (message_p).enb_index = eNB_index;
         itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
       }
 #endif
+      memcpy(buffer_pP, RC.rrc[Mod_idP]->carrier[CC_id].paging[mbsfn_sync_area], RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area]);
+      Sdu_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area];
+      RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area] = 0;
+    }
 
-      memcpy(&buffer_pP[0],
-             RC.rrc[Mod_idP]->carrier[CC_id].MCCH_MESSAGE[mbsfn_sync_area],
-             RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]);
+    return (Sdu_size);
+  }
 
-#ifdef DEBUG_RRC
-      LOG_D(RRC,"[eNB %d] Frame %d : MCCH request => MCCH_MESSAGE \n",Mod_idP,frameP);
+#if defined(Rel10) || defined(Rel14)
 
-      for (i=0; i<RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]; i++) {
-        LOG_T(RRC,"%x.",buffer_pP[i]);
+  if((Srb_id & RAB_OFFSET) == MCCH) {
+    if(RC.rrc[Mod_idP]->carrier[CC_id].MCCH_MESS[mbsfn_sync_area].Active==0) {
+      return 0;  // this parameter is set in function init_mcch in rrc_eNB.c
+    }
+
+#if 0 // defined(ENABLE_ITTI)
+    {
+      MessageDef *message_p;
+      int mcch_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area];
+      int sdu_size = sizeof(RRC_MAC_MCCH_DATA_REQ (message_p).sdu);
+
+      if (mcch_size > sdu_size) {
+        LOG_E(RRC, "SDU larger than MCCH SDU buffer size (%d, %d)", mcch_size, sdu_size);
+        mcch_size = sdu_size;
       }
 
-      LOG_T(RRC,"\n");
+      message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_MCCH_DATA_REQ);
+      RRC_MAC_MCCH_DATA_REQ (message_p).frame = frameP;
+      RRC_MAC_MCCH_DATA_REQ (message_p).sdu_size = mcch_size;
+      memset (RRC_MAC_MCCH_DATA_REQ (message_p).sdu, 0, MCCH_SDU_SIZE);
+      memcpy (RRC_MAC_MCCH_DATA_REQ (message_p).sdu,
+              RC.rrc[Mod_idP]->carrier[CC_id].MCCH_MESSAGE[mbsfn_sync_area],
+              mcch_size);
+      RRC_MAC_MCCH_DATA_REQ (message_p).enb_index = eNB_index;
+      RRC_MAC_MCCH_DATA_REQ (message_p).mbsfn_sync_area = mbsfn_sync_area;
+      itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
+    }
 #endif
+    memcpy(&buffer_pP[0],
+           RC.rrc[Mod_idP]->carrier[CC_id].MCCH_MESSAGE[mbsfn_sync_area],
+           RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]);
+#ifdef DEBUG_RRC
+    LOG_D(RRC,"[eNB %d] Frame %d : MCCH request => MCCH_MESSAGE \n",Mod_idP,frameP);
 
-      return (RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]);
-      //      }
-      //else
-      //return(0);
+    for (i=0; i<RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]; i++) {
+      LOG_T(RRC,"%x.",buffer_pP[i]);
     }
 
-#endif //Rel10 || Rel14
+    LOG_T(RRC,"\n");
+#endif
+    return (RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]);
+    //      }
+    //else
+    //return(0);
+  }
 
+#endif //Rel10 || Rel14
 #ifdef Rel14
-    if ((Srb_id & RAB_OFFSET) == BCCH_SIB1_BR){
-        memcpy(&buffer_pP[0],
-               RC.rrc[Mod_idP]->carrier[CC_id].SIB1_BR,
-               RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1_BR);
-        return (RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1_BR);
-    }
-
-    if ((Srb_id & RAB_OFFSET) == BCCH_SI_BR){ // First SI message with SIB2/3
-        memcpy(&buffer_pP[0],
-               RC.rrc[Mod_idP]->carrier[CC_id].SIB23_BR,
-               RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23_BR);
-        return (RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23_BR);
-    }
 
-#endif
+  if ((Srb_id & RAB_OFFSET) == BCCH_SIB1_BR) {
+    memcpy(&buffer_pP[0],
+           RC.rrc[Mod_idP]->carrier[CC_id].SIB1_BR,
+           RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1_BR);
+    return (RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1_BR);
+  }
 
+  if ((Srb_id & RAB_OFFSET) == BCCH_SI_BR) { // First SI message with SIB2/3
+    memcpy(&buffer_pP[0],
+           RC.rrc[Mod_idP]->carrier[CC_id].SIB23_BR,
+           RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23_BR);
+    return (RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23_BR);
+  }
 
+#endif
   return(0);
 }
 
@@ -370,7 +346,7 @@ mac_rrc_data_ind(
   const sub_frame_t     sub_frameP,
   const rnti_t          rntiP,
   const rb_id_t         srb_idP,
-  const uint8_t*        sduP,
+  const uint8_t        *sduP,
   const sdu_size_t      sdu_lenP,
   const uint8_t         mbsfn_sync_areaP
 )
@@ -379,54 +355,48 @@ mac_rrc_data_ind(
   SRB_INFO *Srb_info;
   protocol_ctxt_t ctxt;
   sdu_size_t      sdu_size = 0;
-
   /* for no gcc warnings */
   (void)sdu_size;
-
   /*
   int si_window;
    */
   PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_YES, rntiP, frameP, sub_frameP,0);
-
-    Srb_info = &RC.rrc[module_idP]->carrier[CC_id].Srb0;
-    LOG_D(RRC,"[eNB %d] Received SDU for CCCH on SRB %d\n",module_idP,Srb_info->Srb_id);
-    
+  Srb_info = &RC.rrc[module_idP]->carrier[CC_id].Srb0;
+  LOG_D(RRC,"[eNB %d] Received SDU for CCCH on SRB %d\n",module_idP,Srb_info->Srb_id);
 #if 0 //defined(ENABLE_ITTI)
-    {
-      MessageDef *message_p;
-      int msg_sdu_size = sizeof(RRC_MAC_CCCH_DATA_IND (message_p).sdu);
-
-      if (sdu_lenP > msg_sdu_size) {
-        LOG_E(RRC, "SDU larger than CCCH SDU buffer size (%d, %d)", sdu_lenP, msg_sdu_size);
-        sdu_size = msg_sdu_size;
-      } else {
-        sdu_size = sdu_lenP;
-      }
-
-      message_p = itti_alloc_new_message (TASK_MAC_ENB, RRC_MAC_CCCH_DATA_IND);
-      RRC_MAC_CCCH_DATA_IND (message_p).frame     = frameP;
-      RRC_MAC_CCCH_DATA_IND (message_p).sub_frame = sub_frameP;
-      RRC_MAC_CCCH_DATA_IND (message_p).rnti      = rntiP;
-      RRC_MAC_CCCH_DATA_IND (message_p).sdu_size  = sdu_size;
-      RRC_MAC_CCCH_DATA_IND (message_p).CC_id = CC_id;
-      memset (RRC_MAC_CCCH_DATA_IND (message_p).sdu, 0, CCCH_SDU_SIZE);
-      memcpy (RRC_MAC_CCCH_DATA_IND (message_p).sdu, sduP, sdu_size);
-      LOG_D(RRC,"[eNB %d] Sending message to RRC task\n",module_idP);
-      itti_send_msg_to_task (TASK_RRC_ENB, ctxt.instance, message_p);
+  {
+    MessageDef *message_p;
+    int msg_sdu_size = sizeof(RRC_MAC_CCCH_DATA_IND (message_p).sdu);
+
+    if (sdu_lenP > msg_sdu_size) {
+      LOG_E(RRC, "SDU larger than CCCH SDU buffer size (%d, %d)", sdu_lenP, msg_sdu_size);
+      sdu_size = msg_sdu_size;
+    } else {
+      sdu_size = sdu_lenP;
     }
+
+    message_p = itti_alloc_new_message (TASK_MAC_ENB, RRC_MAC_CCCH_DATA_IND);
+    RRC_MAC_CCCH_DATA_IND (message_p).frame     = frameP;
+    RRC_MAC_CCCH_DATA_IND (message_p).sub_frame = sub_frameP;
+    RRC_MAC_CCCH_DATA_IND (message_p).rnti      = rntiP;
+    RRC_MAC_CCCH_DATA_IND (message_p).sdu_size  = sdu_size;
+    RRC_MAC_CCCH_DATA_IND (message_p).CC_id = CC_id;
+    memset (RRC_MAC_CCCH_DATA_IND (message_p).sdu, 0, CCCH_SDU_SIZE);
+    memcpy (RRC_MAC_CCCH_DATA_IND (message_p).sdu, sduP, sdu_size);
+    LOG_D(RRC,"[eNB %d] Sending message to RRC task\n",module_idP);
+    itti_send_msg_to_task (TASK_RRC_ENB, ctxt.instance, message_p);
+  }
 #else
 
-    //    msg("\n******INST %d Srb_info %p, Srb_id=%d****\n\n",Mod_id,Srb_info,Srb_info->Srb_id);
-    if (sdu_lenP > 0) {
-      memcpy(Srb_info->Rx_buffer.Payload,sduP,sdu_lenP);
-      Srb_info->Rx_buffer.payload_size = sdu_lenP;
-      rrc_eNB_decode_ccch(&ctxt, Srb_info, CC_id);
-    }
+  //    msg("\n******INST %d Srb_info %p, Srb_id=%d****\n\n",Mod_id,Srb_info,Srb_info->Srb_id);
+  if (sdu_lenP > 0) {
+    memcpy(Srb_info->Rx_buffer.Payload,sduP,sdu_lenP);
+    Srb_info->Rx_buffer.payload_size = sdu_lenP;
+    rrc_eNB_decode_ccch(&ctxt, Srb_info, CC_id);
+  }
 
 #endif
-
   return(0);
-
 }
 
 //------------------------------------------------------------------------------
@@ -437,7 +407,7 @@ mac_eNB_get_rrc_status(
 )
 //------------------------------------------------------------------------------
 {
-  struct rrc_eNB_ue_context_s* ue_context_p = NULL;
+  struct rrc_eNB_ue_context_s *ue_context_p = NULL;
   ue_context_p = rrc_eNB_get_ue_context(
                    RC.rrc[Mod_idP],
                    rntiP);
@@ -450,60 +420,64 @@ mac_eNB_get_rrc_status(
 }
 
 void mac_eNB_rrc_ul_failure(const module_id_t Mod_instP,
-			    const int CC_idP,
-			    const frame_t frameP,
-			    const sub_frame_t subframeP,
-			    const rnti_t rntiP)
+                            const int CC_idP,
+                            const frame_t frameP,
+                            const sub_frame_t subframeP,
+                            const rnti_t rntiP)
 {
-  struct rrc_eNB_ue_context_s* ue_context_p = NULL;
+  struct rrc_eNB_ue_context_s *ue_context_p = NULL;
   ue_context_p = rrc_eNB_get_ue_context(
                    RC.rrc[Mod_instP],
                    rntiP);
 
   if (ue_context_p != NULL) {
     LOG_I(RRC,"Frame %d, Subframe %d: UE %x UL failure, activating timer\n",frameP,subframeP,rntiP);
+
     if(ue_context_p->ue_context.ul_failure_timer == 0)
       ue_context_p->ue_context.ul_failure_timer=1;
   }
   else {
     LOG_W(RRC,"Frame %d, Subframe %d: UL failure: UE %x unknown \n",frameP,subframeP,rntiP);
   }
+
   if (rrc_agent_registered[Mod_instP]) {
     agent_rrc_xface[Mod_instP]->flexran_agent_notify_ue_state_change(Mod_instP,
-								     rntiP,
-								     PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_DEACTIVATED);
+        rntiP,
+        PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_DEACTIVATED);
   }
-//  rrc_mac_remove_ue(Mod_instP,rntiP);
+
+  //  rrc_mac_remove_ue(Mod_instP,rntiP);
 }
 
 void mac_eNB_rrc_uplane_failure(const module_id_t Mod_instP,
-                const int CC_idP,
-                const frame_t frameP,
-                const sub_frame_t subframeP,
-                const rnti_t rntiP)
+                                const int CC_idP,
+                                const frame_t frameP,
+                                const sub_frame_t subframeP,
+                                const rnti_t rntiP)
 {
-    struct rrc_eNB_ue_context_s* ue_context_p = NULL;
-    ue_context_p = rrc_eNB_get_ue_context(
-                     RC.rrc[Mod_instP],
-                     rntiP);
-    if (ue_context_p != NULL) {
-      LOG_I(RRC,"Frame %d, Subframe %d: UE %x U-Plane failure, activating timer\n",frameP,subframeP,rntiP);
-
-      if(ue_context_p->ue_context.ul_failure_timer == 0)
-          ue_context_p->ue_context.ul_failure_timer=19999;
-    }
-    else {
-      LOG_W(RRC,"Frame %d, Subframe %d: U-Plane failure: UE %x unknown \n",frameP,subframeP,rntiP);
-    }
+  struct rrc_eNB_ue_context_s *ue_context_p = NULL;
+  ue_context_p = rrc_eNB_get_ue_context(
+                   RC.rrc[Mod_instP],
+                   rntiP);
+
+  if (ue_context_p != NULL) {
+    LOG_I(RRC,"Frame %d, Subframe %d: UE %x U-Plane failure, activating timer\n",frameP,subframeP,rntiP);
+
+    if(ue_context_p->ue_context.ul_failure_timer == 0)
+      ue_context_p->ue_context.ul_failure_timer=19999;
+  }
+  else {
+    LOG_W(RRC,"Frame %d, Subframe %d: U-Plane failure: UE %x unknown \n",frameP,subframeP,rntiP);
+  }
 }
 
-void mac_eNB_rrc_ul_in_sync(const module_id_t Mod_instP, 
-			    const int CC_idP, 
-			    const frame_t frameP,
-			    const sub_frame_t subframeP,
-			    const rnti_t rntiP)
+void mac_eNB_rrc_ul_in_sync(const module_id_t Mod_instP,
+                            const int CC_idP,
+                            const frame_t frameP,
+                            const sub_frame_t subframeP,
+                            const rnti_t rntiP)
 {
-  struct rrc_eNB_ue_context_s* ue_context_p = NULL;
+  struct rrc_eNB_ue_context_s *ue_context_p = NULL;
   ue_context_p = rrc_eNB_get_ue_context(
                    RC.rrc[Mod_instP],
                    rntiP);
diff --git a/openair2/RRC/LITE/MESSAGES/asn1_msg.c b/openair2/RRC/LITE/MESSAGES/asn1_msg.c
index 77ba0c4cade0378c36db0cb8807d4f1a23b30ace..da78ae16be77b9dbea54b4eb6d50a7a7279094f1 100644
--- a/openair2/RRC/LITE/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/LITE/MESSAGES/asn1_msg.c
@@ -137,11 +137,9 @@ int xer_sprint (char *string, size_t string_size, asn_TYPE_descriptor_t *td, voi
 {
   asn_enc_rval_t er;
   xer_sprint_string_t string_buffer;
-
   string_buffer.string = string;
   string_buffer.string_size = string_size;
   string_buffer.string_index = 0;
-
   er = xer_encode(td, sptr, XER_F_BASIC, xer__print2s, &string_buffer);
 
   if (er.encoded < 0) {
@@ -179,40 +177,40 @@ uint8_t get_adjacent_cell_mod_id(uint16_t phyCellId)
 
 uint8_t do_MIB(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t phich_Resource, uint32_t phich_duration, uint32_t frame)
 {
-
   asn_enc_rval_t enc_rval;
   BCCH_BCH_Message_t *mib=&carrier->mib ;
   uint8_t sfn = (uint8_t)((frame>>2)&0xff);
   uint16_t *spare= calloc(1, sizeof(uint16_t));
+
   if (spare == NULL) abort();
 
   switch (N_RB_DL) {
+    case 6:
+      mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n6;
+      break;
 
-  case 6:
-    mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n6;
-    break;
+    case 15:
+      mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n15;
+      break;
 
-  case 15:
-    mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n15;
-    break;
+    case 25:
+      mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n25;
+      break;
 
-  case 25:
-    mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n25;
-    break;
+    case 50:
+      mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n50;
+      break;
 
-  case 50:
-    mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n50;
-    break;
+    case 75:
+      mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n75;
+      break;
 
-  case 75:
-    mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n75;
-    break;
+    case 100:
+      mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n100;
+      break;
 
-  case 100:
-    mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n100;
-    break;
-  default:
-    AssertFatal(1==0,"Unknown dl_Bandwidth %d\n",N_RB_DL);
+    default:
+      AssertFatal(1==0,"Unknown dl_Bandwidth %d\n",N_RB_DL);
   }
 
   AssertFatal(phich_Resource <= PHICH_Config__phich_Resource_two,"Illegal phich_Resource\n");
@@ -220,11 +218,10 @@ uint8_t do_MIB(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t phich
   AssertFatal(phich_duration <= PHICH_Config__phich_Duration_extended,"Illegal phich_Duration\n");
   mib->message.phich_Config.phich_Duration = phich_duration;
   LOG_I(RRC,"[MIB] systemBandwidth %x, phich_duration %x, phich_resource %x,sfn %x\n",
-         (uint32_t)mib->message.dl_Bandwidth,
-         (uint32_t)phich_duration,
-         (uint32_t)phich_Resource,
-         (uint32_t)sfn);
-
+        (uint32_t)mib->message.dl_Bandwidth,
+        (uint32_t)phich_duration,
+        (uint32_t)phich_Resource,
+        (uint32_t)sfn);
   mib->message.systemFrameNumber.buf = &sfn;
   mib->message.systemFrameNumber.size = 1;
   mib->message.systemFrameNumber.bits_unused=0;
@@ -237,17 +234,17 @@ uint8_t do_MIB(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t phich
   mib->message.spare.bits_unused = 3;  // This makes a spare of 5 bits
   mib->message.schedulingInfoSIB1_BR_r13 = 0; // turn off eMTC
 #endif
-
   enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_BCH_Message,
-                                   (void*)mib,
+                                   NULL,
+                                   (void *)mib,
                                    carrier->MIB,
                                    24);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
 
   /*
-#if defined(ENABLE_ITTI)
-# if !defined(DISABLE_XER_SPRINT)
+  #if defined(ENABLE_ITTI)
+  # if !defined(DISABLE_XER_SPRINT)
   {
     char        message_string[20000];
     size_t      message_string_size;
@@ -262,8 +259,8 @@ uint8_t do_MIB(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t phich
       itti_send_msg_to_task(TASK_UNKNOWN, enb_module_idP, msg_p);
     }
   }
-# endif
-#endif
+  # endif
+  #endif
   */
   if (enc_rval.encoded==-1) {
     return(-1);
@@ -273,43 +270,32 @@ uint8_t do_MIB(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t phich
 }
 
 uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
-		int Mod_id,int CC_id
+                int Mod_id,int CC_id
 #if defined(ENABLE_ITTI)
                 , RrcConfigurationReq *configuration
 #endif
                )
 {
-
   //  SystemInformation_t systemInformation;
   PLMN_IdentityInfo_t PLMN_identity_info;
   MCC_MNC_Digit_t dummy_mcc[3],dummy_mnc[3];
   asn_enc_rval_t enc_rval;
   SchedulingInfo_t schedulingInfo;
   SIB_Type_t sib_type;
-
   uint8_t *buffer                      = carrier->SIB1;
   BCCH_DL_SCH_Message_t *bcch_message  = &carrier->siblock1;
   SystemInformationBlockType1_t **sib1 = &carrier->sib1;
-
-  
   memset(bcch_message,0,sizeof(BCCH_DL_SCH_Message_t));
   bcch_message->message.present = BCCH_DL_SCH_MessageType_PR_c1;
   bcch_message->message.choice.c1.present = BCCH_DL_SCH_MessageType__c1_PR_systemInformationBlockType1;
   //  memcpy(&bcch_message.message.choice.c1.choice.systemInformationBlockType1,sib1,sizeof(SystemInformationBlockType1_t));
-
   *sib1 = &bcch_message->message.choice.c1.choice.systemInformationBlockType1;
-
   memset(&PLMN_identity_info,0,sizeof(PLMN_IdentityInfo_t));
   memset(&schedulingInfo,0,sizeof(SchedulingInfo_t));
   memset(&sib_type,0,sizeof(SIB_Type_t));
-
-
-
   PLMN_identity_info.plmn_Identity.mcc = CALLOC(1,sizeof(*PLMN_identity_info.plmn_Identity.mcc));
   memset(PLMN_identity_info.plmn_Identity.mcc,0,sizeof(*PLMN_identity_info.plmn_Identity.mcc));
-
   asn_set_empty(&PLMN_identity_info.plmn_Identity.mcc->list);//.size=0;
-
 #if defined(ENABLE_ITTI)
   dummy_mcc[0] = (configuration->mcc / 100) % 10;
   dummy_mcc[1] = (configuration->mcc / 10) % 10;
@@ -322,7 +308,6 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
   ASN_SEQUENCE_ADD(&PLMN_identity_info.plmn_Identity.mcc->list,&dummy_mcc[0]);
   ASN_SEQUENCE_ADD(&PLMN_identity_info.plmn_Identity.mcc->list,&dummy_mcc[1]);
   ASN_SEQUENCE_ADD(&PLMN_identity_info.plmn_Identity.mcc->list,&dummy_mcc[2]);
-
   PLMN_identity_info.plmn_Identity.mnc.list.size=0;
   PLMN_identity_info.plmn_Identity.mnc.list.count=0;
 #if defined(ENABLE_ITTI)
@@ -357,10 +342,7 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
 
   //assign_enum(&PLMN_identity_info.cellReservedForOperatorUse,PLMN_IdentityInfo__cellReservedForOperatorUse_notReserved);
   PLMN_identity_info.cellReservedForOperatorUse=PLMN_IdentityInfo__cellReservedForOperatorUse_notReserved;
-
   ASN_SEQUENCE_ADD(&(*sib1)->cellAccessRelatedInfo.plmn_IdentityList.list,&PLMN_identity_info);
-
-
   // 16 bits
   (*sib1)->cellAccessRelatedInfo.trackingAreaCode.buf = MALLOC(2);
 #if defined(ENABLE_ITTI)
@@ -372,7 +354,6 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
 #endif
   (*sib1)->cellAccessRelatedInfo.trackingAreaCode.size=2;
   (*sib1)->cellAccessRelatedInfo.trackingAreaCode.bits_unused=0;
-
   // 28 bits
   (*sib1)->cellAccessRelatedInfo.cellIdentity.buf = MALLOC(8);
 #if defined(ENABLE_ITTI)
@@ -388,14 +369,11 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
 #endif
   (*sib1)->cellAccessRelatedInfo.cellIdentity.size=4;
   (*sib1)->cellAccessRelatedInfo.cellIdentity.bits_unused=4;
-
   //  assign_enum(&(*sib1)->cellAccessRelatedInfo.cellBarred,SystemInformationBlockType1__cellAccessRelatedInfo__cellBarred_notBarred);
   (*sib1)->cellAccessRelatedInfo.cellBarred=SystemInformationBlockType1__cellAccessRelatedInfo__cellBarred_notBarred;
-
   //  assign_enum(&(*sib1)->cellAccessRelatedInfo.intraFreqReselection,SystemInformationBlockType1__cellAccessRelatedInfo__intraFreqReselection_allowed);
   (*sib1)->cellAccessRelatedInfo.intraFreqReselection=SystemInformationBlockType1__cellAccessRelatedInfo__intraFreqReselection_notAllowed;
   (*sib1)->cellAccessRelatedInfo.csg_Indication=0;
-
   (*sib1)->cellSelectionInfo.q_RxLevMin=-65;
   (*sib1)->cellSelectionInfo.q_RxLevMinOffset=NULL;
   //(*sib1)->p_Max = CALLOC(1, sizeof(P_Max_t));
@@ -406,52 +384,45 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
 #else
     7;
 #endif
-
   schedulingInfo.si_Periodicity=SchedulingInfo__si_Periodicity_rf8;
-
   // This is for SIB2/3
   sib_type=SIB_Type_sibType3;
   ASN_SEQUENCE_ADD(&schedulingInfo.sib_MappingInfo.list,&sib_type);
   ASN_SEQUENCE_ADD(&(*sib1)->schedulingInfoList.list,&schedulingInfo);
-
   //  ASN_SEQUENCE_ADD(&schedulingInfo.sib_MappingInfo.list,NULL);
-
 #if defined(ENABLE_ITTI)
 
   if (configuration->frame_type[CC_id] == TDD)
 #endif
   {
     (*sib1)->tdd_Config =                             CALLOC(1,sizeof(struct TDD_Config));
-
     (*sib1)->tdd_Config->subframeAssignment =
 #if defined(ENABLE_ITTI)
       configuration->tdd_config[CC_id];
 #else
       3;
 #endif
-
     (*sib1)->tdd_Config->specialSubframePatterns =
 #if defined(ENABLE_ITTI)
       configuration->tdd_config_s[CC_id];
 #else
-    0;
+      0;
 #endif
   }
 
   (*sib1)->si_WindowLength=SystemInformationBlockType1__si_WindowLength_ms20;
   (*sib1)->systemInfoValueTag=0;
   //  (*sib1).nonCriticalExtension = calloc(1,sizeof(*(*sib1).nonCriticalExtension));
-
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message, (void*)bcch_message);
+  xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message, (void *)bcch_message);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_DL_SCH_Message,
-                                   (void*)bcch_message,
+                                   NULL,
+                                   (void *)bcch_message,
                                    buffer,
                                    100);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -460,7 +431,6 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_BCCH_DL_SCH_Message, (void *)bcch_message)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB, RRC_DL_BCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_bcch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_bcch.text, message_string, message_string_size);
@@ -469,7 +439,6 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
   }
 # endif
 #endif
-
   LOG_D(RRC,"[eNB] SystemInformationBlockType1 Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
 
   if (enc_rval.encoded==-1) {
@@ -495,7 +464,6 @@ uint8_t do_SIB23(uint8_t Mod_id,
   struct MBSFN_AreaInfo_r9 *MBSFN_Area1, *MBSFN_Area2;
 #endif
   asn_enc_rval_t enc_rval;
-
   uint8_t                           *buffer       = RC.rrc[Mod_id]->carrier[CC_id].SIB23;
   BCCH_DL_SCH_Message_t             *bcch_message = &RC.rrc[Mod_id]->carrier[CC_id].systemInformation;
   SystemInformationBlockType2_t     **sib2        = &RC.rrc[Mod_id]->carrier[CC_id].sib2;
@@ -531,13 +499,10 @@ uint8_t do_SIB23(uint8_t Mod_id,
   sib3_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
   memset(sib2_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
   memset(sib3_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
-
   sib2_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2;
   sib3_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib3;
-
   *sib2 = &sib2_part->choice.sib2;
   *sib3 = &sib3_part->choice.sib3;
-
 #if defined(Rel10) || defined(Rel14)
 
   if (MBMS_flag > 0) {
@@ -548,9 +513,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
   }
 
 #endif
-
   // sib2
-
   (*sib2)->ac_BarringInfo = NULL;
 #if defined(Rel10) || defined(Rel14)
 #if 0
@@ -561,9 +524,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
   (*sib2)->ext1 = NULL;
   (*sib2)->ext2 = NULL;
 #endif
-
 #if defined(ENABLE_ITTI)
-
   (*sib2)->radioResourceConfigCommon.rach_ConfigCommon.preambleInfo.numberOfRA_Preambles                         = configuration->rach_numberOfRA_Preambles[CC_id];
   (*sib2)->radioResourceConfigCommon.rach_ConfigCommon.preambleInfo.preamblesGroupAConfig                        = NULL;
 
@@ -586,17 +547,14 @@ uint8_t do_SIB23(uint8_t Mod_id,
   (*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.mac_ContentionResolutionTimer          =
     configuration->rach_macContentionResolutionTimer[CC_id];
   (*sib2)->radioResourceConfigCommon.rach_ConfigCommon.maxHARQ_Msg3Tx                                            = configuration->rach_maxHARQ_Msg3Tx[CC_id];
-
   // BCCH-Config
   (*sib2)->radioResourceConfigCommon.bcch_Config.modificationPeriodCoeff
     = configuration->bcch_modificationPeriodCoeff[CC_id];
-
   // PCCH-Config
   (*sib2)->radioResourceConfigCommon.pcch_Config.defaultPagingCycle
     = configuration->pcch_defaultPagingCycle[CC_id];
   (*sib2)->radioResourceConfigCommon.pcch_Config.nB
     = configuration->pcch_nB[CC_id];
-
   // PRACH-Config
   (*sib2)->radioResourceConfigCommon.prach_Config.rootSequenceIndex
     = configuration->prach_root[CC_id];
@@ -608,13 +566,11 @@ uint8_t do_SIB23(uint8_t Mod_id,
     = configuration->prach_zero_correlation[CC_id];
   (*sib2)->radioResourceConfigCommon.prach_Config.prach_ConfigInfo.prach_FreqOffset
     = configuration->prach_freq_offset[CC_id];
-
   // PDSCH-Config
   (*sib2)->radioResourceConfigCommon.pdsch_ConfigCommon.referenceSignalPower
     = configuration->pdsch_referenceSignalPower[CC_id];
   (*sib2)->radioResourceConfigCommon.pdsch_ConfigCommon.p_b
     = configuration->pdsch_p_b[CC_id];
-
   // PUSCH-Config
   (*sib2)->radioResourceConfigCommon.pusch_ConfigCommon.pusch_ConfigBasic.n_SB
     = configuration->pusch_n_SB[CC_id];
@@ -632,9 +588,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
     = configuration->pusch_sequenceHoppingEnabled[CC_id];
   (*sib2)->radioResourceConfigCommon.pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.cyclicShift
     = configuration->pusch_nDMRS1[CC_id];
-
   // PUCCH-Config
-
   (*sib2)->radioResourceConfigCommon.pucch_ConfigCommon.deltaPUCCH_Shift
     = configuration->pucch_delta_shift[CC_id];
   (*sib2)->radioResourceConfigCommon.pucch_ConfigCommon.nRB_CQI
@@ -664,6 +618,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
     } else {
       (*sib2)->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts = NULL;
     }
+
     RC.rrc[Mod_id]->srs_enable[CC_id] = 1;
   } else {
     RC.rrc[Mod_id]->srs_enable[CC_id] = 0;
@@ -672,7 +627,6 @@ uint8_t do_SIB23(uint8_t Mod_id,
   }
 
   // uplinkPowerControlCommon
-
   (*sib2)->radioResourceConfigCommon.uplinkPowerControlCommon.p0_NominalPUSCH
     = configuration->pusch_p0_Nominal[CC_id];
   (*sib2)->radioResourceConfigCommon.uplinkPowerControlCommon.p0_NominalPUCCH
@@ -693,9 +647,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
     = configuration->msg3_delta_Preamble[CC_id];
   (*sib2)->radioResourceConfigCommon.ul_CyclicPrefixLength
     = configuration->ul_CyclicPrefixLength[CC_id];
-
   // UE Timers and Constants
-
   (*sib2)->ue_TimersAndConstants.t300
     = configuration->ue_TimersAndConstants_t300[CC_id];
   (*sib2)->ue_TimersAndConstants.t301
@@ -708,7 +660,6 @@ uint8_t do_SIB23(uint8_t Mod_id,
     = configuration->ue_TimersAndConstants_t311[CC_id];
   (*sib2)->ue_TimersAndConstants.n311
     = configuration->ue_TimersAndConstants_n311[CC_id];
-
 #else
   (*sib2)->radioResourceConfigCommon.rach_ConfigCommon.preambleInfo.numberOfRA_Preambles=RACH_ConfigCommon__preambleInfo__numberOfRA_Preambles_n64;
   (*sib2)->radioResourceConfigCommon.rach_ConfigCommon.preambleInfo.preamblesGroupAConfig = NULL;
@@ -720,27 +671,20 @@ uint8_t do_SIB23(uint8_t Mod_id,
   (*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.mac_ContentionResolutionTimer=
     RACH_ConfigCommon__ra_SupervisionInfo__mac_ContentionResolutionTimer_sf48;
   (*sib2)->radioResourceConfigCommon.rach_ConfigCommon.maxHARQ_Msg3Tx = 4;
-
   // BCCH-Config
   (*sib2)->radioResourceConfigCommon.bcch_Config.modificationPeriodCoeff=BCCH_Config__modificationPeriodCoeff_n2;
-
   // PCCH-Config
   (*sib2)->radioResourceConfigCommon.pcch_Config.defaultPagingCycle = PCCH_Config__defaultPagingCycle_rf128;
   (*sib2)->radioResourceConfigCommon.pcch_Config.nB=PCCH_Config__nB_oneT;
-
   // PRACH-Config
   (*sib2)->radioResourceConfigCommon.prach_Config.rootSequenceIndex=Mod_id;//0;//384;
   (*sib2)->radioResourceConfigCommon.prach_Config.prach_ConfigInfo.prach_ConfigIndex = 0;//3;
   (*sib2)->radioResourceConfigCommon.prach_Config.prach_ConfigInfo.highSpeedFlag = 0;
   (*sib2)->radioResourceConfigCommon.prach_Config.prach_ConfigInfo.zeroCorrelationZoneConfig = 1;//12;
   (*sib2)->radioResourceConfigCommon.prach_Config.prach_ConfigInfo.prach_FreqOffset = 2;
-
   // PDSCH-Config
   (*sib2)->radioResourceConfigCommon.pdsch_ConfigCommon.referenceSignalPower=0;  // corresponds to 24.7 dBm 5 MHz/ 27.7 10 MHz/ 30.7 20 MHz
-
-
   (*sib2)->radioResourceConfigCommon.pdsch_ConfigCommon.p_b=0;
-
   // PUSCH-Config
   (*sib2)->radioResourceConfigCommon.pusch_ConfigCommon.pusch_ConfigBasic.n_SB=1;
   (*sib2)->radioResourceConfigCommon.pusch_ConfigCommon.pusch_ConfigBasic.hoppingMode=PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_interSubFrame;
@@ -750,55 +694,35 @@ uint8_t do_SIB23(uint8_t Mod_id,
   (*sib2)->radioResourceConfigCommon.pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH=0;
   (*sib2)->radioResourceConfigCommon.pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled=0;
   (*sib2)->radioResourceConfigCommon.pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.cyclicShift=0;
-
   // PUCCH-Config
-
   (*sib2)->radioResourceConfigCommon.pucch_ConfigCommon.deltaPUCCH_Shift=PUCCH_ConfigCommon__deltaPUCCH_Shift_ds1;
   (*sib2)->radioResourceConfigCommon.pucch_ConfigCommon.nRB_CQI = 1;
   (*sib2)->radioResourceConfigCommon.pucch_ConfigCommon.nCS_AN = 0;
   (*sib2)->radioResourceConfigCommon.pucch_ConfigCommon.n1PUCCH_AN = 32;
-
-
   (*sib2)->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.present=SoundingRS_UL_ConfigCommon_PR_release;
   (*sib2)->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.release=0;
-
   // uplinkPowerControlCommon
-
   (*sib2)->radioResourceConfigCommon.uplinkPowerControlCommon.p0_NominalPUSCH = -108;
   (*sib2)->radioResourceConfigCommon.uplinkPowerControlCommon.p0_NominalPUCCH = -108;
   (*sib2)->radioResourceConfigCommon.uplinkPowerControlCommon.alpha=UplinkPowerControlCommon__alpha_al1;
   (*sib2)->radioResourceConfigCommon.uplinkPowerControlCommon.deltaFList_PUCCH.deltaF_PUCCH_Format1=DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF2;
   (*sib2)->radioResourceConfigCommon.uplinkPowerControlCommon.deltaFList_PUCCH.deltaF_PUCCH_Format1b=DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF3;
-
   (*sib2)->radioResourceConfigCommon.uplinkPowerControlCommon.deltaFList_PUCCH.deltaF_PUCCH_Format2=DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF0;
-
   (*sib2)->radioResourceConfigCommon.uplinkPowerControlCommon.deltaFList_PUCCH.deltaF_PUCCH_Format2a=DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF0;
-
   (*sib2)->radioResourceConfigCommon.uplinkPowerControlCommon.deltaFList_PUCCH.deltaF_PUCCH_Format2b=DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF0;
-
   (*sib2)->radioResourceConfigCommon.uplinkPowerControlCommon.deltaPreambleMsg3 = 6;
-
   (*sib2)->radioResourceConfigCommon.ul_CyclicPrefixLength=UL_CyclicPrefixLength_len1;
-
   (*sib2)->ue_TimersAndConstants.t300=UE_TimersAndConstants__t300_ms1000;
-
   (*sib2)->ue_TimersAndConstants.t301=UE_TimersAndConstants__t301_ms1000;
-
   (*sib2)->ue_TimersAndConstants.t310=UE_TimersAndConstants__t310_ms1000;
-
   (*sib2)->ue_TimersAndConstants.n310=UE_TimersAndConstants__n310_n20;
-
   (*sib2)->ue_TimersAndConstants.t311=UE_TimersAndConstants__t311_ms10000;
-
   (*sib2)->ue_TimersAndConstants.n311=UE_TimersAndConstants__n311_n1;
-
 #endif
-
   (*sib2)->freqInfo.additionalSpectrumEmission = 1;
   (*sib2)->freqInfo.ul_CarrierFreq = NULL;
   (*sib2)->freqInfo.ul_Bandwidth = NULL;
   //  (*sib2)->mbsfn_SubframeConfigList = NULL;
-
 #if defined(Rel10) || defined(Rel14)
 
   if (MBMS_flag > 0) {
@@ -806,37 +730,29 @@ uint8_t do_SIB23(uint8_t Mod_id,
     MBSFN_SubframeConfig_t *sib2_mbsfn_SubframeConfig1;
     (*sib2)->mbsfn_SubframeConfigList = CALLOC(1,sizeof(struct MBSFN_SubframeConfigList));
     MBSFNSubframeConfigList = (*sib2)->mbsfn_SubframeConfigList;
-
     sib2_mbsfn_SubframeConfig1= CALLOC(1,sizeof(*sib2_mbsfn_SubframeConfig1));
-    memset((void*)sib2_mbsfn_SubframeConfig1,0,sizeof(*sib2_mbsfn_SubframeConfig1));
-
+    memset((void *)sib2_mbsfn_SubframeConfig1,0,sizeof(*sib2_mbsfn_SubframeConfig1));
     sib2_mbsfn_SubframeConfig1->radioframeAllocationPeriod= MBSFN_SubframeConfig__radioframeAllocationPeriod_n4;
     sib2_mbsfn_SubframeConfig1->radioframeAllocationOffset= 1;
     sib2_mbsfn_SubframeConfig1->subframeAllocation.present= MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame;
     sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf= MALLOC(1);
     sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.size= 1;
     sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.bits_unused= 2;
-
     sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=0x38<<2;
-
     ASN_SEQUENCE_ADD(&MBSFNSubframeConfigList->list,sib2_mbsfn_SubframeConfig1);
 
     if (MBMS_flag == 4 ) {
       LOG_I(RRC,"Adding MBSFN subframe Configuration 2 to SIB2\n");
       MBSFN_SubframeConfig_t *sib2_mbsfn_SubframeConfig2;
       sib2_mbsfn_SubframeConfig2= CALLOC(1,sizeof(*sib2_mbsfn_SubframeConfig2));
-      memset((void*)sib2_mbsfn_SubframeConfig2,0,sizeof(*sib2_mbsfn_SubframeConfig2));
-
+      memset((void *)sib2_mbsfn_SubframeConfig2,0,sizeof(*sib2_mbsfn_SubframeConfig2));
       sib2_mbsfn_SubframeConfig2->radioframeAllocationPeriod= MBSFN_SubframeConfig__radioframeAllocationPeriod_n4;
       sib2_mbsfn_SubframeConfig2->radioframeAllocationOffset= 1;
       sib2_mbsfn_SubframeConfig2->subframeAllocation.present= MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame;
       sib2_mbsfn_SubframeConfig2->subframeAllocation.choice.oneFrame.buf= MALLOC(1);
       sib2_mbsfn_SubframeConfig2->subframeAllocation.choice.oneFrame.size= 1;
       sib2_mbsfn_SubframeConfig2->subframeAllocation.choice.oneFrame.bits_unused= 2;
-
       sib2_mbsfn_SubframeConfig2->subframeAllocation.choice.oneFrame.buf[0]=0x07<<2;
-     
-
       ASN_SEQUENCE_ADD(&MBSFNSubframeConfigList->list,sib2_mbsfn_SubframeConfig2);
     }
   }
@@ -844,9 +760,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
 #else // no MBMS transmission
   (*sib2)->mbsfn_SubframeConfigList = NULL;
 #endif
-
   (*sib2)->timeAlignmentTimerCommon=TimeAlignmentTimer_infinity;//TimeAlignmentTimer_sf5120;
-
   /// (*SIB3)
 #if defined(Rel10) || defined(Rel14)
   (*sib3)->ext1 = NULL;
@@ -858,21 +772,16 @@ uint8_t do_SIB23(uint8_t Mod_id,
 #endif
 #endif
   (*sib3)->cellReselectionInfoCommon.q_Hyst=SystemInformationBlockType3__cellReselectionInfoCommon__q_Hyst_dB4;
-
   (*sib3)->cellReselectionInfoCommon.speedStateReselectionPars=NULL;
-
   (*sib3)->cellReselectionServingFreqInfo.s_NonIntraSearch=NULL;
   (*sib3)->cellReselectionServingFreqInfo.threshServingLow=31;
   (*sib3)->cellReselectionServingFreqInfo.cellReselectionPriority=7;
-
   (*sib3)->intraFreqCellReselectionInfo.q_RxLevMin = -70;
   (*sib3)->intraFreqCellReselectionInfo.p_Max = NULL;
   (*sib3)->intraFreqCellReselectionInfo.s_IntraSearch = CALLOC(1,sizeof(*(*sib3)->intraFreqCellReselectionInfo.s_IntraSearch));
   *(*sib3)->intraFreqCellReselectionInfo.s_IntraSearch = 31;
   (*sib3)->intraFreqCellReselectionInfo.allowedMeasBandwidth=CALLOC(1,sizeof(*(*sib3)->intraFreqCellReselectionInfo.allowedMeasBandwidth));
-
   *(*sib3)->intraFreqCellReselectionInfo.allowedMeasBandwidth = AllowedMeasBandwidth_mbw6;
-
   (*sib3)->intraFreqCellReselectionInfo.presenceAntennaPort1 = 0;
   (*sib3)->intraFreqCellReselectionInfo.neighCellConfig.buf = CALLOC(8,1);
   (*sib3)->intraFreqCellReselectionInfo.neighCellConfig.size = 1;
@@ -880,7 +789,6 @@ uint8_t do_SIB23(uint8_t Mod_id,
   (*sib3)->intraFreqCellReselectionInfo.neighCellConfig.bits_unused = 6;
   (*sib3)->intraFreqCellReselectionInfo.t_ReselectionEUTRA = 1;
   (*sib3)->intraFreqCellReselectionInfo.t_ReselectionEUTRA_SF = (struct SpeedStateScaleFactors *)NULL;
-
   // SIB13
   // fill in all elements of SIB13 if present
 #if defined(Rel10) || defined(Rel14)
@@ -890,7 +798,6 @@ uint8_t do_SIB23(uint8_t Mod_id,
     (*sib13)->notificationConfig_r9.notificationRepetitionCoeff_r9= MBMS_NotificationConfig_r9__notificationRepetitionCoeff_r9_n2;
     (*sib13)->notificationConfig_r9.notificationOffset_r9= 0;
     (*sib13)->notificationConfig_r9.notificationSF_Index_r9= 1;
-
     //  MBSFN-AreaInfoList
     MBSFNArea_list= &(*sib13)->mbsfn_AreaInfoList_r9;//CALLOC(1,sizeof(*MBSFNArea_list));
     memset(MBSFNArea_list,0,sizeof(*MBSFNArea_list));
@@ -905,14 +812,9 @@ uint8_t do_SIB23(uint8_t Mod_id,
     //  Subframe Allocation Info
     MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf= MALLOC(1);
     MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.size= 1;
-
     MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf[0]=0x20<<2;  // FDD: SF1
-    
-
     MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.bits_unused= 2;
-
     MBSFN_Area1->mcch_Config_r9.signallingMCS_r9= MBSFN_AreaInfo_r9__mcch_Config_r9__signallingMCS_r9_n7;
-
     ASN_SEQUENCE_ADD(&MBSFNArea_list->list,MBSFN_Area1);
 
     //MBSFN Area 2: currently only activated for eMBMS relaying
@@ -928,12 +830,8 @@ uint8_t do_SIB23(uint8_t Mod_id,
       MBSFN_Area2->mcch_Config_r9.sf_AllocInfo_r9.buf= MALLOC(1);
       MBSFN_Area2->mcch_Config_r9.sf_AllocInfo_r9.size= 1;
       MBSFN_Area2->mcch_Config_r9.sf_AllocInfo_r9.bits_unused= 2;
-
       MBSFN_Area2->mcch_Config_r9.sf_AllocInfo_r9.buf[0]=0x04<<2;  // FDD: SF6
-     
-
       MBSFN_Area2->mcch_Config_r9.signallingMCS_r9= MBSFN_AreaInfo_r9__mcch_Config_r9__signallingMCS_r9_n7;
-
       ASN_SEQUENCE_ADD(&MBSFNArea_list->list,MBSFN_Area2);
     }
 
@@ -941,18 +839,13 @@ uint8_t do_SIB23(uint8_t Mod_id,
   }
 
 #endif
-
   bcch_message->message.present = BCCH_DL_SCH_MessageType_PR_c1;
   bcch_message->message.choice.c1.present = BCCH_DL_SCH_MessageType__c1_PR_systemInformation;
-
   /*  memcpy((void*)&bcch_message.message.choice.c1.choice.systemInformation,
    (void*)systemInformation,
    sizeof(SystemInformation_t));*/
-
   bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.present = SystemInformation__criticalExtensions_PR_systemInformation_r8;
-
   bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list.count=0;
-
   //  asn_set_empty(&systemInformation->criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list);//.size=0;
   //  systemInformation->criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list.count=0;
   ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list,
@@ -966,19 +859,16 @@ uint8_t do_SIB23(uint8_t Mod_id,
   }
 
 #endif
-
-
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message, (void*)bcch_message);
+  xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message, (void *)bcch_message);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_DL_SCH_Message,
-                                   (void*)bcch_message,
+                                   NULL,
+                                   (void *)bcch_message,
                                    buffer,
                                    900);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -987,17 +877,14 @@ uint8_t do_SIB23(uint8_t Mod_id,
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_BCCH_DL_SCH_Message, (void *)bcch_message)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB, RRC_DL_BCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_bcch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_bcch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
     }
   }
 # endif
 #endif
-
   LOG_D(RRC,"[eNB] SystemInformation Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
 
   if (enc_rval.encoded==-1) {
@@ -1010,21 +897,15 @@ uint8_t do_SIB23(uint8_t Mod_id,
 
 uint8_t do_RRCConnectionRequest(uint8_t Mod_id, uint8_t *buffer,uint8_t *rv)
 {
-
   asn_enc_rval_t enc_rval;
   uint8_t buf[5],buf2=0;
   uint8_t ecause=0;
-
   UL_CCCH_Message_t ul_ccch_msg;
-
   RRCConnectionRequest_t *rrcConnectionRequest;
-
   memset((void *)&ul_ccch_msg,0,sizeof(UL_CCCH_Message_t));
-
   ul_ccch_msg.message.present           = UL_CCCH_MessageType_PR_c1;
   ul_ccch_msg.message.choice.c1.present = UL_CCCH_MessageType__c1_PR_rrcConnectionRequest;
   rrcConnectionRequest          = &ul_ccch_msg.message.choice.c1.choice.rrcConnectionRequest;
-
   rrcConnectionRequest->criticalExtensions.present = RRCConnectionRequest__criticalExtensions_PR_rrcConnectionRequest_r8;
 
   if (1) {
@@ -1053,19 +934,16 @@ uint8_t do_RRCConnectionRequest(uint8_t Mod_id, uint8_t *buffer,uint8_t *rv)
   }
 
   rrcConnectionRequest->criticalExtensions.choice.rrcConnectionRequest_r8.establishmentCause = EstablishmentCause_mo_Signalling; //EstablishmentCause_mo_Data;
-
   rrcConnectionRequest->criticalExtensions.choice.rrcConnectionRequest_r8.spare.buf = &buf2;
   rrcConnectionRequest->criticalExtensions.choice.rrcConnectionRequest_r8.spare.size=1;
   rrcConnectionRequest->criticalExtensions.choice.rrcConnectionRequest_r8.spare.bits_unused = 7;
-
-
   enc_rval = uper_encode_to_buffer(&asn_DEF_UL_CCCH_Message,
-                                   (void*)&ul_ccch_msg,
+                                   NULL,
+                                   (void *)&ul_ccch_msg,
                                    buffer,
                                    100);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -1074,50 +952,37 @@ uint8_t do_RRCConnectionRequest(uint8_t Mod_id, uint8_t *buffer,uint8_t *rv)
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_CCCH_Message, (void *) &ul_ccch_msg)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_UL_CCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_ul_ccch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_ul_ccch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, NB_eNB_INST + Mod_id, msg_p);
     }
   }
 # endif
 #endif
-
   LOG_D(RRC,"[UE] RRCConnectionRequest Encoded %zd bits (%zd bytes), ecause %d\n",enc_rval.encoded,(enc_rval.encoded+7)/8,ecause);
-
   return((enc_rval.encoded+7)/8);
-
 }
 
 uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uint8_t Transaction_id, const int dedicatedInfoNASLength, const char *dedicatedInfoNAS)
 {
-
-
   asn_enc_rval_t enc_rval;
-
   UL_DCCH_Message_t ul_dcch_msg;
-
   RRCConnectionSetupComplete_t *rrcConnectionSetupComplete;
-
   memset((void *)&ul_dcch_msg,0,sizeof(UL_DCCH_Message_t));
-
   ul_dcch_msg.message.present           = UL_DCCH_MessageType_PR_c1;
   ul_dcch_msg.message.choice.c1.present = UL_DCCH_MessageType__c1_PR_rrcConnectionSetupComplete;
   rrcConnectionSetupComplete            = &ul_dcch_msg.message.choice.c1.choice.rrcConnectionSetupComplete;
-
   rrcConnectionSetupComplete->rrc_TransactionIdentifier = Transaction_id;
   rrcConnectionSetupComplete->criticalExtensions.present = RRCConnectionSetupComplete__criticalExtensions_PR_c1;
   rrcConnectionSetupComplete->criticalExtensions.choice.c1.present = RRCConnectionSetupComplete__criticalExtensions__c1_PR_rrcConnectionSetupComplete_r8;
-
   rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.nonCriticalExtension=CALLOC(1,
       sizeof(*rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.nonCriticalExtension));
 
   if(usim_test == 0)
-      rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.selectedPLMN_Identity= 2;
+    rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.selectedPLMN_Identity= 2;
   else
-      rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.selectedPLMN_Identity= 1;
+    rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.selectedPLMN_Identity= 1;
 
   rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME =
     NULL;//calloc(1,sizeof(*rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME));
@@ -1132,21 +997,19 @@ uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uin
   memset(&rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.dedicatedInfoNAS,0,sizeof(OCTET_STRING_t));
   OCTET_STRING_fromBuf(&rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.dedicatedInfoNAS,
                        dedicatedInfoNAS, dedicatedInfoNASLength);
-
   /*
     rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmec.buf = calloc(1,1);
     rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmec.buf[0] = 0x98;
     rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmec.size=1;
     rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmec.bits_unused=0;
   */
-
   enc_rval = uper_encode_to_buffer(&asn_DEF_UL_DCCH_Message,
-                                   (void*)&ul_dcch_msg,
+                                   NULL,
+                                   (void *)&ul_dcch_msg,
                                    buffer,
                                    100);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -1155,58 +1018,45 @@ uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uin
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_DCCH_Message, (void *) &ul_dcch_msg)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_UL_DCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_ul_dcch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_ul_dcch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, NB_eNB_INST + Mod_id, msg_p);
     }
   }
 # endif
 #endif
-
   LOG_D(RRC,"RRCConnectionSetupComplete Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
-
   return((enc_rval.encoded+7)/8);
-
 }
 
 //------------------------------------------------------------------------------
 uint8_t
 do_RRCConnectionReconfigurationComplete(
-  const protocol_ctxt_t* const ctxt_pP,
-  uint8_t* buffer,
+  const protocol_ctxt_t *const ctxt_pP,
+  uint8_t *buffer,
   const uint8_t Transaction_id
 )
 //------------------------------------------------------------------------------
 {
-
-
   asn_enc_rval_t enc_rval;
-
   UL_DCCH_Message_t ul_dcch_msg;
-
   RRCConnectionReconfigurationComplete_t *rrcConnectionReconfigurationComplete;
-
   memset((void *)&ul_dcch_msg,0,sizeof(UL_DCCH_Message_t));
-
   ul_dcch_msg.message.present                     = UL_DCCH_MessageType_PR_c1;
   ul_dcch_msg.message.choice.c1.present           = UL_DCCH_MessageType__c1_PR_rrcConnectionReconfigurationComplete;
   rrcConnectionReconfigurationComplete            = &ul_dcch_msg.message.choice.c1.choice.rrcConnectionReconfigurationComplete;
-
   rrcConnectionReconfigurationComplete->rrc_TransactionIdentifier = Transaction_id;
   rrcConnectionReconfigurationComplete->criticalExtensions.present =
     RRCConnectionReconfigurationComplete__criticalExtensions_PR_rrcConnectionReconfigurationComplete_r8;
   rrcConnectionReconfigurationComplete->criticalExtensions.choice.rrcConnectionReconfigurationComplete_r8.nonCriticalExtension=NULL;
-
   enc_rval = uper_encode_to_buffer(&asn_DEF_UL_DCCH_Message,
-                                   (void*)&ul_dcch_msg,
+                                   NULL,
+                                   (void *)&ul_dcch_msg,
                                    buffer,
                                    100);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -1215,19 +1065,15 @@ do_RRCConnectionReconfigurationComplete(
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_DCCH_Message, (void *) &ul_dcch_msg)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_UL_DCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_ul_dcch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_ul_dcch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
     }
   }
 # endif
 #endif
-
   LOG_D(RRC,"RRCConnectionReconfigurationComplete Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
-
   return((enc_rval.encoded+7)/8);
 }
 
@@ -1235,38 +1081,32 @@ do_RRCConnectionReconfigurationComplete(
 //------------------------------------------------------------------------------
 uint8_t
 do_RRCConnectionSetup(
-  const protocol_ctxt_t*     const ctxt_pP,
-  rrc_eNB_ue_context_t*      const ue_context_pP,
+  const protocol_ctxt_t     *const ctxt_pP,
+  rrc_eNB_ue_context_t      *const ue_context_pP,
   int                        CC_id,
-  uint8_t*                   const buffer,
+  uint8_t                   *const buffer,
   const uint8_t              transmission_mode,
   const uint8_t              Transaction_id,
   SRB_ToAddModList_t  **SRB_configList,
   struct PhysicalConfigDedicated  **physicalConfigDedicated)
 {
-
   asn_enc_rval_t enc_rval;
   uint8_t ecause=0;
   eNB_RRC_INST *rrc               = RC.rrc[ctxt_pP->module_id];
   rrc_eNB_carrier_data_t *carrier = &rrc->carrier[CC_id];
- 
-  long* logicalchannelgroup = NULL;
-  struct SRB_ToAddMod* SRB1_config = NULL;
-  struct SRB_ToAddMod__rlc_Config* SRB1_rlc_config = NULL;
-  struct SRB_ToAddMod__logicalChannelConfig* SRB1_lchan_config = NULL;
-  struct LogicalChannelConfig__ul_SpecificParameters* SRB1_ul_SpecificParameters = NULL;
-
+  long *logicalchannelgroup = NULL;
+  struct SRB_ToAddMod *SRB1_config = NULL;
+  struct SRB_ToAddMod__rlc_Config *SRB1_rlc_config = NULL;
+  struct SRB_ToAddMod__logicalChannelConfig *SRB1_lchan_config = NULL;
+  struct LogicalChannelConfig__ul_SpecificParameters *SRB1_ul_SpecificParameters = NULL;
 #ifdef CBA
-  struct PUSCH_CBAConfigDedicated_vlola*  pusch_CBAConfigDedicated_vlola = NULL;
-  long* betaOffset_CBA_Index = NULL;
-  long* cShift_CBA = NULL;
+  struct PUSCH_CBAConfigDedicated_vlola  *pusch_CBAConfigDedicated_vlola = NULL;
+  long *betaOffset_CBA_Index = NULL;
+  long *cShift_CBA = NULL;
 #endif
-  PhysicalConfigDedicated_t* physicalConfigDedicated2 = NULL;
-
+  PhysicalConfigDedicated_t *physicalConfigDedicated2 = NULL;
   DL_CCCH_Message_t dl_ccch_msg;
-
-  RRCConnectionSetup_t* rrcConnectionSetup = NULL;
-
+  RRCConnectionSetup_t *rrcConnectionSetup = NULL;
   memset((void *)&dl_ccch_msg,0,sizeof(DL_CCCH_Message_t));
   dl_ccch_msg.message.present           = DL_CCCH_MessageType_PR_c1;
   dl_ccch_msg.message.choice.c1.present = DL_CCCH_MessageType__c1_PR_rrcConnectionSetup;
@@ -1281,14 +1121,11 @@ do_RRCConnectionSetup(
   }
 
   *SRB_configList = CALLOC(1,sizeof(SRB_ToAddModList_t));
-
   /// SRB1
   SRB1_config = CALLOC(1,sizeof(*SRB1_config));
-
   SRB1_config->srb_Identity = 1;
   SRB1_rlc_config = CALLOC(1,sizeof(*SRB1_rlc_config));
   SRB1_config->rlc_Config   = SRB1_rlc_config;
-
   SRB1_rlc_config->present = SRB_ToAddMod__rlc_Config_PR_explicitValue;
   SRB1_rlc_config->choice.explicitValue.present=RLC_Config_PR_am;
 #if defined(ENABLE_ITTI)
@@ -1298,44 +1135,31 @@ do_RRCConnectionSetup(
   SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.maxRetxThreshold = rrc->srb1_max_retx_threshold;
   SRB1_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_Reordering     = rrc->srb1_timer_reordering;
   SRB1_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_StatusProhibit = rrc->srb1_timer_status_prohibit;
-#else 
+#else
   SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.t_PollRetransmit = T_PollRetransmit_ms20;;
   SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.pollPDU          = PollPDU_p4;;
   SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.pollByte         = PollByte_kBinfinity;
   SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.maxRetxThreshold = UL_AM_RLC__maxRetxThreshold_t8;
   SRB1_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_Reordering     = T_Reordering_ms35;
   SRB1_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_StatusProhibit = T_StatusProhibit_ms0;
-#endif 
-
+#endif
   SRB1_lchan_config = CALLOC(1,sizeof(*SRB1_lchan_config));
   SRB1_config->logicalChannelConfig   = SRB1_lchan_config;
-
   SRB1_lchan_config->present = SRB_ToAddMod__logicalChannelConfig_PR_explicitValue;
   SRB1_ul_SpecificParameters = CALLOC(1,sizeof(*SRB1_ul_SpecificParameters));
-
   SRB1_lchan_config->choice.explicitValue.ul_SpecificParameters = SRB1_ul_SpecificParameters;
-
-
   SRB1_ul_SpecificParameters->priority = 1;
-
   //assign_enum(&SRB1_ul_SpecificParameters->prioritisedBitRate,LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity);
   SRB1_ul_SpecificParameters->prioritisedBitRate=LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
-
   //assign_enum(&SRB1_ul_SpecificParameters->bucketSizeDuration,LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50);
   SRB1_ul_SpecificParameters->bucketSizeDuration=LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
   logicalchannelgroup = CALLOC(1,sizeof(long));
   *logicalchannelgroup=0;
   SRB1_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup;
-
-
   ASN_SEQUENCE_ADD(&(*SRB_configList)->list,SRB1_config);
-
   // PhysicalConfigDedicated
-
   physicalConfigDedicated2 = CALLOC(1,sizeof(*physicalConfigDedicated2));
   *physicalConfigDedicated = physicalConfigDedicated2;
-
   physicalConfigDedicated2->pdsch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pdsch_ConfigDedicated));
   physicalConfigDedicated2->pucch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pucch_ConfigDedicated));
   physicalConfigDedicated2->pusch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pusch_ConfigDedicated));
@@ -1343,10 +1167,12 @@ do_RRCConnectionSetup(
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH         = CALLOC(1,sizeof(*physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH));
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH         = CALLOC(1,sizeof(*physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH));
   physicalConfigDedicated2->cqi_ReportConfig              = CALLOC(1,sizeof(*physicalConfigDedicated2->cqi_ReportConfig));
+
   if (rrc->srs_enable[CC_id]==1)
     physicalConfigDedicated2->soundingRS_UL_ConfigDedicated = CALLOC(1,sizeof(*physicalConfigDedicated2->soundingRS_UL_ConfigDedicated));
   else
     physicalConfigDedicated2->soundingRS_UL_ConfigDedicated = NULL;
+
   physicalConfigDedicated2->antennaInfo                   = CALLOC(1,sizeof(*physicalConfigDedicated2->antennaInfo));
   physicalConfigDedicated2->schedulingRequestConfig       = CALLOC(1,sizeof(*physicalConfigDedicated2->schedulingRequestConfig));
 
@@ -1374,7 +1200,6 @@ do_RRCConnectionSetup(
   physicalConfigDedicated2->pusch_ConfigDedicated->betaOffset_ACK_Index = 0; // 2.00
   physicalConfigDedicated2->pusch_ConfigDedicated->betaOffset_RI_Index  = 0; // 1.25
   physicalConfigDedicated2->pusch_ConfigDedicated->betaOffset_CQI_Index = 8; // 2.25
-
   // UplinkPowerControlDedicated
   physicalConfigDedicated2->uplinkPowerControlDedicated->p0_UE_PUSCH = 0; // 0 dB
   //assign_enum(&physicalConfigDedicated2->uplinkPowerControlDedicated->deltaMCS_Enabled,
@@ -1387,9 +1212,7 @@ do_RRCConnectionSetup(
       sizeof(*physicalConfigDedicated2->uplinkPowerControlDedicated->filterCoefficient));
   //  assign_enum(physicalConfigDedicated2->uplinkPowerControlDedicated->filterCoefficient,FilterCoefficient_fc4); // fc4 dB
   *physicalConfigDedicated2->uplinkPowerControlDedicated->filterCoefficient=FilterCoefficient_fc4; // fc4 dB
-
   // TPC-PDCCH-Config
-
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH->present=TPC_PDCCH_Config_PR_setup;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH->choice.setup.tpc_Index.present = TPC_Index_PR_indexOfFormat3;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH->choice.setup.tpc_Index.choice.indexOfFormat3 = 1;
@@ -1398,7 +1221,6 @@ do_RRCConnectionSetup(
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH->choice.setup.tpc_RNTI.buf[0]=0x12;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH->choice.setup.tpc_RNTI.buf[1]=0x34+ue_context_pP->local_uid;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH->choice.setup.tpc_RNTI.bits_unused=0;
-
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH->present=TPC_PDCCH_Config_PR_setup;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH->choice.setup.tpc_Index.present = TPC_Index_PR_indexOfFormat3;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH->choice.setup.tpc_Index.choice.indexOfFormat3 = 1;
@@ -1407,9 +1229,7 @@ do_RRCConnectionSetup(
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH->choice.setup.tpc_RNTI.buf[0]=0x22;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH->choice.setup.tpc_RNTI.buf[1]=0x34+ue_context_pP->local_uid;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH->choice.setup.tpc_RNTI.bits_unused=0;
-
   // CQI ReportConfig
-
   physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportModeAperiodic=CALLOC(1,sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportModeAperiodic));
 #if defined(Rel10) || defined(Rel14)
   *physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportModeAperiodic= CQI_ReportModeAperiodic_rm30;
@@ -1418,65 +1238,68 @@ do_RRCConnectionSetup(
 #endif
   physicalConfigDedicated2->cqi_ReportConfig->nomPDSCH_RS_EPRE_Offset = 0; // 0 dB
   //physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic=NULL;
-  
   physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic=CALLOC(1,sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic));
   physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->present =  CQI_ReportPeriodic_PR_release;
-    /*
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->present =  CQI_ReportPeriodic_PR_setup;
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_PUCCH_ResourceIndex = 0;  // n2_pucch
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_pmi_ConfigIndex = 0;  // Icqi/pmi
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_FormatIndicatorPeriodic.present = CQI_ReportPeriodic__setup__cqi_FormatIndicatorPeriodic_PR_subbandCQI;  // subband CQI
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_FormatIndicatorPeriodic.choice.subbandCQI.k=4;
-
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.ri_ConfigIndex=NULL;
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.simultaneousAckNackAndCQI=0;
-    */
+  /*
+  physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->present =  CQI_ReportPeriodic_PR_setup;
+  physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_PUCCH_ResourceIndex = 0;  // n2_pucch
+  physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_pmi_ConfigIndex = 0;  // Icqi/pmi
+  physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_FormatIndicatorPeriodic.present = CQI_ReportPeriodic__setup__cqi_FormatIndicatorPeriodic_PR_subbandCQI;  // subband CQI
+  physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_FormatIndicatorPeriodic.choice.subbandCQI.k=4;
+
+  physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.ri_ConfigIndex=NULL;
+  physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.simultaneousAckNackAndCQI=0;
+  */
 
   //soundingRS-UL-ConfigDedicated
   if (rrc->srs_enable[CC_id]==1) {
     physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->present = SoundingRS_UL_ConfigDedicated_PR_setup;
     physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.srs_Bandwidth =
-                                                             SoundingRS_UL_ConfigDedicated__setup__srs_Bandwidth_bw0;
+      SoundingRS_UL_ConfigDedicated__setup__srs_Bandwidth_bw0;
     physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.srs_HoppingBandwidth =
-          SoundingRS_UL_ConfigDedicated__setup__srs_HoppingBandwidth_hbw0;
+      SoundingRS_UL_ConfigDedicated__setup__srs_HoppingBandwidth_hbw0;
     physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.freqDomainPosition=0;
     physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.duration=1;
+
     if (carrier->sib1->tdd_Config==NULL) { // FDD
       if (carrier->sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.present
-	  == SoundingRS_UL_ConfigCommon_PR_setup)
-	if (carrier->sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_SubframeConfig!=0) 
-	  LOG_W(RRC,"This code has been optimized for SRS Subframe Config 0, but current config is %zd. Expect undefined behaviour!\n",
-		carrier->sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_SubframeConfig);
-      if (ue_context_pP->local_uid >=20) 
-	LOG_W(RRC,"This code has been optimized for up to 10 UEs, but current UE_id is %d. Expect undefined behaviour!\n",
-	      ue_context_pP->local_uid);
+          == SoundingRS_UL_ConfigCommon_PR_setup)
+        if (carrier->sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_SubframeConfig!=0)
+          LOG_W(RRC,"This code has been optimized for SRS Subframe Config 0, but current config is %zd. Expect undefined behaviour!\n",
+                carrier->sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_SubframeConfig);
+
+      if (ue_context_pP->local_uid >=20)
+        LOG_W(RRC,"This code has been optimized for up to 10 UEs, but current UE_id is %d. Expect undefined behaviour!\n",
+              ue_context_pP->local_uid);
+
       //the current code will allow for 20 UEs - to be revised for more
       physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.srs_ConfigIndex=7+ue_context_pP->local_uid/2;
       physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.transmissionComb= ue_context_pP->local_uid%2;
     }
     else {
       if (carrier->sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.present
-	  == SoundingRS_UL_ConfigCommon_PR_setup)
-	if (carrier->sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_SubframeConfig!=7) {
-	  LOG_W(RRC,"This code has been optimized for SRS Subframe Config 7 and TDD config 3, but current configs are %zd and %zd. Expect undefined behaviour!\n",
-		carrier->sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_SubframeConfig,
-		carrier->sib1->tdd_Config->subframeAssignment);
-	}
-      if (ue_context_pP->local_uid >=6) 
-	LOG_W(RRC,"This code has been optimized for up to 6 UEs, but current UE_id is %d. Expect undefined behaviour!\n",
-	      ue_context_pP->local_uid);
+          == SoundingRS_UL_ConfigCommon_PR_setup)
+        if (carrier->sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_SubframeConfig!=7) {
+          LOG_W(RRC,"This code has been optimized for SRS Subframe Config 7 and TDD config 3, but current configs are %zd and %zd. Expect undefined behaviour!\n",
+                carrier->sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_SubframeConfig,
+                carrier->sib1->tdd_Config->subframeAssignment);
+        }
+
+      if (ue_context_pP->local_uid >=6)
+        LOG_W(RRC,"This code has been optimized for up to 6 UEs, but current UE_id is %d. Expect undefined behaviour!\n",
+              ue_context_pP->local_uid);
+
       physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.srs_ConfigIndex=17+ue_context_pP->local_uid/2;
       physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.transmissionComb= ue_context_pP->local_uid%2;
     }
-    LOG_W(RRC,"local UID %d, srs ConfigIndex %zd, TransmissionComb %zd\n",ue_context_pP->local_uid,
-	  physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.srs_ConfigIndex,
-	  physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.transmissionComb);
 
+    LOG_W(RRC,"local UID %d, srs ConfigIndex %zd, TransmissionComb %zd\n",ue_context_pP->local_uid,
+          physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.srs_ConfigIndex,
+          physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.transmissionComb);
     physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.cyclicShift=
-          SoundingRS_UL_ConfigDedicated__setup__cyclicShift_cs0;
+      SoundingRS_UL_ConfigDedicated__setup__cyclicShift_cs0;
   }
 
-
   //AntennaInfoDedicated
   physicalConfigDedicated2->antennaInfo = CALLOC(1,sizeof(*physicalConfigDedicated2->antennaInfo));
   physicalConfigDedicated2->antennaInfo->present = PhysicalConfigDedicated__antennaInfo_PR_explicitValue;
@@ -1484,53 +1307,51 @@ do_RRCConnectionSetup(
   //     AntennaInfoDedicated__transmissionMode_tm2);
 
   switch (transmission_mode) {
-  default:
-    LOG_W(RRC,"At RRCConnectionSetup Transmission mode can only take values 1 or 2! Defaulting to 1!\n");
-  case 1:
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm1;
-    break;
-
-  case 2:
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm2;
-    break;
-    /*
-  case 3:
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm3;
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction=     CALLOC(1,
-        sizeof(*physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction));
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
-      AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm3;
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf= MALLOC(1);
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf[0] = 0xc0;
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.size=1;
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.bits_unused=6;
-
-    break;
-
-  case 4:
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm4;
-    break;
-
-  case 5:
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm5;
-    break;
-
-  case 6:
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm6;
-    break;
-
-  case 7:
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm7;
-    break;
-    */
-  }
+    default:
+      LOG_W(RRC,"At RRCConnectionSetup Transmission mode can only take values 1 or 2! Defaulting to 1!\n");
+
+    case 1:
+      physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm1;
+      break;
+
+    case 2:
+      physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm2;
+      break;
+      /*
+      case 3:
+      physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm3;
+      physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction=     CALLOC(1,
+          sizeof(*physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction));
+      physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
+        AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm3;
+      physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf= MALLOC(1);
+      physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf[0] = 0xc0;
+      physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.size=1;
+      physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.bits_unused=6;
+
+      break;
 
+      case 4:
+      physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm4;
+      break;
+
+      case 5:
+      physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm5;
+      break;
+
+      case 6:
+      physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm6;
+      break;
+
+      case 7:
+      physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm7;
+      break;
+      */
+  }
 
   physicalConfigDedicated2->antennaInfo->choice.explicitValue.ue_TransmitAntennaSelection.present = AntennaInfoDedicated__ue_TransmitAntennaSelection_PR_release;
   physicalConfigDedicated2->antennaInfo->choice.explicitValue.ue_TransmitAntennaSelection.choice.release = 0;
-
   // SchedulingRequestConfig
-
   physicalConfigDedicated2->schedulingRequestConfig->present = SchedulingRequestConfig_PR_setup;
   physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_PUCCH_ResourceIndex = 71 - ue_context_pP->local_uid/10;//ue_context_pP->local_uid;
 
@@ -1538,24 +1359,24 @@ do_RRCConnectionSetup(
     physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 5+(ue_context_pP->local_uid%10);  // Isr = 5 (every 10 subframes, offset=2+UE_id mod3)
   } else {
     switch (carrier->sib1->tdd_Config->subframeAssignment) {
-    case 1:
-      physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7+(ue_context_pP->local_uid&1)+((
-            ue_context_pP->local_uid&3)>>1)*5;  // Isr = 5 (every 10 subframes, offset=2 for UE0, 3 for UE1, 7 for UE2, 8 for UE3 , 2 for UE4 etc..)
-      break;
-
-    case 3:
-      physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7+
-          (ue_context_pP->local_uid%3);  // Isr = 5 (every 10 subframes, offset=2 for UE0, 3 for UE1, 3 for UE2, 2 for UE3 , etc..)
-      break;
-
-    case 4:
-      physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7+
-          (ue_context_pP->local_uid&1);  // Isr = 5 (every 10 subframes, offset=2 for UE0, 3 for UE1, 3 for UE2, 2 for UE3 , etc..)
-      break;
-
-    default:
-      physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7;  // Isr = 5 (every 10 subframes, offset=2 for all UE0 etc..)
-      break;
+      case 1:
+        physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7+(ue_context_pP->local_uid&1)+((
+              ue_context_pP->local_uid&3)>>1)*5;  // Isr = 5 (every 10 subframes, offset=2 for UE0, 3 for UE1, 7 for UE2, 8 for UE3 , 2 for UE4 etc..)
+        break;
+
+      case 3:
+        physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7+
+            (ue_context_pP->local_uid%3);  // Isr = 5 (every 10 subframes, offset=2 for UE0, 3 for UE1, 3 for UE2, 2 for UE3 , etc..)
+        break;
+
+      case 4:
+        physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7+
+            (ue_context_pP->local_uid&1);  // Isr = 5 (every 10 subframes, offset=2 for UE0, 3 for UE1, 3 for UE2, 2 for UE3 , etc..)
+        break;
+
+      default:
+        physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7;  // Isr = 5 (every 10 subframes, offset=2 for all UE0 etc..)
+        break;
     }
   }
 
@@ -1563,7 +1384,6 @@ do_RRCConnectionSetup(
   //SchedulingRequestConfig__setup__dsr_TransMax_n4);
   //  assign_enum(&physicalConfigDedicated2->schedulingRequestConfig->choice.setup.dsr_TransMax = SchedulingRequestConfig__setup__dsr_TransMax_n4;
   physicalConfigDedicated2->schedulingRequestConfig->choice.setup.dsr_TransMax = SchedulingRequestConfig__setup__dsr_TransMax_n4;
-
   rrcConnectionSetup->rrc_TransactionIdentifier = Transaction_id;
   rrcConnectionSetup->criticalExtensions.present = RRCConnectionSetup__criticalExtensions_PR_c1;
   rrcConnectionSetup->criticalExtensions.choice.c1.present =RRCConnectionSetup__criticalExtensions__c1_PR_rrcConnectionSetup_r8 ;
@@ -1582,18 +1402,16 @@ do_RRCConnectionSetup(
   physicalConfigDedicated2->pusch_CBAConfigDedicated_vlola->cShift_CBA=cShift_CBA;
   rrcConnectionSetup->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r8.radioResourceConfigDedicated.sps_CBA_ConfigList_vlola = NULL;
 #endif
-
-
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
+  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void *)&dl_ccch_msg);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message,
-                                   (void*)&dl_ccch_msg,
+                                   NULL,
+                                   (void *)&dl_ccch_msg,
                                    buffer,
                                    100);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -1602,34 +1420,29 @@ do_RRCConnectionSetup(
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_CCCH_Message, (void *) &dl_ccch_msg)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB, RRC_DL_CCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_ccch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_ccch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
     }
   }
 # endif
 #endif
-
   LOG_D(RRC,"RRCConnectionSetup Encoded %zd bits (%zd bytes), ecause %d\n",
         enc_rval.encoded,(enc_rval.encoded+7)/8,ecause);
-
   //  FREEMEM(SRB_list);
   //  free(SRB1_config);
   //  free(SRB1_rlc_config);
   //  free(SRB1_lchan_config);
   //  free(SRB1_ul_SpecificParameters);
-
   return((enc_rval.encoded+7)/8);
 }
 
 //------------------------------------------------------------------------------
 uint8_t
 do_SecurityModeCommand(
-  const protocol_ctxt_t* const ctxt_pP,
-  uint8_t* const buffer,
+  const protocol_ctxt_t *const ctxt_pP,
+  uint8_t *const buffer,
   const uint8_t Transaction_id,
   const uint8_t cipheringAlgorithm,
   const uint8_t integrityProtAlgorithm
@@ -1638,15 +1451,11 @@ do_SecurityModeCommand(
 {
   DL_DCCH_Message_t dl_dcch_msg;
   asn_enc_rval_t enc_rval;
-
   memset(&dl_dcch_msg,0,sizeof(DL_DCCH_Message_t));
-
   dl_dcch_msg.message.present           = DL_DCCH_MessageType_PR_c1;
   dl_dcch_msg.message.choice.c1.present = DL_DCCH_MessageType__c1_PR_securityModeCommand;
-
   dl_dcch_msg.message.choice.c1.choice.securityModeCommand.rrc_TransactionIdentifier = Transaction_id;
   dl_dcch_msg.message.choice.c1.choice.securityModeCommand.criticalExtensions.present = SecurityModeCommand__criticalExtensions_PR_c1;
-
   dl_dcch_msg.message.choice.c1.choice.securityModeCommand.criticalExtensions.choice.c1.present =
     SecurityModeCommand__criticalExtensions__c1_PR_securityModeCommand_r8;
   // the two following information could be based on the mod_id
@@ -1654,17 +1463,16 @@ do_SecurityModeCommand(
     = (CipheringAlgorithm_r12_t)cipheringAlgorithm;
   dl_dcch_msg.message.choice.c1.choice.securityModeCommand.criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.integrityProtAlgorithm
     = (e_SecurityAlgorithmConfig__integrityProtAlgorithm)integrityProtAlgorithm;
-
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_DCCH_Message, (void*)&dl_dcch_msg);
+  xer_fprint(stdout, &asn_DEF_DL_DCCH_Message, (void *)&dl_dcch_msg);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_DCCH_Message,
-                                   (void*)&dl_dcch_msg,
+                                   NULL,
+                                   (void *)&dl_dcch_msg,
                                    buffer,
                                    100);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -1673,17 +1481,14 @@ do_SecurityModeCommand(
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_DCCH_Message, (void *) &dl_dcch_msg)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB, RRC_DL_DCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_dcch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_dcch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
     }
   }
 # endif
 #endif
-
   LOG_D(RRC,"[eNB %d] securityModeCommand for UE %x Encoded %zd bits (%zd bytes)\n",
         ctxt_pP->module_id,
         ctxt_pP->rnti,
@@ -1705,42 +1510,35 @@ do_SecurityModeCommand(
 //------------------------------------------------------------------------------
 uint8_t
 do_UECapabilityEnquiry(
-  const protocol_ctxt_t* const ctxt_pP,
-  uint8_t*               const buffer,
+  const protocol_ctxt_t *const ctxt_pP,
+  uint8_t               *const buffer,
   const uint8_t                Transaction_id
 )
 //------------------------------------------------------------------------------
 {
-
   DL_DCCH_Message_t dl_dcch_msg;
-
   RAT_Type_t rat=RAT_Type_eutra;
   asn_enc_rval_t enc_rval;
-
   memset(&dl_dcch_msg,0,sizeof(DL_DCCH_Message_t));
-
   dl_dcch_msg.message.present           = DL_DCCH_MessageType_PR_c1;
   dl_dcch_msg.message.choice.c1.present = DL_DCCH_MessageType__c1_PR_ueCapabilityEnquiry;
-
   dl_dcch_msg.message.choice.c1.choice.ueCapabilityEnquiry.rrc_TransactionIdentifier = Transaction_id;
-
   dl_dcch_msg.message.choice.c1.choice.ueCapabilityEnquiry.criticalExtensions.present = UECapabilityEnquiry__criticalExtensions_PR_c1;
   dl_dcch_msg.message.choice.c1.choice.ueCapabilityEnquiry.criticalExtensions.choice.c1.present =
     UECapabilityEnquiry__criticalExtensions__c1_PR_ueCapabilityEnquiry_r8;
   dl_dcch_msg.message.choice.c1.choice.ueCapabilityEnquiry.criticalExtensions.choice.c1.choice.ueCapabilityEnquiry_r8.ue_CapabilityRequest.list.count=0;
   ASN_SEQUENCE_ADD(&dl_dcch_msg.message.choice.c1.choice.ueCapabilityEnquiry.criticalExtensions.choice.c1.choice.ueCapabilityEnquiry_r8.ue_CapabilityRequest.list,
                    &rat);
-
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_DCCH_Message, (void*)&dl_dcch_msg);
+  xer_fprint(stdout, &asn_DEF_DL_DCCH_Message, (void *)&dl_dcch_msg);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_DCCH_Message,
-                                   (void*)&dl_dcch_msg,
+                                   NULL,
+                                   (void *)&dl_dcch_msg,
                                    buffer,
                                    100);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -1749,17 +1547,14 @@ do_UECapabilityEnquiry(
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_DCCH_Message, (void *) &dl_dcch_msg)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB, RRC_DL_CCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_ccch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_ccch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
     }
   }
 # endif
 #endif
-
   LOG_D(RRC,"[eNB %d] UECapabilityRequest for UE %x Encoded %zd bits (%zd bytes)\n",
         ctxt_pP->module_id,
         ctxt_pP->rnti,
@@ -1779,7 +1574,7 @@ do_UECapabilityEnquiry(
 //------------------------------------------------------------------------------
 uint16_t
 do_RRCConnectionReconfiguration(
-  const protocol_ctxt_t*        const ctxt_pP,
+  const protocol_ctxt_t        *const ctxt_pP,
   uint8_t                            *buffer,
   uint8_t                             Transaction_id,
   SRB_ToAddModList_t                 *SRB_list,
@@ -1806,24 +1601,17 @@ do_RRCConnectionReconfiguration(
 )
 //------------------------------------------------------------------------------
 {
-
   asn_enc_rval_t enc_rval;
-
   DL_DCCH_Message_t dl_dcch_msg;
   RRCConnectionReconfiguration_t *rrcConnectionReconfiguration;
-
-
   memset(&dl_dcch_msg,0,sizeof(DL_DCCH_Message_t));
-
   dl_dcch_msg.message.present           = DL_DCCH_MessageType_PR_c1;
   dl_dcch_msg.message.choice.c1.present = DL_DCCH_MessageType__c1_PR_rrcConnectionReconfiguration;
   rrcConnectionReconfiguration          = &dl_dcch_msg.message.choice.c1.choice.rrcConnectionReconfiguration;
-
   // RRCConnectionReconfiguration
   rrcConnectionReconfiguration->rrc_TransactionIdentifier = Transaction_id;
   rrcConnectionReconfiguration->criticalExtensions.present = RRCConnectionReconfiguration__criticalExtensions_PR_c1;
   rrcConnectionReconfiguration->criticalExtensions.choice.c1.present =RRCConnectionReconfiguration__criticalExtensions__c1_PR_rrcConnectionReconfiguration_r8 ;
-
   rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated = CALLOC(1,
       sizeof(*rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated));
   rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList = SRB_list;
@@ -1850,9 +1638,8 @@ do_RRCConnectionReconfiguration(
   if (MeasId_list != NULL) {
     rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig           = CALLOC(1,
         sizeof(*rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig));
-    memset((void*)rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig,
+    memset((void *)rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig,
            0, sizeof(*rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig));
-
     rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->reportConfigToAddModList = ReportConfig_list;
     rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->measIdToAddModList       = MeasId_list;
     rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->measObjectToAddModList   = MeasObj_list;
@@ -1884,27 +1671,24 @@ do_RRCConnectionReconfiguration(
   if (mobilityInfo !=NULL) {
     rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo = CALLOC(1,
         sizeof(*rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo));
-    memcpy((void*)rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo, (void*)mobilityInfo,
+    memcpy((void *)rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo, (void *)mobilityInfo,
            sizeof(MobilityControlInfo_t));
-
   } else {
     rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo  = NULL;
   }
 
   rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.dedicatedInfoNASList = dedicatedInfoNASList;
   rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.securityConfigHO     = NULL;
-
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_DCCH_Message,
-                                   (void*)&dl_dcch_msg,
+                                   NULL,
+                                   (void *)&dl_dcch_msg,
                                    buffer,
                                    RRC_BUF_SIZE);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %zd)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #ifdef XER_PRINT
-  xer_fprint(stdout,&asn_DEF_DL_DCCH_Message,(void*)&dl_dcch_msg);
+  xer_fprint(stdout,&asn_DEF_DL_DCCH_Message,(void *)&dl_dcch_msg);
 #endif
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -1913,67 +1697,58 @@ do_RRCConnectionReconfiguration(
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_DCCH_Message, (void *) &dl_dcch_msg)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB, RRC_DL_DCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_dcch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_dcch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
     }
   }
 # endif
 #endif
-
   LOG_I(RRC,"RRCConnectionReconfiguration Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
   // for (i=0;i<30;i++)
   //    msg("%x.",buffer[i]);
   // msg("\n");
-
-
   return((enc_rval.encoded+7)/8);
 }
 
 //------------------------------------------------------------------------------
 uint8_t
 do_RRCConnectionReestablishment(
-  const protocol_ctxt_t*     const ctxt_pP,
-  rrc_eNB_ue_context_t*      const ue_context_pP,
+  const protocol_ctxt_t     *const ctxt_pP,
+  rrc_eNB_ue_context_t      *const ue_context_pP,
   int                              CC_id,
-  uint8_t*                   const buffer,
+  uint8_t                   *const buffer,
   const uint8_t                    transmission_mode,
   const uint8_t                    Transaction_id,
   SRB_ToAddModList_t               **SRB_configList,
   struct PhysicalConfigDedicated   **physicalConfigDedicated)
 {
   asn_enc_rval_t enc_rval;
-
-  long* logicalchannelgroup = NULL;
-  struct SRB_ToAddMod* SRB1_config = NULL;
-  struct SRB_ToAddMod* SRB2_config = NULL;
-  struct SRB_ToAddMod__rlc_Config* SRB1_rlc_config = NULL;
-  struct SRB_ToAddMod__logicalChannelConfig* SRB1_lchan_config = NULL;
-  struct LogicalChannelConfig__ul_SpecificParameters* SRB1_ul_SpecificParameters = NULL;
+  long *logicalchannelgroup = NULL;
+  struct SRB_ToAddMod *SRB1_config = NULL;
+  struct SRB_ToAddMod *SRB2_config = NULL;
+  struct SRB_ToAddMod__rlc_Config *SRB1_rlc_config = NULL;
+  struct SRB_ToAddMod__logicalChannelConfig *SRB1_lchan_config = NULL;
+  struct LogicalChannelConfig__ul_SpecificParameters *SRB1_ul_SpecificParameters = NULL;
   eNB_RRC_INST *rrc               = RC.rrc[ctxt_pP->module_id];
-
 #ifdef CBA
-  struct PUSCH_CBAConfigDedicated_vlola* pusch_CBAConfigDedicated_vlola = NULL;
-  long* betaOffset_CBA_Index = NULL;
-  long* cShift_CBA = NULL;
+  struct PUSCH_CBAConfigDedicated_vlola *pusch_CBAConfigDedicated_vlola = NULL;
+  long *betaOffset_CBA_Index = NULL;
+  long *cShift_CBA = NULL;
 #endif
-  PhysicalConfigDedicated_t* physicalConfigDedicated2 = NULL;
-
+  PhysicalConfigDedicated_t *physicalConfigDedicated2 = NULL;
   DL_CCCH_Message_t dl_ccch_msg;
-
-  RRCConnectionReestablishment_t* rrcConnectionReestablishment = NULL;
-
+  RRCConnectionReestablishment_t *rrcConnectionReestablishment = NULL;
   int i = 0;
   SRB_ToAddModList_t **SRB_configList2 = NULL;
   SRB_configList2 = &ue_context_pP->ue_context.SRB_configList2[Transaction_id];
+
   if (*SRB_configList2) {
     free(*SRB_configList2);
   }
-  *SRB_configList2 = CALLOC(1, sizeof(SRB_ToAddModList_t));
 
+  *SRB_configList2 = CALLOC(1, sizeof(SRB_ToAddModList_t));
   memset((void *)&dl_ccch_msg, 0, sizeof(DL_CCCH_Message_t));
   dl_ccch_msg.message.present           = DL_CCCH_MessageType_PR_c1;
   dl_ccch_msg.message.choice.c1.present = DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishment;
@@ -1982,15 +1757,15 @@ do_RRCConnectionReestablishment(
   // RRCConnectionReestablishment
   // Configure SRB1
 
-
   // get old configuration of SRB2
   if (*SRB_configList != NULL) {
     for (i = 0; (i < (*SRB_configList)->list.count) && (i < 3); i++) {
       LOG_D(RRC, "(*SRB_configList)->list.array[%d]->srb_Identity=%ld\n",
-          i, (*SRB_configList)->list.array[i]->srb_Identity);
-      if ((*SRB_configList)->list.array[i]->srb_Identity == 2 ){
+            i, (*SRB_configList)->list.array[i]->srb_Identity);
+
+      if ((*SRB_configList)->list.array[i]->srb_Identity == 2 ) {
         SRB2_config = (*SRB_configList)->list.array[i];
-      } else if ((*SRB_configList)->list.array[i]->srb_Identity == 1 ){
+      } else if ((*SRB_configList)->list.array[i]->srb_Identity == 1 ) {
         SRB1_config = (*SRB_configList)->list.array[i];
       }
     }
@@ -2001,44 +1776,36 @@ do_RRCConnectionReestablishment(
     LOG_W(RRC,"SRB1 configuration does not exist in SRB configuration list, use default\n");
     /// SRB1
     SRB1_config = CALLOC(1, sizeof(*SRB1_config));
-
     SRB1_config->srb_Identity = 1;
     SRB1_rlc_config = CALLOC(1, sizeof(*SRB1_rlc_config));
     SRB1_config->rlc_Config   = SRB1_rlc_config;
-
     SRB1_rlc_config->present = SRB_ToAddMod__rlc_Config_PR_explicitValue;
     SRB1_rlc_config->choice.explicitValue.present=RLC_Config_PR_am;
-  #if defined(ENABLE_ITTI)
+#if defined(ENABLE_ITTI)
     SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.t_PollRetransmit = rrc->srb1_timer_poll_retransmit;
     SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.pollPDU          = rrc->srb1_poll_pdu;
     SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.pollByte         = rrc->srb1_poll_byte;
     SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.maxRetxThreshold = rrc->srb1_max_retx_threshold;
     SRB1_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_Reordering     = rrc->srb1_timer_reordering;
     SRB1_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_StatusProhibit = rrc->srb1_timer_status_prohibit;
-  #else
+#else
     SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.t_PollRetransmit = T_PollRetransmit_ms20;;
     SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.pollPDU          = PollPDU_p4;;
     SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.pollByte         = PollByte_kBinfinity;
     SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.maxRetxThreshold = UL_AM_RLC__maxRetxThreshold_t8;
     SRB1_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_Reordering     = T_Reordering_ms35;
     SRB1_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_StatusProhibit = T_StatusProhibit_ms0;
-  #endif
-
+#endif
     SRB1_lchan_config = CALLOC(1, sizeof(*SRB1_lchan_config));
     SRB1_config->logicalChannelConfig = SRB1_lchan_config;
-
     SRB1_lchan_config->present = SRB_ToAddMod__logicalChannelConfig_PR_explicitValue;
     SRB1_ul_SpecificParameters = CALLOC(1, sizeof(*SRB1_ul_SpecificParameters));
-
     SRB1_lchan_config->choice.explicitValue.ul_SpecificParameters = SRB1_ul_SpecificParameters;
     SRB1_ul_SpecificParameters->priority = 1;
-
     //assign_enum(&SRB1_ul_SpecificParameters->prioritisedBitRate,LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity);
     SRB1_ul_SpecificParameters->prioritisedBitRate=LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
-
     //assign_enum(&SRB1_ul_SpecificParameters->bucketSizeDuration,LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50);
     SRB1_ul_SpecificParameters->bucketSizeDuration=LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
     logicalchannelgroup = CALLOC(1, sizeof(long));
     *logicalchannelgroup = 0;
     SRB1_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup;
@@ -2055,11 +1822,8 @@ do_RRCConnectionReestablishment(
   }
 
   *SRB_configList = CALLOC(1, sizeof(SRB_ToAddModList_t));
-
   ASN_SEQUENCE_ADD(&(*SRB_configList)->list,SRB1_config);
-
   physicalConfigDedicated2 = *physicalConfigDedicated;
-
   rrcConnectionReestablishment->rrc_TransactionIdentifier = Transaction_id;
   rrcConnectionReestablishment->criticalExtensions.present = RRCConnectionReestablishment__criticalExtensions_PR_c1;
   rrcConnectionReestablishment->criticalExtensions.choice.c1.present = RRCConnectionReestablishment__criticalExtensions__c1_PR_rrcConnectionReestablishment_r8;
@@ -2069,27 +1833,28 @@ do_RRCConnectionReestablishment(
   rrcConnectionReestablishment->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r8.radioResourceConfigDedicated.sps_Config = NULL;
   rrcConnectionReestablishment->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r8.radioResourceConfigDedicated.physicalConfigDedicated = physicalConfigDedicated2;
   rrcConnectionReestablishment->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r8.radioResourceConfigDedicated.mac_MainConfig = NULL;
-
   uint8_t KeNB_star[32] = { 0 };
   uint16_t pci = rrc->carrier[CC_id].physCellId;
   uint32_t earfcn_dl = (uint32_t)freq_to_arfcn10(RC.mac[ctxt_pP->module_id]->common_channels[CC_id].eutra_band,
-                  rrc->carrier[CC_id].dl_CarrierFreq);
+                       rrc->carrier[CC_id].dl_CarrierFreq);
   bool     is_rel8_only = true;
+
   if (earfcn_dl > 65535) {
     is_rel8_only = false;
   }
 
   LOG_D(RRC, "pci=%d, eutra_band=%d, downlink_frequency=%d, earfcn_dl=%u, is_rel8_only=%s\n",
-      pci,
-      RC.mac[ctxt_pP->module_id]->common_channels[CC_id].eutra_band,
-      rrc->carrier[CC_id].dl_CarrierFreq,
-      earfcn_dl,
-      is_rel8_only == true ? "true": "false");
+        pci,
+        RC.mac[ctxt_pP->module_id]->common_channels[CC_id].eutra_band,
+        rrc->carrier[CC_id].dl_CarrierFreq,
+        earfcn_dl,
+        is_rel8_only == true ? "true": "false");
 #if defined(ENABLE_SECURITY)
+
   if (ue_context_pP->ue_context.nh_ncc >= 0) {
     derive_keNB_star(ue_context_pP->ue_context.nh, pci, earfcn_dl, is_rel8_only, KeNB_star);
     rrcConnectionReestablishment->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r8.nextHopChainingCount = ue_context_pP->ue_context.nh_ncc;
-  } else { // first HO 
+  } else { // first HO
     derive_keNB_star (ue_context_pP->ue_context.kenb, pci, earfcn_dl, is_rel8_only, KeNB_star);
     // LG: really 1
     rrcConnectionReestablishment->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r8.nextHopChainingCount = 0;
@@ -2101,19 +1866,17 @@ do_RRCConnectionReestablishment(
 #else
   rrcConnectionReestablishment->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r8.nextHopChainingCount = 0;
 #endif
-
   rrcConnectionReestablishment->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r8.nonCriticalExtension = NULL;
-
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
+  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void *)&dl_ccch_msg);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message,
-                                   (void*)&dl_ccch_msg,
+                                   NULL,
+                                   (void *)&dl_ccch_msg,
                                    buffer,
                                    100);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -2122,22 +1885,18 @@ do_RRCConnectionReestablishment(
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_CCCH_Message, (void *) &dl_ccch_msg)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB, RRC_DL_CCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_ccch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_ccch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
     }
   }
 # endif
 #endif
-
 #ifdef USER_MODE
   LOG_D(RRC,"RRCConnectionReestablishment Encoded %zd bits (%zd bytes)\n",
         enc_rval.encoded,(enc_rval.encoded+7)/8);
 #endif
-
   return((enc_rval.encoded+7)/8);
 }
 
@@ -2145,33 +1904,28 @@ do_RRCConnectionReestablishment(
 uint8_t
 do_RRCConnectionReestablishmentReject(
   uint8_t                    Mod_id,
-  uint8_t*                   const buffer)
+  uint8_t                   *const buffer)
 //------------------------------------------------------------------------------
 {
-
   asn_enc_rval_t enc_rval;
-
   DL_CCCH_Message_t dl_ccch_msg;
   RRCConnectionReestablishmentReject_t *rrcConnectionReestablishmentReject;
-
   memset((void *)&dl_ccch_msg,0,sizeof(DL_CCCH_Message_t));
   dl_ccch_msg.message.present           = DL_CCCH_MessageType_PR_c1;
   dl_ccch_msg.message.choice.c1.present = DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishmentReject;
   rrcConnectionReestablishmentReject    = &dl_ccch_msg.message.choice.c1.choice.rrcConnectionReestablishmentReject;
-
   // RRCConnectionReestablishmentReject
   rrcConnectionReestablishmentReject->criticalExtensions.present = RRCConnectionReestablishmentReject__criticalExtensions_PR_rrcConnectionReestablishmentReject_r8;
-
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
+  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void *)&dl_ccch_msg);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message,
-                                   (void*)&dl_ccch_msg,
+                                   NULL,
+                                   (void *)&dl_ccch_msg,
                                    buffer,
                                    100);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -2180,20 +1934,16 @@ do_RRCConnectionReestablishmentReject(
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_CCCH_Message, (void *) &dl_ccch_msg)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB, RRC_DL_CCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_ccch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_ccch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
     }
   }
 # endif
 #endif
-
   LOG_D(RRC,"RRCConnectionReestablishmentReject Encoded %zd bits (%zd bytes)\n",
         enc_rval.encoded,(enc_rval.encoded+7)/8);
-
   return((enc_rval.encoded+7)/8);
 }
 
@@ -2201,36 +1951,31 @@ do_RRCConnectionReestablishmentReject(
 uint8_t
 do_RRCConnectionReject(
   uint8_t                    Mod_id,
-  uint8_t*                   const buffer)
+  uint8_t                   *const buffer)
 //------------------------------------------------------------------------------
 {
-
   asn_enc_rval_t enc_rval;
-
   DL_CCCH_Message_t dl_ccch_msg;
   RRCConnectionReject_t *rrcConnectionReject;
-
   memset((void *)&dl_ccch_msg,0,sizeof(DL_CCCH_Message_t));
   dl_ccch_msg.message.present           = DL_CCCH_MessageType_PR_c1;
   dl_ccch_msg.message.choice.c1.present = DL_CCCH_MessageType__c1_PR_rrcConnectionReject;
   rrcConnectionReject                   = &dl_ccch_msg.message.choice.c1.choice.rrcConnectionReject;
-
   // RRCConnectionReject
   rrcConnectionReject->criticalExtensions.present = RRCConnectionReject__criticalExtensions_PR_c1;
   rrcConnectionReject->criticalExtensions.choice.c1.present = RRCConnectionReject__criticalExtensions__c1_PR_rrcConnectionReject_r8;
   /* let's put a wait time of 1s for the moment */
   rrcConnectionReject->criticalExtensions.choice.c1.choice.rrcConnectionReject_r8.waitTime = 1;
-
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
+  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void *)&dl_ccch_msg);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message,
-                                   (void*)&dl_ccch_msg,
+                                   NULL,
+                                   (void *)&dl_ccch_msg,
                                    buffer,
                                    100);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %ld)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -2239,20 +1984,16 @@ do_RRCConnectionReject(
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_CCCH_Message, (void *) &dl_ccch_msg)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB, RRC_DL_CCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_ccch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_ccch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
     }
   }
 # endif
 #endif
-
   LOG_D(RRC,"RRCConnectionReject Encoded %zd bits (%zd bytes)\n",
         enc_rval.encoded,(enc_rval.encoded+7)/8);
-
   return((enc_rval.encoded+7)/8);
 }
 
@@ -2261,36 +2002,27 @@ uint8_t do_RRCConnectionRelease(
   uint8_t                            *buffer,
   uint8_t                             Transaction_id)
 {
-
   asn_enc_rval_t enc_rval;
-
   DL_DCCH_Message_t dl_dcch_msg;
   RRCConnectionRelease_t *rrcConnectionRelease;
-
-
   memset(&dl_dcch_msg,0,sizeof(DL_DCCH_Message_t));
-
   dl_dcch_msg.message.present           = DL_DCCH_MessageType_PR_c1;
   dl_dcch_msg.message.choice.c1.present = DL_DCCH_MessageType__c1_PR_rrcConnectionRelease;
   rrcConnectionRelease                  = &dl_dcch_msg.message.choice.c1.choice.rrcConnectionRelease;
-
   // RRCConnectionRelease
   rrcConnectionRelease->rrc_TransactionIdentifier = Transaction_id;
   rrcConnectionRelease->criticalExtensions.present = RRCConnectionRelease__criticalExtensions_PR_c1;
   rrcConnectionRelease->criticalExtensions.choice.c1.present =RRCConnectionRelease__criticalExtensions__c1_PR_rrcConnectionRelease_r8 ;
-
   rrcConnectionRelease->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r8.releaseCause = ReleaseCause_other;
   rrcConnectionRelease->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r8.redirectedCarrierInfo = NULL;
   rrcConnectionRelease->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r8.idleModeMobilityControlInfo = NULL;
-
   rrcConnectionRelease->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r8.nonCriticalExtension=CALLOC(1,
       sizeof(*rrcConnectionRelease->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r8.nonCriticalExtension));
-
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_DCCH_Message,
-                                   (void*)&dl_dcch_msg,
+                                   NULL,
+                                   (void *)&dl_dcch_msg,
                                    buffer,
                                    RRC_BUF_SIZE);
-
   return((enc_rval.encoded+7)/8);
 }
 
@@ -2304,7 +2036,6 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
                            MCCH_Message_t *mcch_message,
                            MBSFNAreaConfiguration_r9_t **mbsfnAreaConfiguration)
 {
-
   asn_enc_rval_t enc_rval;
   MBSFN_SubframeConfig_t *mbsfn_SubframeConfig1;
   PMCH_Info_r9_t *pmch_Info_1;
@@ -2312,17 +2043,13 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
   // MBMS_SessionInfo_r9_t *mbms_Session_2;
   eNB_RRC_INST *rrc               = RC.rrc[Mod_id];
   rrc_eNB_carrier_data_t *carrier = &rrc->carrier[0];
- 
-
   memset(mcch_message,0,sizeof(MCCH_Message_t));
   mcch_message->message.present = MCCH_MessageType_PR_c1;
   mcch_message->message.choice.c1.present = MCCH_MessageType__c1_PR_mbsfnAreaConfiguration_r9;
   *mbsfnAreaConfiguration = &mcch_message->message.choice.c1.choice.mbsfnAreaConfiguration_r9;
-
   // Common Subframe Allocation (CommonSF-Alloc-r9)
-
   mbsfn_SubframeConfig1= CALLOC(1,sizeof(*mbsfn_SubframeConfig1));
-  memset((void*)mbsfn_SubframeConfig1,0,sizeof(*mbsfn_SubframeConfig1));
+  memset((void *)mbsfn_SubframeConfig1,0,sizeof(*mbsfn_SubframeConfig1));
   //
   mbsfn_SubframeConfig1->radioframeAllocationPeriod= MBSFN_SubframeConfig__radioframeAllocationPeriod_n4;
   mbsfn_SubframeConfig1->radioframeAllocationOffset= 1;
@@ -2333,36 +2060,33 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
 
   // CURRENTLY WE ARE SUPPORITNG ONLY ONE sf ALLOCATION
   switch (sync_area) {
-  case 0:
-    if (carrier->sib1->tdd_Config != NULL) {// pattern 001110 for TDD
-      mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=0x08<<2;// shift 2bits cuz 2last bits are unused.
-    } else { //111000
-      mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=0x38<<2;
-    }
+    case 0:
+      if (carrier->sib1->tdd_Config != NULL) {// pattern 001110 for TDD
+        mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=0x08<<2;// shift 2bits cuz 2last bits are unused.
+      } else { //111000
+        mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=0x38<<2;
+      }
 
-    break;
+      break;
 
-  case 1:
-    if (carrier->sib1->tdd_Config != NULL) {
-      mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=0x08<<2;// shift 2bits cuz 2last bits are unused.
-    } else { // 000111
-      mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=0x07<<2;
-    }
+    case 1:
+      if (carrier->sib1->tdd_Config != NULL) {
+        mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=0x08<<2;// shift 2bits cuz 2last bits are unused.
+      } else { // 000111
+        mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=0x07<<2;
+      }
 
-  default :
-    break;
+    default :
+      break;
   }
 
   ASN_SEQUENCE_ADD(&(*mbsfnAreaConfiguration)->commonSF_Alloc_r9.list,mbsfn_SubframeConfig1);
-
   //  commonSF-AllocPeriod-r9
   (*mbsfnAreaConfiguration)->commonSF_AllocPeriod_r9= MBSFNAreaConfiguration_r9__commonSF_AllocPeriod_r9_rf16;
-
   // PMCHs Information List (PMCH-InfoList-r9)
   // PMCH_1  Config
   pmch_Info_1 = CALLOC(1,sizeof(PMCH_Info_r9_t));
-  memset((void*)pmch_Info_1,0,sizeof(PMCH_Info_r9_t));
-
+  memset((void *)pmch_Info_1,0,sizeof(PMCH_Info_r9_t));
   /*
    * take the value of last mbsfn subframe in this CSA period because there is only one PMCH in this mbsfn area
    * Note: this has to be set based on the subframeAllocation and CSA
@@ -2370,7 +2094,6 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
   pmch_Info_1->pmch_Config_r9.sf_AllocEnd_r9= 3;
   pmch_Info_1->pmch_Config_r9.dataMCS_r9= 7;
   pmch_Info_1->pmch_Config_r9.mch_SchedulingPeriod_r9= PMCH_Config_r9__mch_SchedulingPeriod_r9_rf16;
-
   // MBMSs-SessionInfoList-r9
   //  pmch_Info_1->mbms_SessionInfoList_r9 = CALLOC(1,sizeof(struct MBMS_SessionInfoList_r9));
   //  Session 1
@@ -2381,7 +2104,7 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
   mbms_Session_1->tmgi_r9.plmn_Id_r9.choice.plmn_Index_r9= 1;
   // Service ID
   memset(&mbms_Session_1->tmgi_r9.serviceId_r9,0,sizeof(OCTET_STRING_t));// need to check
-  OCTET_STRING_fromBuf(&mbms_Session_1->tmgi_r9.serviceId_r9,(const char*)&TMGI[2],3);
+  OCTET_STRING_fromBuf(&mbms_Session_1->tmgi_r9.serviceId_r9,(const char *)&TMGI[2],3);
   // Session ID is still missing here, it can be used as an rab id or mrb id
   mbms_Session_1->sessionId_r9 = CALLOC(1,sizeof(OCTET_STRING_t));
   mbms_Session_1->sessionId_r9->buf= MALLOC(1);
@@ -2390,7 +2113,6 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
   // Logical Channel ID
   mbms_Session_1->logicalChannelIdentity_r9= MTCH;
   ASN_SEQUENCE_ADD(&pmch_Info_1->mbms_SessionInfoList_r9.list,mbms_Session_1);
-
   /*    //  Session 2
   //mbms_Session_2 = CALLOC(1,sizeof(MBMS_SessionInfo_r9_t));
   memset(mbms_Session_2,0,sizeof(MBMS_SessionInfo_r9_t));
@@ -2409,17 +2131,16 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
   ASN_SEQUENCE_ADD(&pmch_Info_1->mbms_SessionInfoList_r9.list,mbms_Session_2);
   */
   ASN_SEQUENCE_ADD(&(*mbsfnAreaConfiguration)->pmch_InfoList_r9.list,pmch_Info_1);
-
 #ifdef XER_PRINT
-  xer_fprint(stdout,&asn_DEF_MCCH_Message,(void*)mcch_message);
+  xer_fprint(stdout,&asn_DEF_MCCH_Message,(void *)mcch_message);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_MCCH_Message,
-                                   (void*)mcch_message,
+                                   NULL,
+                                   (void *)mcch_message,
                                    buffer,
                                    100);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -2428,17 +2149,14 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_MCCH_Message, (void *) &mcch_message)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB, RRC_DL_MCCH, message_string_size);
       msg_p->ittiMsg.rrc_dl_mcch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_mcch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
     }
   }
 # endif
 #endif
-
   LOG_D(RRC,"[eNB] MCCH Message Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
 
   if (enc_rval.encoded==-1) {
@@ -2452,22 +2170,16 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
 
 uint8_t do_MeasurementReport(uint8_t Mod_id, uint8_t *buffer,int measid,int phy_id,long rsrp_s,long rsrq_s,long rsrp_t,long rsrq_t)
 {
-
   asn_enc_rval_t enc_rval;
-
   UL_DCCH_Message_t ul_dcch_msg;
-
   MeasurementReport_t  *measurementReport;
-
   ul_dcch_msg.message.present                     = UL_DCCH_MessageType_PR_c1;
   ul_dcch_msg.message.choice.c1.present           = UL_DCCH_MessageType__c1_PR_measurementReport;
   measurementReport            = &ul_dcch_msg.message.choice.c1.choice.measurementReport;
-
   measurementReport->criticalExtensions.present=MeasurementReport__criticalExtensions_PR_c1;
   measurementReport->criticalExtensions.choice.c1.present=MeasurementReport__criticalExtensions__c1_PR_measurementReport_r8;
   measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.nonCriticalExtension=CALLOC(1,
       sizeof(*measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.nonCriticalExtension));
-
   measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults.measId=measid;
 #if defined(Rel10) || defined(Rel14)
   measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults.measResultPCell.rsrpResult=rsrp_s;
@@ -2479,24 +2191,17 @@ uint8_t do_MeasurementReport(uint8_t Mod_id, uint8_t *buffer,int measid,int phy_
   measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults.measResultNeighCells=CALLOC(1,
       sizeof(*measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults.measResultNeighCells));
   measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults.measResultNeighCells->present=MeasResults__measResultNeighCells_PR_measResultListEUTRA;
-
   MeasResultListEUTRA_t  *measResultListEUTRA2;
   measResultListEUTRA2 = CALLOC(1,sizeof(*measResultListEUTRA2));
-
   struct MeasResultEUTRA *measresulteutra2;
   measresulteutra2 = CALLOC(1,sizeof(*measresulteutra2));
   measresulteutra2->physCellId=phy_id;//1;
-
   struct MeasResultEUTRA__cgi_Info *measresult_cgi2;
   measresult_cgi2 = CALLOC(1,sizeof(*measresult_cgi2));
-
   memset(&measresult_cgi2->cellGlobalId.plmn_Identity,0,sizeof(measresult_cgi2->cellGlobalId.plmn_Identity));
-
   // measresult_cgi2->cellGlobalId.plmn_Identity.mcc=CALLOC(1,sizeof(measresult_cgi2->cellGlobalId.plmn_Identity.mcc));
   measresult_cgi2->cellGlobalId.plmn_Identity.mcc = CALLOC(1, sizeof(*measresult_cgi2->cellGlobalId.plmn_Identity.mcc));
-
   asn_set_empty(&measresult_cgi2->cellGlobalId.plmn_Identity.mcc->list);//.size=0;
-
   MCC_MNC_Digit_t dummy;
   dummy=2;
   ASN_SEQUENCE_ADD(&measresult_cgi2->cellGlobalId.plmn_Identity.mcc->list,&dummy);
@@ -2504,14 +2209,12 @@ uint8_t do_MeasurementReport(uint8_t Mod_id, uint8_t *buffer,int measid,int phy_
   ASN_SEQUENCE_ADD(&measresult_cgi2->cellGlobalId.plmn_Identity.mcc->list,&dummy);
   dummy=2;
   ASN_SEQUENCE_ADD(&measresult_cgi2->cellGlobalId.plmn_Identity.mcc->list,&dummy);
-
   measresult_cgi2->cellGlobalId.plmn_Identity.mnc.list.size=0;
   measresult_cgi2->cellGlobalId.plmn_Identity.mnc.list.count=0;
   dummy=8;
   ASN_SEQUENCE_ADD(&measresult_cgi2->cellGlobalId.plmn_Identity.mnc.list,&dummy);
   dummy=0;
   ASN_SEQUENCE_ADD(&measresult_cgi2->cellGlobalId.plmn_Identity.mnc.list,&dummy);
-
   measresult_cgi2->cellGlobalId.cellIdentity.buf=MALLOC(8);
   measresult_cgi2->cellGlobalId.cellIdentity.buf[0]=0x01;
   measresult_cgi2->cellGlobalId.cellIdentity.buf[1]=0x48;
@@ -2519,39 +2222,27 @@ uint8_t do_MeasurementReport(uint8_t Mod_id, uint8_t *buffer,int measid,int phy_
   measresult_cgi2->cellGlobalId.cellIdentity.buf[3]=0x03;
   measresult_cgi2->cellGlobalId.cellIdentity.size=4;
   measresult_cgi2->cellGlobalId.cellIdentity.bits_unused=4;
-
   measresult_cgi2->trackingAreaCode.buf = MALLOC(2);
   measresult_cgi2->trackingAreaCode.buf[0]=0x00;
   measresult_cgi2->trackingAreaCode.buf[1]=0x10;
   measresult_cgi2->trackingAreaCode.size=2;
   measresult_cgi2->trackingAreaCode.bits_unused=0;
-
-
   measresulteutra2->cgi_Info=measresult_cgi2;
-
   struct MeasResultEUTRA__measResult meas2;
   //    int rsrp_va=10;
-
   meas2.rsrpResult=&(rsrp_t);
   //&rsrp_va;
   meas2.rsrqResult=&(rsrq_t);
-
   measresulteutra2->measResult=meas2;
-
   ASN_SEQUENCE_ADD(&measResultListEUTRA2->list,measresulteutra2);
-
   measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults.measResultNeighCells->choice.measResultListEUTRA=*(measResultListEUTRA2);
-
   enc_rval = uper_encode_to_buffer(&asn_DEF_UL_DCCH_Message,
-                                   (void*)&ul_dcch_msg,
+                                   NULL,
+                                   (void *)&ul_dcch_msg,
                                    buffer,
                                    100);
-
-
-
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -2560,30 +2251,23 @@ uint8_t do_MeasurementReport(uint8_t Mod_id, uint8_t *buffer,int measid,int phy_
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_DCCH_Message, (void *) &ul_dcch_msg)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_DL_DCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_dcch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_dcch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, NB_eNB_INST + Mod_id, msg_p);
     }
   }
 # endif
 #endif
-
   printf("Measurement Report Encoded %zu bits (%zu bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
-
   return((enc_rval.encoded+7)/8);
 }
 
 uint8_t do_DLInformationTransfer(uint8_t Mod_id, uint8_t **buffer, uint8_t transaction_id, uint32_t pdu_length, uint8_t *pdu_buffer)
 {
   ssize_t encoded;
-
   DL_DCCH_Message_t dl_dcch_msg;
-
   memset(&dl_dcch_msg, 0, sizeof(DL_DCCH_Message_t));
-
   dl_dcch_msg.message.present           = DL_DCCH_MessageType_PR_c1;
   dl_dcch_msg.message.choice.c1.present = DL_DCCH_MessageType__c1_PR_dlInformationTransfer;
   dl_dcch_msg.message.choice.c1.choice.dlInformationTransfer.rrc_TransactionIdentifier = transaction_id;
@@ -2593,12 +2277,10 @@ uint8_t do_DLInformationTransfer(uint8_t Mod_id, uint8_t **buffer, uint8_t trans
     DLInformationTransfer_r8_IEs__dedicatedInfoType_PR_dedicatedInfoNAS;
   dl_dcch_msg.message.choice.c1.choice.dlInformationTransfer.criticalExtensions.choice.c1.choice.dlInformationTransfer_r8.dedicatedInfoType.choice.dedicatedInfoNAS.size = pdu_length;
   dl_dcch_msg.message.choice.c1.choice.dlInformationTransfer.criticalExtensions.choice.c1.choice.dlInformationTransfer_r8.dedicatedInfoType.choice.dedicatedInfoNAS.buf = pdu_buffer;
-
-  encoded = uper_encode_to_new_buffer (&asn_DEF_DL_DCCH_Message, NULL, (void*) &dl_dcch_msg, (void **) buffer);
-
+  encoded = uper_encode_to_new_buffer (&asn_DEF_DL_DCCH_Message, NULL, (void *) &dl_dcch_msg, (void **) buffer);
   /*
-#if defined(ENABLE_ITTI)
-# if !defined(DISABLE_XER_SPRINT)
+  #if defined(ENABLE_ITTI)
+  # if !defined(DISABLE_XER_SPRINT)
   {
     char        message_string[10000];
     size_t      message_string_size;
@@ -2613,10 +2295,9 @@ uint8_t do_DLInformationTransfer(uint8_t Mod_id, uint8_t **buffer, uint8_t trans
       itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
     }
   }
-# endif
-#endif
+  # endif
+  #endif
   */
-
   return encoded;
 }
 
@@ -2624,20 +2305,15 @@ uint8_t do_Paging(uint8_t Mod_id, uint8_t *buffer, ue_paging_identity_t ue_pagin
 {
   LOG_D(RRC, "[eNB %d] do_Paging start\n", Mod_id);
   asn_enc_rval_t enc_rval;
-
   PCCH_Message_t pcch_msg;
   PagingRecord_t *paging_record_p;
   int j;
-
   pcch_msg.message.present           = PCCH_MessageType_PR_c1;
   pcch_msg.message.choice.c1.present = PCCH_MessageType__c1_PR_paging;
-
   pcch_msg.message.choice.c1.choice.paging.pagingRecordList = CALLOC(1,sizeof(*pcch_msg.message.choice.c1.choice.paging.pagingRecordList));
-
   pcch_msg.message.choice.c1.choice.paging.systemInfoModification = NULL;
   pcch_msg.message.choice.c1.choice.paging.etws_Indication = NULL;
   pcch_msg.message.choice.c1.choice.paging.nonCriticalExtension = NULL;
-
   asn_set_empty(&pcch_msg.message.choice.c1.choice.paging.pagingRecordList->list);
   pcch_msg.message.choice.c1.choice.paging.pagingRecordList->list.count = 0;
 
@@ -2655,10 +2331,11 @@ uint8_t do_Paging(uint8_t Mod_id, uint8_t *buffer, ue_paging_identity_t ue_pagin
                              &paging_record_p->ue_Identity.choice.s_TMSI.mmec);
     paging_record_p->ue_Identity.choice.s_TMSI.mmec.bits_unused = 0;
     M_TMSI_TO_OCTET_STRING(ue_paging_identity.choice.s_tmsi.m_tmsi,
-                             &paging_record_p->ue_Identity.choice.s_TMSI.m_TMSI);
+                           &paging_record_p->ue_Identity.choice.s_TMSI.m_TMSI);
     paging_record_p->ue_Identity.choice.s_TMSI.m_TMSI.bits_unused = 0;
   } else if (ue_paging_identity.presenceMask == UE_PAGING_IDENTITY_imsi) {
     IMSI_Digit_t imsi_digit[21];
+
     for (j = 0; j< ue_paging_identity.choice.imsi.length; j++) {  /* IMSI size */
       imsi_digit[j] = (IMSI_Digit_t)ue_paging_identity.choice.imsi.buffer[j];
       ASN_SEQUENCE_ADD(&paging_record_p->ue_Identity.choice.imsi.list, &imsi_digit[j]);
@@ -2671,30 +2348,25 @@ uint8_t do_Paging(uint8_t Mod_id, uint8_t *buffer, ue_paging_identity_t ue_pagin
   } else {
     paging_record_p->cn_Domain = PagingRecord__cn_Domain_cs;
   }
+
   /* add to list */
   ASN_SEQUENCE_ADD(&pcch_msg.message.choice.c1.choice.paging.pagingRecordList->list, paging_record_p);
   LOG_D(RRC, "[eNB %d] do_Paging paging_record: cn_Domain %ld, ue_paging_identity.presenceMask %d, PagingRecordList.count %d\n",
-          Mod_id, paging_record_p->cn_Domain, ue_paging_identity.presenceMask, pcch_msg.message.choice.c1.choice.paging.pagingRecordList->list.count);
-
-  enc_rval = uper_encode_to_buffer(&asn_DEF_PCCH_Message, (void*)&pcch_msg, buffer, RRC_BUF_SIZE);
-
+        Mod_id, paging_record_p->cn_Domain, ue_paging_identity.presenceMask, pcch_msg.message.choice.c1.choice.paging.pagingRecordList->list.count);
+  enc_rval = uper_encode_to_buffer(&asn_DEF_PCCH_Message, NULL, (void *)&pcch_msg, buffer, RRC_BUF_SIZE);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_PCCH_Message, (void*)&pcch_msg);
+  xer_fprint(stdout, &asn_DEF_PCCH_Message, (void *)&pcch_msg);
 #endif
-
   return((enc_rval.encoded+7)/8);
 }
 
 uint8_t do_ULInformationTransfer(uint8_t **buffer, uint32_t pdu_length, uint8_t *pdu_buffer)
 {
   ssize_t encoded;
-
   UL_DCCH_Message_t ul_dcch_msg;
-
   memset(&ul_dcch_msg, 0, sizeof(UL_DCCH_Message_t));
-
   ul_dcch_msg.message.present           = UL_DCCH_MessageType_PR_c1;
   ul_dcch_msg.message.choice.c1.present = UL_DCCH_MessageType__c1_PR_ulInformationTransfer;
   ul_dcch_msg.message.choice.c1.choice.ulInformationTransfer.criticalExtensions.present = ULInformationTransfer__criticalExtensions_PR_c1;
@@ -2703,9 +2375,7 @@ uint8_t do_ULInformationTransfer(uint8_t **buffer, uint32_t pdu_length, uint8_t
     ULInformationTransfer_r8_IEs__dedicatedInfoType_PR_dedicatedInfoNAS;
   ul_dcch_msg.message.choice.c1.choice.ulInformationTransfer.criticalExtensions.choice.c1.choice.ulInformationTransfer_r8.dedicatedInfoType.choice.dedicatedInfoNAS.size = pdu_length;
   ul_dcch_msg.message.choice.c1.choice.ulInformationTransfer.criticalExtensions.choice.c1.choice.ulInformationTransfer_r8.dedicatedInfoType.choice.dedicatedInfoNAS.buf = pdu_buffer;
-
-  encoded = uper_encode_to_new_buffer (&asn_DEF_UL_DCCH_Message, NULL, (void*) &ul_dcch_msg, (void **) buffer);
-
+  encoded = uper_encode_to_new_buffer (&asn_DEF_UL_DCCH_Message, NULL, (void *) &ul_dcch_msg, (void **) buffer);
   return encoded;
 }
 
@@ -2715,21 +2385,15 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
   static SupportedBandEUTRA_t Bandlist[4]; // the macro ASN_SEQUENCE_ADD() does not copy the source, but only stores a reference to it
   static InterFreqBandInfo_t InterFreqBandInfo[4][4]; // the macro ASN_SEQUENCE_ADD() does not copy the source, but only stores a reference to it
   static BandInfoEUTRA_t BandInfoEUTRA[4]; // the macro ASN_SEQUENCE_ADD() does not copy the source, but only stores a reference to it
-
   asn_enc_rval_t enc_rval;
   asn_dec_rval_t dec_rval;
-
   long maxNumberROHC_ContextSessions = PDCP_Parameters__maxNumberROHC_ContextSessions_cs16;
   int i;
-
   UE_EUTRA_Capability_t *UE_EUTRA_Capability;
   char UE_EUTRA_Capability_xer[8192];
   size_t size;
-
   LOG_I(RRC,"Allocating %zu bytes for UE_EUTRA_Capability\n",sizeof(*UE_EUTRA_Capability));
-
   UE_EUTRA_Capability = CALLOC(1, sizeof(*UE_EUTRA_Capability));
-
   assert(UE_EUTRA_Capability);
 
   if (!UE_EUTRA_Capability_xer_fname)  {
@@ -2741,10 +2405,8 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
     Bandlist[2].halfDuplex = 0;
     Bandlist[3].bandEUTRA  = 38;  // UL/DL 2570-2620, TDD
     Bandlist[3].halfDuplex = 0;
-
-    memset((void*)InterFreqBandInfo, 0, sizeof(InterFreqBandInfo));
-    memset((void*)BandInfoEUTRA, 0, sizeof(BandInfoEUTRA));
-
+    memset((void *)InterFreqBandInfo, 0, sizeof(InterFreqBandInfo));
+    memset((void *)BandInfoEUTRA, 0, sizeof(BandInfoEUTRA));
     InterFreqBandInfo[0][0].interFreqNeedForGaps = 0;
     InterFreqBandInfo[0][1].interFreqNeedForGaps = 1;
     InterFreqBandInfo[0][2].interFreqNeedForGaps = 1;
@@ -2761,8 +2423,6 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
     InterFreqBandInfo[3][1].interFreqNeedForGaps = 1;
     InterFreqBandInfo[3][2].interFreqNeedForGaps = 1;
     InterFreqBandInfo[3][3].interFreqNeedForGaps = 0;
-
-
     UE_EUTRA_Capability->accessStratumRelease = 0;//AccessStratumRelease_rel8;
     UE_EUTRA_Capability->ue_Category          = 4;
     UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0001=0;
@@ -2774,41 +2434,34 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
     UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0102=0;
     UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0103=0;
     UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0104=0;
-
     UE_EUTRA_Capability->pdcp_Parameters.maxNumberROHC_ContextSessions = &maxNumberROHC_ContextSessions;
-
     UE_EUTRA_Capability->phyLayerParameters.ue_TxAntennaSelectionSupported = 0;
     UE_EUTRA_Capability->phyLayerParameters.ue_SpecificRefSigsSupported    = 0;
     UE_EUTRA_Capability->rf_Parameters.supportedBandListEUTRA.list.count                          = 0;
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->rf_Parameters.supportedBandListEUTRA.list,(void*)&Bandlist[0]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->rf_Parameters.supportedBandListEUTRA.list,(void*)&Bandlist[1]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->rf_Parameters.supportedBandListEUTRA.list,(void*)&Bandlist[2]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->rf_Parameters.supportedBandListEUTRA.list,(void*)&Bandlist[3]);
-
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list,(void*)&BandInfoEUTRA[0]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list,(void*)&BandInfoEUTRA[1]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list,(void*)&BandInfoEUTRA[2]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list,(void*)&BandInfoEUTRA[3]);
-
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[0]->interFreqBandList.list,(void*)&InterFreqBandInfo[0][0]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[0]->interFreqBandList.list,(void*)&InterFreqBandInfo[0][1]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[0]->interFreqBandList.list,(void*)&InterFreqBandInfo[0][2]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[0]->interFreqBandList.list,(void*)&InterFreqBandInfo[0][3]);
-
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[1]->interFreqBandList.list,(void*)&InterFreqBandInfo[1][0]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[1]->interFreqBandList.list,(void*)&InterFreqBandInfo[1][1]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[1]->interFreqBandList.list,(void*)&InterFreqBandInfo[1][2]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[1]->interFreqBandList.list,(void*)&InterFreqBandInfo[1][3]);
-
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[2]->interFreqBandList.list,(void*)&InterFreqBandInfo[2][0]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[2]->interFreqBandList.list,(void*)&InterFreqBandInfo[2][1]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[2]->interFreqBandList.list,(void*)&InterFreqBandInfo[2][2]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[2]->interFreqBandList.list,(void*)&InterFreqBandInfo[2][3]);
-
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[3]->interFreqBandList.list,(void*)&InterFreqBandInfo[3][0]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[3]->interFreqBandList.list,(void*)&InterFreqBandInfo[3][1]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[3]->interFreqBandList.list,(void*)&InterFreqBandInfo[3][2]);
-    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[3]->interFreqBandList.list,(void*)&InterFreqBandInfo[3][3]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->rf_Parameters.supportedBandListEUTRA.list,(void *)&Bandlist[0]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->rf_Parameters.supportedBandListEUTRA.list,(void *)&Bandlist[1]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->rf_Parameters.supportedBandListEUTRA.list,(void *)&Bandlist[2]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->rf_Parameters.supportedBandListEUTRA.list,(void *)&Bandlist[3]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list,(void *)&BandInfoEUTRA[0]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list,(void *)&BandInfoEUTRA[1]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list,(void *)&BandInfoEUTRA[2]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list,(void *)&BandInfoEUTRA[3]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[0]->interFreqBandList.list,(void *)&InterFreqBandInfo[0][0]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[0]->interFreqBandList.list,(void *)&InterFreqBandInfo[0][1]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[0]->interFreqBandList.list,(void *)&InterFreqBandInfo[0][2]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[0]->interFreqBandList.list,(void *)&InterFreqBandInfo[0][3]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[1]->interFreqBandList.list,(void *)&InterFreqBandInfo[1][0]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[1]->interFreqBandList.list,(void *)&InterFreqBandInfo[1][1]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[1]->interFreqBandList.list,(void *)&InterFreqBandInfo[1][2]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[1]->interFreqBandList.list,(void *)&InterFreqBandInfo[1][3]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[2]->interFreqBandList.list,(void *)&InterFreqBandInfo[2][0]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[2]->interFreqBandList.list,(void *)&InterFreqBandInfo[2][1]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[2]->interFreqBandList.list,(void *)&InterFreqBandInfo[2][2]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[2]->interFreqBandList.list,(void *)&InterFreqBandInfo[2][3]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[3]->interFreqBandList.list,(void *)&InterFreqBandInfo[3][0]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[3]->interFreqBandList.list,(void *)&InterFreqBandInfo[3][1]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[3]->interFreqBandList.list,(void *)&InterFreqBandInfo[3][2]);
+    ASN_SEQUENCE_ADD(&UE_EUTRA_Capability->measParameters.bandListEUTRA.list.array[3]->interFreqBandList.list,(void *)&InterFreqBandInfo[3][3]);
 
     // UE_EUTRA_Capability->measParameters.bandListEUTRA.list.count                         = 0;  // no measurements on other bands
     // UE_EUTRA_Capability->featureGroupIndicators  // null
@@ -2828,8 +2481,7 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
 
     // UE_EUTRA_Capability->interRAT_Parameters     // null
   } else {
-
-    FILE* f = fopen(UE_EUTRA_Capability_xer_fname, "r");
+    FILE *f = fopen(UE_EUTRA_Capability_xer_fname, "r");
     assert(f);
     size = fread(UE_EUTRA_Capability_xer, 1, sizeof UE_EUTRA_Capability_xer, f);
     fclose(f);
@@ -2840,7 +2492,7 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
       return(NULL);
     }
 
-    dec_rval = xer_decode(0, &asn_DEF_UE_EUTRA_Capability, (void*)UE_EUTRA_Capability, UE_EUTRA_Capability_xer, size);
+    dec_rval = xer_decode(0, &asn_DEF_UE_EUTRA_Capability, (void *)UE_EUTRA_Capability, UE_EUTRA_Capability_xer, size);
     assert(dec_rval.code == RC_OK);
   }
 
@@ -2849,20 +2501,18 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
   xer_fprint(stdout,&asn_DEF_UE_EUTRA_Capability,(void *)UE_EUTRA_Capability);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_UE_EUTRA_Capability,
-                                   (void*)UE_EUTRA_Capability,
+                                   NULL,
+                                   (void *)UE_EUTRA_Capability,
                                    &UECapability.sdu[0],
                                    MAX_UE_CAPABILITY_SIZE);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
-
 #if defined(ENABLE_ITTI)
 # if defined(DISABLE_XER_SPRINT)
   {
     MessageDef *msg_p;
-
     msg_p = itti_alloc_new_message (TASK_RRC_UE, RRC_UE_EUTRA_CAPABILITY);
     memcpy (&msg_p->ittiMsg, (void *) UE_EUTRA_Capability, sizeof(RrcUeEutraCapability));
-
     itti_send_msg_to_task (TASK_UNKNOWN, NB_eNB_INST, msg_p);
   }
 # else
@@ -2872,17 +2522,14 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UE_EUTRA_Capability, (void *)UE_EUTRA_Capability)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_UE_EUTRA_CAPABILITY, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_ue_eutra_capability.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_ue_eutra_capability.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, msg_p);
     }
   }
 # endif
 #endif
-
   UECapability.sdu_size = (enc_rval.encoded + 7) / 8;
   LOG_I(PHY, "[RRC]UE Capability encoded, %d bytes (%zd bits)\n",
         UECapability.sdu_size, enc_rval.encoded + 7);
@@ -2897,7 +2544,6 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
     LOG_D(PHY, "[RRC]UE Capability encoded, %s\n", sdu);
     free(sdu);
   }
-
   return(&UECapability);
 }
 
diff --git a/openair2/RRC/LITE/MESSAGES/asn1_msg_NB_IoT.c b/openair2/RRC/LITE/MESSAGES/asn1_msg_NB_IoT.c
index 43721bbfd55f0ee6d03f2c90e618dcf92571e63d..4b152bac2fae6a0ed780f95c1d29cd3a06dd5c35 100644
--- a/openair2/RRC/LITE/MESSAGES/asn1_msg_NB_IoT.c
+++ b/openair2/RRC/LITE/MESSAGES/asn1_msg_NB_IoT.c
@@ -78,14 +78,13 @@
 
 /*do_MIB_NB_NB_IoT*/
 uint8_t do_MIB_NB_IoT(
-		rrc_eNB_carrier_data_NB_IoT_t *carrier,
-		uint16_t N_RB_DL,//may not needed--> for NB_IoT only 1 PRB is used
-		uint32_t frame,
-    uint32_t hyper_frame)
+  rrc_eNB_carrier_data_NB_IoT_t *carrier,
+  uint16_t N_RB_DL,//may not needed--> for NB_IoT only 1 PRB is used
+  uint32_t frame,
+  uint32_t hyper_frame)
 {
   asn_enc_rval_t enc_rval;
   BCCH_BCH_Message_NB_t *mib_NB_IoT = &(carrier->mib_NB_IoT);
-
   /*
    * systemFrameNumber-MSB: (TS 36.331 pag 576)
    * define the 4 MSB of the SFN (10 bits). The last significant 6 bits will be acquired implicitly by decoding the NPBCH
@@ -98,45 +97,39 @@ uint8_t do_MIB_NB_IoT(
    *
    * NOTE: in OAI never modify the SIB messages!!??
    */
-
   //XXX check if correct the bit assignment
   uint8_t sfn_MSB = (uint8_t)((frame>>6) & 0x0f); // all the 4 bits are set to 1
   uint8_t hsfn_LSB = (uint8_t)(hyper_frame & 0x03); //2 bits set to 1 (0x3 = 0011)
   uint16_t spare=0; //11 bits --> use uint16
-
   mib_NB_IoT->message.systemFrameNumber_MSB_r13.buf = &sfn_MSB;
   mib_NB_IoT->message.systemFrameNumber_MSB_r13.size = 1; //if expressed in byte
   mib_NB_IoT->message.systemFrameNumber_MSB_r13.bits_unused = 4; //is byte based (so how many bits you don't use of the 8 bits of a bite
-
   mib_NB_IoT->message.hyperSFN_LSB_r13.buf= &hsfn_LSB;
   mib_NB_IoT->message.hyperSFN_LSB_r13.size= 1;
   mib_NB_IoT->message.hyperSFN_LSB_r13.bits_unused = 6;
-
   //XXX to be set??
   mib_NB_IoT->message.spare.buf = (uint8_t *)&spare;
   mib_NB_IoT->message.spare.size = 2;
   mib_NB_IoT->message.spare.bits_unused = 5;
-
   //decide how to set it
   mib_NB_IoT->message.schedulingInfoSIB1_r13 =11; //see TS 36.213-->tables 16.4.1.3-3 ecc...
   mib_NB_IoT->message.systemInfoValueTag_r13= 0;
   mib_NB_IoT->message.ab_Enabled_r13 = 0;
-
   //to be decided
   mib_NB_IoT->message.operationModeInfo_r13.present = MasterInformationBlock_NB__operationModeInfo_r13_PR_inband_SamePCI_r13;
   mib_NB_IoT->message.operationModeInfo_r13.choice.inband_SamePCI_r13.eutra_CRS_SequenceInfo_r13 = 0;
-
   printf("[MIB] Initialization of frame information,sfn_MSB %x, hsfn_LSB %x\n",
          (uint32_t)sfn_MSB,
-		 (uint32_t)hsfn_LSB);
-
+         (uint32_t)hsfn_LSB);
   enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_BCH_Message_NB,
-                                   (void*)mib_NB_IoT,
+                                   NULL,
+                                   (void *)mib_NB_IoT,
                                    carrier->MIB_NB_IoT,
                                    100);
+
   if(enc_rval.encoded <= 0) {
-      LOG_F(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
+    LOG_F(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
   }
 
   if (enc_rval.encoded==-1) {
@@ -144,63 +137,48 @@ uint8_t do_MIB_NB_IoT(
   }
 
   return((enc_rval.encoded+7)/8);
-
 }
 
 /*do_SIB1_NB*/
 uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
-				rrc_eNB_carrier_data_NB_IoT_t *carrier,
-                NbIoTRrcConfigurationReq *configuration,
-				uint32_t frame
-               )
+                       rrc_eNB_carrier_data_NB_IoT_t *carrier,
+                       NbIoTRrcConfigurationReq *configuration,
+                       uint32_t frame
+                      )
 {
   BCCH_DL_SCH_Message_NB_t *bcch_message= &(carrier->siblock1_NB_IoT);
   SystemInformationBlockType1_NB_t **sib1_NB_IoT= &(carrier->sib1_NB_IoT);
-  
-
   asn_enc_rval_t enc_rval;
-
   PLMN_IdentityInfo_NB_r13_t PLMN_identity_info_NB_IoT;
   MCC_MNC_Digit_t dummy_mcc[3],dummy_mnc[3];
   SchedulingInfo_NB_r13_t *schedulingInfo_NB_IoT;
   SIB_Type_NB_r13_t *sib_type_NB_IoT;
-
-
-  long* attachWithoutPDN_Connectivity = NULL;
+  long *attachWithoutPDN_Connectivity = NULL;
   attachWithoutPDN_Connectivity = CALLOC(1,sizeof(long));
   long *nrs_CRS_PowerOffset=NULL;
   nrs_CRS_PowerOffset = CALLOC(1, sizeof(long));
   long *eutraControlRegionSize=NULL; //this parameter should be set only if we are considering in-band operating mode (samePCI or differentPCI)
-   eutraControlRegionSize = CALLOC(1,sizeof(long));
+  eutraControlRegionSize = CALLOC(1,sizeof(long));
   long systemInfoValueTagSI = 0;
-
   memset(bcch_message,0,sizeof(BCCH_DL_SCH_Message_NB_t));
   bcch_message->message.present = BCCH_DL_SCH_MessageType_NB_PR_c1;
   bcch_message->message.choice.c1.present = BCCH_DL_SCH_MessageType_NB__c1_PR_systemInformationBlockType1_r13;
-
   //allocation
   *sib1_NB_IoT = &bcch_message->message.choice.c1.choice.systemInformationBlockType1_r13;
-
-
   /*TS 36.331 v14.2.0 pag 589
    * hyperSFN-MSB
    * Indicates the 8 most significant bits of the hyper-SFN. Together with the hyper-LSB in MIB-NB the complete HSFN is build up
    */
   //FIXME see if correct
   uint8_t hyperSFN_MSB = (uint8_t) ((frame>>2)& 0xff);
-
   //XXX to be checked
   (*sib1_NB_IoT)->hyperSFN_MSB_r13.buf = &hyperSFN_MSB;
   (*sib1_NB_IoT)->hyperSFN_MSB_r13.size = 1;
   (*sib1_NB_IoT)->hyperSFN_MSB_r13.bits_unused = 0;
-
   memset(&PLMN_identity_info_NB_IoT,0,sizeof(PLMN_IdentityInfo_NB_r13_t));
-
   PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc = CALLOC(1,sizeof(*PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc));
   memset(PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc,0,sizeof(*PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc));
-
   asn_set_empty(&PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc->list);//.size=0;
-
   //left as it is???
 #if defined(ENABLE_ITTI)
   dummy_mcc[0] = (configuration->mcc / 100) % 10;
@@ -214,11 +192,8 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
   ASN_SEQUENCE_ADD(&PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc->list,&dummy_mcc[0]);
   ASN_SEQUENCE_ADD(&PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc->list,&dummy_mcc[1]);
   ASN_SEQUENCE_ADD(&PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc->list,&dummy_mcc[2]);
-
   PLMN_identity_info_NB_IoT.plmn_Identity_r13.mnc.list.size=0;
   PLMN_identity_info_NB_IoT.plmn_Identity_r13.mnc.list.count=0;
-
-
 #if defined(ENABLE_ITTI)
 
   if (configuration->mnc >= 100) {
@@ -251,15 +226,11 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
 
   //still set to "notReserved" as in the previous case
   PLMN_identity_info_NB_IoT.cellReservedForOperatorUse_r13=PLMN_IdentityInfo_NB_r13__cellReservedForOperatorUse_r13_notReserved;
-
   *attachWithoutPDN_Connectivity = 0;
   PLMN_identity_info_NB_IoT.attachWithoutPDN_Connectivity_r13 = attachWithoutPDN_Connectivity;
-
   ASN_SEQUENCE_ADD(&(*sib1_NB_IoT)->cellAccessRelatedInfo_r13.plmn_IdentityList_r13.list,&PLMN_identity_info_NB_IoT);
-
   // 16 bits = 2 byte
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.trackingAreaCode_r13.buf = MALLOC(2); //MALLOC works in byte
-
   //lefts as it is?
 #if defined(ENABLE_ITTI)
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.trackingAreaCode_r13.buf[0] = (configuration->tac >> 8) & 0xff;
@@ -270,7 +241,6 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
 #endif
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.trackingAreaCode_r13.size=2;
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.trackingAreaCode_r13.bits_unused=0;
-
   // 28 bits --> i have to use 32 bits = 4 byte
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.cellIdentity_r13.buf = MALLOC(8); // why allocate 8 byte?
 #if defined(ENABLE_ITTI)
@@ -286,20 +256,14 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
 #endif
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.cellIdentity_r13.size=4;
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.cellIdentity_r13.bits_unused=4;
-
   //Still set to "notBarred" as in the previous case
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.cellBarred_r13=SystemInformationBlockType1_NB__cellAccessRelatedInfo_r13__cellBarred_r13_notBarred;
-
   //Still Set to "notAllowed" like in the previous case
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.intraFreqReselection_r13=SystemInformationBlockType1_NB__cellAccessRelatedInfo_r13__intraFreqReselection_r13_notAllowed;
-
-
   (*sib1_NB_IoT)->cellSelectionInfo_r13.q_RxLevMin_r13=-65; //which value?? TS 36.331 V14.2.1 pag. 589
   (*sib1_NB_IoT)->cellSelectionInfo_r13.q_QualMin_r13 = 0; //FIXME new parameter for SIB1-NB, not present in SIB1 (for cell reselection but if not used the UE should apply the default value)
-
   (*sib1_NB_IoT)->p_Max_r13 = CALLOC(1, sizeof(P_Max_t));
   *((*sib1_NB_IoT)->p_Max_r13) = 23;
-
   //FIXME
   (*sib1_NB_IoT)->freqBandIndicator_r13 =
 #if defined(ENABLE_ITTI)
@@ -307,70 +271,54 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
 #else
     5; //if not configured we use band 5 (UL: 824 MHz - 849MHz / DL: 869 MHz - 894 MHz  FDD mode)
 #endif
-
-    //OPTIONAL new parameters, to be used?
-      /*
-       * freqBandInfo_r13
-       * multiBandInfoList_r13
-       * nrs_CRS_PowerOffset_r13
-       * sib1_NB_IoT->downlinkBitmap_r13.choice.subframePattern10_r13 =(is a BIT_STRING)
-       */
-
-
-   (*sib1_NB_IoT)->downlinkBitmap_r13 = CALLOC(1, sizeof(struct DL_Bitmap_NB_r13));
-   ((*sib1_NB_IoT)->downlinkBitmap_r13)->present= DL_Bitmap_NB_r13_PR_NOTHING;
-
-   *eutraControlRegionSize = 1;
-   (*sib1_NB_IoT)->eutraControlRegionSize_r13 = eutraControlRegionSize;
-
-
-   *nrs_CRS_PowerOffset= 0;
-   (*sib1_NB_IoT)->nrs_CRS_PowerOffset_r13 = nrs_CRS_PowerOffset;
-
-   schedulingInfo_NB_IoT = (SchedulingInfo_NB_r13_t*) malloc (3*sizeof(SchedulingInfo_NB_r13_t));
-   sib_type_NB_IoT = (SIB_Type_NB_r13_t *) malloc (3*sizeof(SIB_Type_NB_r13_t));
-
+  //OPTIONAL new parameters, to be used?
+  /*
+   * freqBandInfo_r13
+   * multiBandInfoList_r13
+   * nrs_CRS_PowerOffset_r13
+   * sib1_NB_IoT->downlinkBitmap_r13.choice.subframePattern10_r13 =(is a BIT_STRING)
+   */
+  (*sib1_NB_IoT)->downlinkBitmap_r13 = CALLOC(1, sizeof(struct DL_Bitmap_NB_r13));
+  ((*sib1_NB_IoT)->downlinkBitmap_r13)->present= DL_Bitmap_NB_r13_PR_NOTHING;
+  *eutraControlRegionSize = 1;
+  (*sib1_NB_IoT)->eutraControlRegionSize_r13 = eutraControlRegionSize;
+  *nrs_CRS_PowerOffset= 0;
+  (*sib1_NB_IoT)->nrs_CRS_PowerOffset_r13 = nrs_CRS_PowerOffset;
+  schedulingInfo_NB_IoT = (SchedulingInfo_NB_r13_t *) malloc (3*sizeof(SchedulingInfo_NB_r13_t));
+  sib_type_NB_IoT = (SIB_Type_NB_r13_t *) malloc (3*sizeof(SIB_Type_NB_r13_t));
   memset(&schedulingInfo_NB_IoT[0],0,sizeof(SchedulingInfo_NB_r13_t));
   memset(&schedulingInfo_NB_IoT[1],0,sizeof(SchedulingInfo_NB_r13_t));
-  memset(&schedulingInfo_NB_IoT[2],0,sizeof(SchedulingInfo_NB_r13_t));    
+  memset(&schedulingInfo_NB_IoT[2],0,sizeof(SchedulingInfo_NB_r13_t));
   memset(&sib_type_NB_IoT[0],0,sizeof(SIB_Type_NB_r13_t));
   memset(&sib_type_NB_IoT[1],0,sizeof(SIB_Type_NB_r13_t));
   memset(&sib_type_NB_IoT[2],0,sizeof(SIB_Type_NB_r13_t));
-
-
   // Now, follow the scheduler SIB configuration
   // There is only one sib2+sib3 common setting
   schedulingInfo_NB_IoT[0].si_Periodicity_r13=SchedulingInfo_NB_r13__si_Periodicity_r13_rf4096;
   schedulingInfo_NB_IoT[0].si_RepetitionPattern_r13=SchedulingInfo_NB_r13__si_RepetitionPattern_r13_every2ndRF; //This Indicates the starting radio frames within the SI window used for SI message transmission.
   schedulingInfo_NB_IoT[0].si_TB_r13= SchedulingInfo_NB_r13__si_TB_r13_b680;//208 bits
-  
-
   // This is for SIB2/3
   /*SIB3 --> There is no mapping information of SIB2 since it is always present
     *  in the first SystemInformation message
     * listed in the schedulingInfoList list.
     * */
   sib_type_NB_IoT[0]=SIB_Type_NB_r13_sibType3_NB_r13;
-
   ASN_SEQUENCE_ADD(&schedulingInfo_NB_IoT[0].sib_MappingInfo_r13.list,&sib_type_NB_IoT[0]);
   ASN_SEQUENCE_ADD(&(*sib1_NB_IoT)->schedulingInfoList_r13.list,&schedulingInfo_NB_IoT[0]);
-
   //printf("[ASN Debug] SI P: %ld\n",(*sib1_NB_IoT)->schedulingInfoList_r13.list.array[0]->si_Periodicity_r13);
-
 #if defined(ENABLE_ITTI)
 
   if (configuration->frame_type == TDD)
 #endif
   {
-	//FIXME in NB-IoT mandatory to be FDD --> so must give an error
-	  LOG_E(RRC,"[NB-IoT %d] Frame Type is TDD --> not supported by NB-IoT, exiting\n", Mod_id); //correct?
-	  exit(-1);
+    //FIXME in NB-IoT mandatory to be FDD --> so must give an error
+    LOG_E(RRC,"[NB-IoT %d] Frame Type is TDD --> not supported by NB-IoT, exiting\n", Mod_id); //correct?
+    exit(-1);
   }
 
   //FIXME which value chose for the following parameter
   (*sib1_NB_IoT)->si_WindowLength_r13=SystemInformationBlockType1_NB__si_WindowLength_r13_ms160;
   (*sib1_NB_IoT)->si_RadioFrameOffset_r13= 0;
-
   /*In Nb-IoT change/update of specific SI message can additionally be indicated by a SI message specific value tag
    * systemInfoValueTagSI (there is no SystemInfoValueTag in SIB1-NB but only in MIB-NB)
    *contained in systemInfoValueTagList_r13
@@ -379,24 +327,20 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
   (*sib1_NB_IoT)->systemInfoValueTagList_r13 = CALLOC(1, sizeof(struct SystemInfoValueTagList_NB_r13));
   asn_set_empty(&(*sib1_NB_IoT)->systemInfoValueTagList_r13->list);
   ASN_SEQUENCE_ADD(&(*sib1_NB_IoT)->systemInfoValueTagList_r13->list,&systemInfoValueTagSI);
-
-
 #ifdef XER_PRINT //generate xml files
-  xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message_NB, (void*)bcch_message);
+  xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message_NB, (void *)bcch_message);
 #endif
-
-
   enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_DL_SCH_Message_NB,
-                                   (void*)bcch_message,
+                                   NULL,
+                                   (void *)bcch_message,
                                    carrier->SIB1_NB_IoT,
                                    100);
 
-  if (enc_rval.encoded > 0){ 
-       LOG_F(RRC,"ASN1 message encoding failed (%s, %lu)!\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
+  if (enc_rval.encoded > 0) {
+    LOG_F(RRC,"ASN1 message encoding failed (%s, %lu)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
   }
 
-
 #ifdef USER_MODE
   LOG_D(RRC,"[NB-IoT] SystemInformationBlockType1-NB Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
 #endif
@@ -417,30 +361,23 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
 {
   struct SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member *sib2_NB_part;
   struct SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member *sib3_NB_part;
-
   BCCH_DL_SCH_Message_NB_t *bcch_message = &(carrier->systemInformation_NB_IoT); //is the systeminformation-->BCCH_DL_SCH_Message_NB
   SystemInformationBlockType2_NB_r13_t *sib2_NB_IoT;
   SystemInformationBlockType3_NB_r13_t *sib3_NB_IoT;
-
   asn_enc_rval_t enc_rval;
   RACH_Info_NB_r13_t rach_Info_NB_IoT;
   NPRACH_Parameters_NB_r13_t *nprach_parameters;
-
   //optional
   long *connEstFailOffset = NULL;
   connEstFailOffset = CALLOC(1, sizeof(long));
-
-//  RSRP_ThresholdsNPRACH_InfoList_NB_r13_t *rsrp_ThresholdsPrachInfoList;
-//  RSRP_Range_t rsrp_range;
-
+  //  RSRP_ThresholdsNPRACH_InfoList_NB_r13_t *rsrp_ThresholdsPrachInfoList;
+  //  RSRP_Range_t rsrp_range;
   ACK_NACK_NumRepetitions_NB_r13_t ack_nack_repetition;
   struct NPUSCH_ConfigCommon_NB_r13__dmrs_Config_r13 *dmrs_config;
-  struct DL_GapConfig_NB_r13	*dl_Gap;
-
+  struct DL_GapConfig_NB_r13  *dl_Gap;
   long *srs_SubframeConfig;
   srs_SubframeConfig= CALLOC(1, sizeof(long));
 
-
   if (bcch_message) {
     memset(bcch_message,0,sizeof(BCCH_DL_SCH_Message_NB_t));
   } else {
@@ -449,84 +386,64 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
   }
 
   //before schould be allocated memory somewhere?
-//  if (!carrier->sib2_NB_IoT) {
-//    LOG_E(RRC,"[NB-IoT %d] sib2_NB_IoT is null, exiting\n", Mod_id);
-//    exit(-1);
-//  }
-//
-//  if (!carrier->sib3_NB_IoT) {
-//    LOG_E(RRC,"[NB-IoT %d] sib3_NB_IoT is null, exiting\n", Mod_id);
-//    exit(-1);
-//  }
-
-
+  //  if (!carrier->sib2_NB_IoT) {
+  //    LOG_E(RRC,"[NB-IoT %d] sib2_NB_IoT is null, exiting\n", Mod_id);
+  //    exit(-1);
+  //  }
+  //
+  //  if (!carrier->sib3_NB_IoT) {
+  //    LOG_E(RRC,"[NB-IoT %d] sib3_NB_IoT is null, exiting\n", Mod_id);
+  //    exit(-1);
+  //  }
   LOG_I(RRC,"[NB-IoT %d] Configuration SIB2/3\n", Mod_id);
-
   sib2_NB_part = CALLOC(1,sizeof(struct SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member));
   sib3_NB_part = CALLOC(1,sizeof(struct SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member));
   memset(sib2_NB_part,0,sizeof(struct SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member));
   memset(sib3_NB_part,0,sizeof(struct SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member));
-
   sib2_NB_part->present = SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member_PR_sib2_r13;
   sib3_NB_part->present = SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member_PR_sib3_r13;
-
   //may bug if not correct allocation of memory
   carrier->sib2_NB_IoT = &sib2_NB_part->choice.sib2_r13;
   carrier->sib3_NB_IoT = &sib3_NB_part->choice.sib3_r13;
   sib2_NB_IoT = carrier->sib2_NB_IoT;
   sib3_NB_IoT = carrier->sib3_NB_IoT;
-
   nprach_parameters = (NPRACH_Parameters_NB_r13_t *) malloc (3*sizeof(NPRACH_Parameters_NB_r13_t));
-
   memset(&nprach_parameters[0],0,sizeof(NPRACH_Parameters_NB_r13_t));
   memset(&nprach_parameters[1],0,sizeof(NPRACH_Parameters_NB_r13_t));
   memset(&nprach_parameters[2],0,sizeof(NPRACH_Parameters_NB_r13_t));
-
-/// SIB2-NB-----------------------------------------
-
+  /// SIB2-NB-----------------------------------------
   //Barring is manage by ab-Enabled in MIB-NB (but is not a struct as ac-BarringInfo in LTE legacy)
-
   //RACH Config. Common--------------------------------------------------------------
   sib2_NB_IoT->radioResourceConfigCommon_r13.rach_ConfigCommon_r13.preambleTransMax_CE_r13 =
-   		  configuration->rach_preambleTransMax_CE_NB;
+    configuration->rach_preambleTransMax_CE_NB;
   sib2_NB_IoT->radioResourceConfigCommon_r13.rach_ConfigCommon_r13.powerRampingParameters_r13.powerRampingStep =
-	configuration->rach_powerRampingStep_NB;
+    configuration->rach_powerRampingStep_NB;
   sib2_NB_IoT->radioResourceConfigCommon_r13.rach_ConfigCommon_r13.powerRampingParameters_r13.preambleInitialReceivedTargetPower =
     configuration->rach_preambleInitialReceivedTargetPower_NB;
-
   rach_Info_NB_IoT.ra_ResponseWindowSize_r13 = configuration->rach_raResponseWindowSize_NB;
   rach_Info_NB_IoT.mac_ContentionResolutionTimer_r13 = configuration-> rach_macContentionResolutionTimer_NB;
   //rach_infoList max size = maxNPRACH-Resources-NB-r13 = 3
   ASN_SEQUENCE_ADD(&sib2_NB_IoT->radioResourceConfigCommon_r13.rach_ConfigCommon_r13.rach_InfoList_r13.list,&rach_Info_NB_IoT);
-
   //TS 36.331 pag 614 --> if not present the value to infinity sould be used
   *connEstFailOffset = 0;
-  
   sib2_NB_IoT->radioResourceConfigCommon_r13.rach_ConfigCommon_r13.connEstFailOffset_r13 = connEstFailOffset; /*OPTIONAL*/
-
-
   // BCCH-Config-NB-IoT----------------------------------------------------------------
   sib2_NB_IoT->radioResourceConfigCommon_r13.bcch_Config_r13.modificationPeriodCoeff_r13
     = configuration->bcch_modificationPeriodCoeff_NB;
-
   // PCCH-Config-NB-IoT-----------------------------------------------------------------
   sib2_NB_IoT->radioResourceConfigCommon_r13.pcch_Config_r13.defaultPagingCycle_r13
     = configuration->pcch_defaultPagingCycle_NB;
   sib2_NB_IoT->radioResourceConfigCommon_r13.pcch_Config_r13.nB_r13 = configuration->pcch_nB_NB;
   sib2_NB_IoT->radioResourceConfigCommon_r13.pcch_Config_r13.npdcch_NumRepetitionPaging_r13 = configuration-> pcch_npdcch_NumRepetitionPaging_NB;
-
   //NPRACH-Config-NB-IoT-----------------------------------------------------------------
-
-  sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.rsrp_ThresholdsPrachInfoList_r13 = NULL; 
+  sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.rsrp_ThresholdsPrachInfoList_r13 = NULL;
   sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.nprach_CP_Length_r13 = configuration->nprach_CP_Length;
   /*OPTIONAL*/
-//   =CALLOC(1, sizeof(struct RSRP_ThresholdsNPRACH_InfoList_NB_r13)); //fatto uguale dopo
-//   rsrp_ThresholdsPrachInfoList = sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.rsrp_ThresholdsPrachInfoList_r13;
-//   rsrp_range = configuration->nprach_rsrp_range_NB;
-//   ASN_SEQUENCE_ADD(&rsrp_ThresholdsPrachInfoList->list,rsrp_range);
-
+  //   =CALLOC(1, sizeof(struct RSRP_ThresholdsNPRACH_InfoList_NB_r13)); //fatto uguale dopo
+  //   rsrp_ThresholdsPrachInfoList = sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.rsrp_ThresholdsPrachInfoList_r13;
+  //   rsrp_range = configuration->nprach_rsrp_range_NB;
+  //   ASN_SEQUENCE_ADD(&rsrp_ThresholdsPrachInfoList->list,rsrp_range);
   // According configuration to set the 3 CE level configuration setting
-
   nprach_parameters[0].nprach_Periodicity_r13               = configuration->nprach_Periodicity[0];
   nprach_parameters[0].nprach_StartTime_r13                 = configuration->nprach_StartTime[0];
   nprach_parameters[0].nprach_SubcarrierOffset_r13          = configuration->nprach_SubcarrierOffset[0];
@@ -537,7 +454,6 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
   nprach_parameters[0].npdcch_NumRepetitions_RA_r13         = configuration->npdcch_NumRepetitions_RA[0];
   nprach_parameters[0].npdcch_StartSF_CSS_RA_r13            = configuration->npdcch_StartSF_CSS_RA[0];
   nprach_parameters[0].npdcch_Offset_RA_r13                 = configuration->npdcch_Offset_RA[0];
-
   nprach_parameters[1].nprach_Periodicity_r13               = configuration->nprach_Periodicity[1];
   nprach_parameters[1].nprach_StartTime_r13                 = configuration->nprach_StartTime[1];
   nprach_parameters[1].nprach_SubcarrierOffset_r13          = configuration->nprach_SubcarrierOffset[1];
@@ -548,7 +464,6 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
   nprach_parameters[1].npdcch_NumRepetitions_RA_r13         = configuration->npdcch_NumRepetitions_RA[1];
   nprach_parameters[1].npdcch_StartSF_CSS_RA_r13            = configuration->npdcch_StartSF_CSS_RA[1];
   nprach_parameters[1].npdcch_Offset_RA_r13                 = configuration->npdcch_Offset_RA[1];
-
   nprach_parameters[2].nprach_Periodicity_r13               = configuration->nprach_Periodicity[2];
   nprach_parameters[2].nprach_StartTime_r13                 = configuration->nprach_StartTime[2];
   nprach_parameters[2].nprach_SubcarrierOffset_r13          = configuration->nprach_SubcarrierOffset[2];
@@ -559,40 +474,29 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
   nprach_parameters[2].npdcch_NumRepetitions_RA_r13         = configuration->npdcch_NumRepetitions_RA[2];
   nprach_parameters[2].npdcch_StartSF_CSS_RA_r13            = configuration->npdcch_StartSF_CSS_RA[2];
   nprach_parameters[2].npdcch_Offset_RA_r13                 = configuration->npdcch_Offset_RA[2];
-
-
   //nprach_parameterList have a max size of 3 possible nprach configuration (see maxNPRACH_Resources_NB_r13)
   ASN_SEQUENCE_ADD(&sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.nprach_ParametersList_r13.list,&nprach_parameters[0]);
   ASN_SEQUENCE_ADD(&sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.nprach_ParametersList_r13.list,&nprach_parameters[1]);
   ASN_SEQUENCE_ADD(&sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.nprach_ParametersList_r13.list,&nprach_parameters[2]);
-  
   // NPDSCH-Config NB-IOT
   sib2_NB_IoT->radioResourceConfigCommon_r13.npdsch_ConfigCommon_r13.nrs_Power_r13= configuration->npdsch_nrs_Power;
-
-
   //NPUSCH-Config NB-IoT----------------------------------------------------------------
   //list of size 3 (see maxNPRACH_Resources_NB_r13)
   ack_nack_repetition = configuration-> npusch_ack_nack_numRepetitions_NB; //is an enumerative
-  ASN_SEQUENCE_ADD(&(sib2_NB_IoT->radioResourceConfigCommon_r13.npusch_ConfigCommon_r13.ack_NACK_NumRepetitions_Msg4_r13.list) ,&ack_nack_repetition);
-
+  ASN_SEQUENCE_ADD(&(sib2_NB_IoT->radioResourceConfigCommon_r13.npusch_ConfigCommon_r13.ack_NACK_NumRepetitions_Msg4_r13.list),&ack_nack_repetition);
   *srs_SubframeConfig = configuration->npusch_srs_SubframeConfig_NB;
   sib2_NB_IoT->radioResourceConfigCommon_r13.npusch_ConfigCommon_r13.srs_SubframeConfig_r13= srs_SubframeConfig; /*OPTIONAL*/
-
-
   /*OPTIONAL*/
   dmrs_config = CALLOC(1,sizeof(struct NPUSCH_ConfigCommon_NB_r13__dmrs_Config_r13));
   dmrs_config->threeTone_CyclicShift_r13 = configuration->npusch_threeTone_CyclicShift_r13;
   dmrs_config->sixTone_CyclicShift_r13 = configuration->npusch_sixTone_CyclicShift_r13;
-
   /*OPTIONAL
    * -define the base sequence for a DMRS sequence in a cell with multi tone transmission (3,6,12) see TS 36.331 NPUSCH-Config-NB
    * -if not defined will be calculated based on the cellID once we configure the phy layer (rrc_mac_config_req) through the config_sib2 */
   dmrs_config->threeTone_BaseSequence_r13 = NULL;
   dmrs_config->sixTone_BaseSequence_r13 = NULL;
   dmrs_config->twelveTone_BaseSequence_r13 = NULL;
-
   sib2_NB_IoT->radioResourceConfigCommon_r13.npusch_ConfigCommon_r13.dmrs_Config_r13 = dmrs_config;
-
   //ulReferenceSignalsNPUSCH
   /*Reference Signal (RS) for UL in NB-IoT is called DRS (Demodulation Reference Signal)
    * sequence-group hopping can be enabled or disabled by means of the cell-specific parameter groupHoppingEnabled_r13
@@ -601,22 +505,17 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
    */
   sib2_NB_IoT->radioResourceConfigCommon_r13.npusch_ConfigCommon_r13.ul_ReferenceSignalsNPUSCH_r13.groupHoppingEnabled_r13= configuration->npusch_groupHoppingEnabled;
   sib2_NB_IoT->radioResourceConfigCommon_r13.npusch_ConfigCommon_r13.ul_ReferenceSignalsNPUSCH_r13.groupAssignmentNPUSCH_r13 =configuration->npusch_groupAssignmentNPUSCH_r13;
-
-
   //dl_GAP---------------------------------------------------------------------------------/*OPTIONAL*/
   dl_Gap = CALLOC(1,sizeof(struct DL_GapConfig_NB_r13));
   dl_Gap->dl_GapDurationCoeff_r13= configuration-> dl_GapDurationCoeff_NB;
   dl_Gap->dl_GapPeriodicity_r13= configuration->dl_GapPeriodicity_NB;
   dl_Gap->dl_GapThreshold_r13= configuration->dl_GapThreshold_NB;
   sib2_NB_IoT->radioResourceConfigCommon_r13.dl_Gap_r13 = dl_Gap;
-
-
   // uplinkPowerControlCommon - NB-IoT------------------------------------------------------
   sib2_NB_IoT->radioResourceConfigCommon_r13.uplinkPowerControlCommon_r13.p0_NominalNPUSCH_r13 = configuration->npusch_p0_NominalNPUSCH;
   sib2_NB_IoT->radioResourceConfigCommon_r13.uplinkPowerControlCommon_r13.deltaPreambleMsg3_r13 = configuration->deltaPreambleMsg3;
   sib2_NB_IoT->radioResourceConfigCommon_r13.uplinkPowerControlCommon_r13.alpha_r13 = configuration->npusch_alpha;
   //no deltaFlist_PUCCH and no UL cyclic prefix
-
   // UE Timers and Constants -NB-IoT--------------------------------------------------------
   sib2_NB_IoT->ue_TimersAndConstants_r13.t300_r13 = configuration-> ue_TimersAndConstants_t300_NB;
   sib2_NB_IoT->ue_TimersAndConstants_r13.t301_r13 = configuration-> ue_TimersAndConstants_t301_NB;
@@ -624,60 +523,45 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
   sib2_NB_IoT->ue_TimersAndConstants_r13.t311_r13 = configuration-> ue_TimersAndConstants_t311_NB;
   sib2_NB_IoT->ue_TimersAndConstants_r13.n310_r13 = configuration-> ue_TimersAndConstants_n310_NB;
   sib2_NB_IoT->ue_TimersAndConstants_r13.n311_r13 = configuration-> ue_TimersAndConstants_n311_NB;
-
   //other SIB2-NB Parameters--------------------------------------------------------------------------------
   sib2_NB_IoT->freqInfo_r13.additionalSpectrumEmission_r13 = 1;
   sib2_NB_IoT->freqInfo_r13.ul_CarrierFreq_r13 = NULL; /*OPTIONAL*/
-
   sib2_NB_IoT->timeAlignmentTimerCommon_r13=TimeAlignmentTimer_infinity;//TimeAlignmentTimer_sf5120;
-
   /*OPTIONAL*/
   sib2_NB_IoT->multiBandInfoList_r13 = NULL;
-
-/// SIB3-NB-------------------------------------------------------
-
+  /// SIB3-NB-------------------------------------------------------
   sib3_NB_IoT->cellReselectionInfoCommon_r13.q_Hyst_r13=SystemInformationBlockType3_NB_r13__cellReselectionInfoCommon_r13__q_Hyst_r13_dB4;
   sib3_NB_IoT->cellReselectionServingFreqInfo_r13.s_NonIntraSearch_r13=0; //or define in configuration?
-
   sib3_NB_IoT->intraFreqCellReselectionInfo_r13.q_RxLevMin_r13 = -70;
   //new
   sib3_NB_IoT->intraFreqCellReselectionInfo_r13.q_QualMin_r13 = CALLOC(1,sizeof(*sib3_NB_IoT->intraFreqCellReselectionInfo_r13.q_QualMin_r13));
   *(sib3_NB_IoT->intraFreqCellReselectionInfo_r13.q_QualMin_r13)= 10; //a caso
-
   sib3_NB_IoT->intraFreqCellReselectionInfo_r13.p_Max_r13 = NULL;
   sib3_NB_IoT->intraFreqCellReselectionInfo_r13.s_IntraSearchP_r13 = 31; // s_intraSearch --> s_intraSearchP!!! (they call in a different way)
   sib3_NB_IoT->intraFreqCellReselectionInfo_r13.t_Reselection_r13=1;
-
   //how to manage?
   sib3_NB_IoT->freqBandInfo_r13 = NULL;
   sib3_NB_IoT->multiBandInfoList_r13 = NULL;
-
-
-///BCCH message (generate the SI message)
+  ///BCCH message (generate the SI message)
   bcch_message->message.present = BCCH_DL_SCH_MessageType_NB_PR_c1;
   bcch_message->message.choice.c1.present = BCCH_DL_SCH_MessageType_NB__c1_PR_systemInformation_r13;
-
   bcch_message->message.choice.c1.choice.systemInformation_r13.criticalExtensions.present = SystemInformation_NB__criticalExtensions_PR_systemInformation_r13;
   bcch_message->message.choice.c1.choice.systemInformation_r13.criticalExtensions.choice.systemInformation_r13.sib_TypeAndInfo_r13.list.count=0;
-
   ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation_r13.criticalExtensions.choice.systemInformation_r13.sib_TypeAndInfo_r13.list,
                    sib2_NB_part);
   ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation_r13.criticalExtensions.choice.systemInformation_r13.sib_TypeAndInfo_r13.list,
                    sib3_NB_part);
-
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message_NB, (void*)bcch_message);
+  xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message_NB, (void *)bcch_message);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_DL_SCH_Message_NB,
-                                   (void*)bcch_message,
+                                   NULL,
+                                   (void *)bcch_message,
                                    carrier->SIB23_NB_IoT,
                                    900);
-//  AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
-//               enc_rval.failed_type->name, enc_rval.encoded);
-
-//#if defined(ENABLE_ITTI).....
-
-
+  //  AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
+  //               enc_rval.failed_type->name, enc_rval.encoded);
+  //#if defined(ENABLE_ITTI).....
 #ifdef USER_MODE
   LOG_D(RRC,"[NB-IoT] SystemInformation-NB Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
 #endif
@@ -689,268 +573,222 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
 
   carrier->sib2_NB_IoT = sib2_NB_IoT;
   carrier->sib3_NB_IoT = sib3_NB_IoT;
-
   return((enc_rval.encoded+7)/8);
 }
 
 /*do_RRCConnectionSetup_NB_IoT--> the aim is to establish SRB1 and SRB1bis(implicitly)*/
 uint8_t do_RRCConnectionSetup_NB_IoT(
-  const protocol_ctxt_t*     const ctxt_pP,
-  rrc_eNB_ue_context_NB_IoT_t*      const ue_context_pP,
+  const protocol_ctxt_t     *const ctxt_pP,
+  rrc_eNB_ue_context_NB_IoT_t      *const ue_context_pP,
   int                              CC_id,
-  uint8_t*                   const buffer, //Srb0.Tx_buffer.Payload
+  uint8_t                   *const buffer, //Srb0.Tx_buffer.Payload
   const uint8_t                    Transaction_id,
-  const NB_IoT_DL_FRAME_PARMS* const frame_parms, // maybe not used
-  SRB_ToAddModList_NB_r13_t**             SRB_configList_NB_IoT, //for both SRB1bis and SRB1
-  struct PhysicalConfigDedicated_NB_r13** physicalConfigDedicated_NB_IoT
+  const NB_IoT_DL_FRAME_PARMS *const frame_parms, // maybe not used
+  SRB_ToAddModList_NB_r13_t             **SRB_configList_NB_IoT, //for both SRB1bis and SRB1
+  struct PhysicalConfigDedicated_NB_r13 **physicalConfigDedicated_NB_IoT
 )
 
 {
+  asn_enc_rval_t enc_rval;
+  //MP:logical channel group not defined for Nb-IoT
+  //MP: logical channel priority pag 605 (is 1 for SRB1 and for SRB1bis should be the same)
+  //long* prioritySRB1 = NULL;
+  long *prioritySRB1bis = NULL;
+  BOOLEAN_t *logicalChannelSR_Prohibit =NULL; //pag 605
+  BOOLEAN_t *npusch_AllSymbols= NULL;
+  // struct SRB_ToAddMod_NB_r13* SRB1_config_NB = NULL;
+  // struct SRB_ToAddMod_NB_r13__rlc_Config_r13* SRB1_rlc_config_NB = NULL;
+  // struct SRB_ToAddMod_NB_r13__logicalChannelConfig_r13* SRB1_lchan_config_NB = NULL;
+  struct SRB_ToAddMod_NB_r13 *SRB1bis_config_NB_IoT = NULL;
+  struct SRB_ToAddMod_NB_r13__rlc_Config_r13 *SRB1bis_rlc_config_NB_IoT = NULL;
+  struct SRB_ToAddMod_NB_r13__logicalChannelConfig_r13 *SRB1bis_lchan_config_NB_IoT = NULL;
+  //No UL_specific parameters for NB-IoT in LogicalChanelConfig-NB
+  PhysicalConfigDedicated_NB_r13_t *physicalConfigDedicated2_NB_IoT = NULL;
+  DL_CCCH_Message_NB_t dl_ccch_msg_NB_IoT;
+  RRCConnectionSetup_NB_t *rrcConnectionSetup_NB_IoT = NULL;
+  memset((void *)&dl_ccch_msg_NB_IoT,0,sizeof(DL_CCCH_Message_NB_t));
+  dl_ccch_msg_NB_IoT.message.present = DL_CCCH_MessageType_NB_PR_c1;
+  dl_ccch_msg_NB_IoT.message.choice.c1.present = DL_CCCH_MessageType_NB__c1_PR_rrcConnectionSetup_r13;
+  rrcConnectionSetup_NB_IoT = &dl_ccch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionSetup_r13;
 
- asn_enc_rval_t enc_rval;
-
-
- //MP:logical channel group not defined for Nb-IoT
-
- //MP: logical channel priority pag 605 (is 1 for SRB1 and for SRB1bis should be the same)
- //long* prioritySRB1 = NULL;
- long* prioritySRB1bis = NULL;
- BOOLEAN_t* logicalChannelSR_Prohibit =NULL; //pag 605
- BOOLEAN_t* npusch_AllSymbols= NULL;
-
-// struct SRB_ToAddMod_NB_r13* SRB1_config_NB = NULL;
-// struct SRB_ToAddMod_NB_r13__rlc_Config_r13* SRB1_rlc_config_NB = NULL;
-// struct SRB_ToAddMod_NB_r13__logicalChannelConfig_r13* SRB1_lchan_config_NB = NULL;
-
- struct SRB_ToAddMod_NB_r13* SRB1bis_config_NB_IoT = NULL;
- struct SRB_ToAddMod_NB_r13__rlc_Config_r13* SRB1bis_rlc_config_NB_IoT = NULL;
- struct SRB_ToAddMod_NB_r13__logicalChannelConfig_r13* SRB1bis_lchan_config_NB_IoT = NULL;
-
- //No UL_specific parameters for NB-IoT in LogicalChanelConfig-NB
-
- PhysicalConfigDedicated_NB_r13_t* physicalConfigDedicated2_NB_IoT = NULL;
- DL_CCCH_Message_NB_t dl_ccch_msg_NB_IoT;
- RRCConnectionSetup_NB_t* rrcConnectionSetup_NB_IoT = NULL;
-
- memset((void *)&dl_ccch_msg_NB_IoT,0,sizeof(DL_CCCH_Message_NB_t));
- dl_ccch_msg_NB_IoT.message.present = DL_CCCH_MessageType_NB_PR_c1;
- dl_ccch_msg_NB_IoT.message.choice.c1.present = DL_CCCH_MessageType_NB__c1_PR_rrcConnectionSetup_r13;
- rrcConnectionSetup_NB_IoT = &dl_ccch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionSetup_r13;
-
-
- if (*SRB_configList_NB_IoT) {
-   free(*SRB_configList_NB_IoT);
- }
- *SRB_configList_NB_IoT = CALLOC(1,sizeof(SRB_ToAddModList_NB_r13_t));
-
-/// SRB1--------------------
- {
-// SRB1_config_NB = CALLOC(1,sizeof(*SRB1_config_NB));
-//
-// //no srb_Identity in SRB_ToAddMod_NB
-//
-// SRB1_rlc_config_NB = CALLOC(1,sizeof(*SRB1_rlc_config_NB));
-// SRB1_config_NB->rlc_Config_r13   = SRB1_rlc_config_NB;
-//
-// SRB1_rlc_config_NB->present = SRB_ToAddMod_NB_r13__rlc_Config_r13_PR_explicitValue;
-// SRB1_rlc_config_NB->choice.explicitValue.present=RLC_Config_NB_r13_PR_am;//the only possible in NB_IoT
-//
-//// SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.t_PollRetransmit_r13 = enb_properties.properties[ctxt_pP->module_id]->srb1_timer_poll_retransmit_r13;
-//// SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.maxRetxThreshold_r13 = enb_properties.properties[ctxt_pP->module_id]->srb1_max_retx_threshold_r13;
-//// //(musT be disabled--> SRB1 config pag 640 specs )
-//// SRB1_rlc_config_NB->choice.explicitValue.choice.am.dl_AM_RLC_r13.enableStatusReportSN_Gap_r13 =NULL;
-//
-//
-// SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.t_PollRetransmit_r13 = T_PollRetransmit_NB_r13_ms25000;
-// SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.maxRetxThreshold_r13 = UL_AM_RLC_NB_r13__maxRetxThreshold_r13_t8;
-// //(musT be disabled--> SRB1 config pag 640 specs )
-// SRB1_rlc_config_NB->choice.explicitValue.choice.am.dl_AM_RLC_r13.enableStatusReportSN_Gap_r13 = NULL;
-//
-// SRB1_lchan_config_NB = CALLOC(1,sizeof(*SRB1_lchan_config_NB));
-// SRB1_config_NB->logicalChannelConfig_r13  = SRB1_lchan_config_NB;
-//
-// SRB1_lchan_config_NB->present = SRB_ToAddMod_NB_r13__logicalChannelConfig_r13_PR_explicitValue;
-//
-//
-// prioritySRB1 = CALLOC(1, sizeof(long));
-// *prioritySRB1 = 1;
-// SRB1_lchan_config_NB->choice.explicitValue.priority_r13 = prioritySRB1;
-//
-// logicalChannelSR_Prohibit = CALLOC(1, sizeof(BOOLEAN_t));
-// *logicalChannelSR_Prohibit = 1;
-// //schould be set to TRUE (specs pag 641)
-// SRB1_lchan_config_NB->choice.explicitValue.logicalChannelSR_Prohibit_r13 = logicalChannelSR_Prohibit;
-//
-// //ADD SRB1
-// ASN_SEQUENCE_ADD(&(*SRB_configList_NB_IoT)->list,SRB1_config_NB);
- }
-
-///SRB1bis (The configuration for SRB1 and SRB1bis is the same) the only difference is the logical channel identity = 3 but not set here
-
-		 SRB1bis_config_NB_IoT = CALLOC(1,sizeof(*SRB1bis_config_NB_IoT));
-
-		 //no srb_Identity in SRB_ToAddMod_NB
-		 SRB1bis_rlc_config_NB_IoT = CALLOC(1,sizeof(*SRB1bis_rlc_config_NB_IoT));
-		 SRB1bis_config_NB_IoT->rlc_Config_r13   = SRB1bis_rlc_config_NB_IoT;
-
-		 SRB1bis_rlc_config_NB_IoT->present = SRB_ToAddMod_NB_r13__rlc_Config_r13_PR_explicitValue;
-		 SRB1bis_rlc_config_NB_IoT->choice.explicitValue.present=RLC_Config_NB_r13_PR_am;//MP: the only possible RLC config in NB_IoT
-
-		 SRB1bis_rlc_config_NB_IoT->choice.explicitValue.choice.am.ul_AM_RLC_r13.t_PollRetransmit_r13 = T_PollRetransmit_NB_r13_ms25000;
-		 SRB1bis_rlc_config_NB_IoT->choice.explicitValue.choice.am.ul_AM_RLC_r13.maxRetxThreshold_r13 = UL_AM_RLC_NB_r13__maxRetxThreshold_r13_t8;
-		 //(musT be disabled--> SRB1 config pag 640 specs )
-		 SRB1bis_rlc_config_NB_IoT->choice.explicitValue.choice.am.dl_AM_RLC_r13.enableStatusReportSN_Gap_r13 =NULL;
-
-		 SRB1bis_lchan_config_NB_IoT = CALLOC(1,sizeof(*SRB1bis_lchan_config_NB_IoT));
-		 SRB1bis_config_NB_IoT->logicalChannelConfig_r13  = SRB1bis_lchan_config_NB_IoT;
-
-		 SRB1bis_lchan_config_NB_IoT->present = SRB_ToAddMod_NB_r13__logicalChannelConfig_r13_PR_explicitValue;
-
-		 prioritySRB1bis = CALLOC(1, sizeof(long));
-		 *prioritySRB1bis = 1; //same as SRB1?
-		 SRB1bis_lchan_config_NB_IoT->choice.explicitValue.priority_r13 = prioritySRB1bis;
-
-		 logicalChannelSR_Prohibit = CALLOC(1, sizeof(BOOLEAN_t));
-		 *logicalChannelSR_Prohibit = 1; //schould be set to TRUE (specs pag 641)
-		 SRB1bis_lchan_config_NB_IoT->choice.explicitValue.logicalChannelSR_Prohibit_r13 = logicalChannelSR_Prohibit;
-
-		 //ADD SRB1bis
-		 //MP: Actually there is no way to distinguish SRB1 and SRB1bis once put in the list
-		 //MP: SRB_ToAddModList_NB_r13_t size = 1
-		 ASN_SEQUENCE_ADD(&(*SRB_configList_NB_IoT)->list,SRB1bis_config_NB_IoT);
-
-
- // PhysicalConfigDedicated (NPDCCH, NPUSCH, CarrierConfig, UplinkPowerControl)
-
- physicalConfigDedicated2_NB_IoT = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT));
- *physicalConfigDedicated_NB_IoT = physicalConfigDedicated2_NB_IoT;
-
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13= CALLOC(1, sizeof(*physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13));
- physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13 = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13));
- physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13 = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13));
- physicalConfigDedicated2_NB_IoT->uplinkPowerControlDedicated_r13 = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT->uplinkPowerControlDedicated_r13));
-
- //no tpc, no cqi and no pucch, no pdsch, no soundingRS, no AntennaInfo, no scheduling request config
-
- /*
-  * NB-IoT supports the operation with either one or two antenna ports, AP0 and AP1.
-  * For the latter case, Space Frequency Block Coding (SFBC) is applied.
-  * Once selected, the same transmission scheme applies to NPBCH, NPDCCH, and NPDSCH.
-  * */
-
- //FIXME: MP: CarrierConfigDedicated check the set values ----------------------------------------------
+  if (*SRB_configList_NB_IoT) {
+    free(*SRB_configList_NB_IoT);
+  }
 
+  *SRB_configList_NB_IoT = CALLOC(1,sizeof(SRB_ToAddModList_NB_r13_t));
+  /// SRB1--------------------
+  {
+    // SRB1_config_NB = CALLOC(1,sizeof(*SRB1_config_NB));
+    //
+    // //no srb_Identity in SRB_ToAddMod_NB
+    //
+    // SRB1_rlc_config_NB = CALLOC(1,sizeof(*SRB1_rlc_config_NB));
+    // SRB1_config_NB->rlc_Config_r13   = SRB1_rlc_config_NB;
+    //
+    // SRB1_rlc_config_NB->present = SRB_ToAddMod_NB_r13__rlc_Config_r13_PR_explicitValue;
+    // SRB1_rlc_config_NB->choice.explicitValue.present=RLC_Config_NB_r13_PR_am;//the only possible in NB_IoT
+    //
+    //// SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.t_PollRetransmit_r13 = enb_properties.properties[ctxt_pP->module_id]->srb1_timer_poll_retransmit_r13;
+    //// SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.maxRetxThreshold_r13 = enb_properties.properties[ctxt_pP->module_id]->srb1_max_retx_threshold_r13;
+    //// //(musT be disabled--> SRB1 config pag 640 specs )
+    //// SRB1_rlc_config_NB->choice.explicitValue.choice.am.dl_AM_RLC_r13.enableStatusReportSN_Gap_r13 =NULL;
+    //
+    //
+    // SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.t_PollRetransmit_r13 = T_PollRetransmit_NB_r13_ms25000;
+    // SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.maxRetxThreshold_r13 = UL_AM_RLC_NB_r13__maxRetxThreshold_r13_t8;
+    // //(musT be disabled--> SRB1 config pag 640 specs )
+    // SRB1_rlc_config_NB->choice.explicitValue.choice.am.dl_AM_RLC_r13.enableStatusReportSN_Gap_r13 = NULL;
+    //
+    // SRB1_lchan_config_NB = CALLOC(1,sizeof(*SRB1_lchan_config_NB));
+    // SRB1_config_NB->logicalChannelConfig_r13  = SRB1_lchan_config_NB;
+    //
+    // SRB1_lchan_config_NB->present = SRB_ToAddMod_NB_r13__logicalChannelConfig_r13_PR_explicitValue;
+    //
+    //
+    // prioritySRB1 = CALLOC(1, sizeof(long));
+    // *prioritySRB1 = 1;
+    // SRB1_lchan_config_NB->choice.explicitValue.priority_r13 = prioritySRB1;
+    //
+    // logicalChannelSR_Prohibit = CALLOC(1, sizeof(BOOLEAN_t));
+    // *logicalChannelSR_Prohibit = 1;
+    // //schould be set to TRUE (specs pag 641)
+    // SRB1_lchan_config_NB->choice.explicitValue.logicalChannelSR_Prohibit_r13 = logicalChannelSR_Prohibit;
+    //
+    // //ADD SRB1
+    // ASN_SEQUENCE_ADD(&(*SRB_configList_NB_IoT)->list,SRB1_config_NB);
+  }
+  ///SRB1bis (The configuration for SRB1 and SRB1bis is the same) the only difference is the logical channel identity = 3 but not set here
+  SRB1bis_config_NB_IoT = CALLOC(1,sizeof(*SRB1bis_config_NB_IoT));
+  //no srb_Identity in SRB_ToAddMod_NB
+  SRB1bis_rlc_config_NB_IoT = CALLOC(1,sizeof(*SRB1bis_rlc_config_NB_IoT));
+  SRB1bis_config_NB_IoT->rlc_Config_r13   = SRB1bis_rlc_config_NB_IoT;
+  SRB1bis_rlc_config_NB_IoT->present = SRB_ToAddMod_NB_r13__rlc_Config_r13_PR_explicitValue;
+  SRB1bis_rlc_config_NB_IoT->choice.explicitValue.present=RLC_Config_NB_r13_PR_am;//MP: the only possible RLC config in NB_IoT
+  SRB1bis_rlc_config_NB_IoT->choice.explicitValue.choice.am.ul_AM_RLC_r13.t_PollRetransmit_r13 = T_PollRetransmit_NB_r13_ms25000;
+  SRB1bis_rlc_config_NB_IoT->choice.explicitValue.choice.am.ul_AM_RLC_r13.maxRetxThreshold_r13 = UL_AM_RLC_NB_r13__maxRetxThreshold_r13_t8;
+  //(musT be disabled--> SRB1 config pag 640 specs )
+  SRB1bis_rlc_config_NB_IoT->choice.explicitValue.choice.am.dl_AM_RLC_r13.enableStatusReportSN_Gap_r13 =NULL;
+  SRB1bis_lchan_config_NB_IoT = CALLOC(1,sizeof(*SRB1bis_lchan_config_NB_IoT));
+  SRB1bis_config_NB_IoT->logicalChannelConfig_r13  = SRB1bis_lchan_config_NB_IoT;
+  SRB1bis_lchan_config_NB_IoT->present = SRB_ToAddMod_NB_r13__logicalChannelConfig_r13_PR_explicitValue;
+  prioritySRB1bis = CALLOC(1, sizeof(long));
+  *prioritySRB1bis = 1; //same as SRB1?
+  SRB1bis_lchan_config_NB_IoT->choice.explicitValue.priority_r13 = prioritySRB1bis;
+  logicalChannelSR_Prohibit = CALLOC(1, sizeof(BOOLEAN_t));
+  *logicalChannelSR_Prohibit = 1; //schould be set to TRUE (specs pag 641)
+  SRB1bis_lchan_config_NB_IoT->choice.explicitValue.logicalChannelSR_Prohibit_r13 = logicalChannelSR_Prohibit;
+  //ADD SRB1bis
+  //MP: Actually there is no way to distinguish SRB1 and SRB1bis once put in the list
+  //MP: SRB_ToAddModList_NB_r13_t size = 1
+  ASN_SEQUENCE_ADD(&(*SRB_configList_NB_IoT)->list,SRB1bis_config_NB_IoT);
+  // PhysicalConfigDedicated (NPDCCH, NPUSCH, CarrierConfig, UplinkPowerControl)
+  physicalConfigDedicated2_NB_IoT = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT));
+  *physicalConfigDedicated_NB_IoT = physicalConfigDedicated2_NB_IoT;
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13= CALLOC(1, sizeof(*physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13));
+  physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13 = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13));
+  physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13 = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13));
+  physicalConfigDedicated2_NB_IoT->uplinkPowerControlDedicated_r13 = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT->uplinkPowerControlDedicated_r13));
+  //no tpc, no cqi and no pucch, no pdsch, no soundingRS, no AntennaInfo, no scheduling request config
+  /*
+   * NB-IoT supports the operation with either one or two antenna ports, AP0 and AP1.
+   * For the latter case, Space Frequency Block Coding (SFBC) is applied.
+   * Once selected, the same transmission scheme applies to NPBCH, NPDCCH, and NPDSCH.
+   * */
+  //FIXME: MP: CarrierConfigDedicated check the set values ----------------------------------------------
   //DL
-
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.dl_CarrierFreq_r13.carrierFreq_r13=0;//random value set
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.downlinkBitmapNonAnchor_r13= CALLOC(1,sizeof(struct DL_CarrierConfigDedicated_NB_r13__downlinkBitmapNonAnchor_r13));
-		 physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.downlinkBitmapNonAnchor_r13->present=
-				 	 	 	 	 	 	 	 	 DL_CarrierConfigDedicated_NB_r13__downlinkBitmapNonAnchor_r13_PR_useNoBitmap_r13;
-
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.dl_GapNonAnchor_r13 = CALLOC(1,sizeof(struct DL_CarrierConfigDedicated_NB_r13__dl_GapNonAnchor_r13));
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.dl_GapNonAnchor_r13->present =
-		  	  	  	  	  	  	  	  	  	  	  DL_CarrierConfigDedicated_NB_r13__dl_GapNonAnchor_r13_PR_useNoGap_r13;
-
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.inbandCarrierInfo_r13= NULL;
-
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.dl_CarrierFreq_r13.carrierFreq_r13=0;//random value set
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.downlinkBitmapNonAnchor_r13= CALLOC(1,sizeof(struct DL_CarrierConfigDedicated_NB_r13__downlinkBitmapNonAnchor_r13));
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.downlinkBitmapNonAnchor_r13->present=
+    DL_CarrierConfigDedicated_NB_r13__downlinkBitmapNonAnchor_r13_PR_useNoBitmap_r13;
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.dl_GapNonAnchor_r13 = CALLOC(1,sizeof(struct DL_CarrierConfigDedicated_NB_r13__dl_GapNonAnchor_r13));
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.dl_GapNonAnchor_r13->present =
+    DL_CarrierConfigDedicated_NB_r13__dl_GapNonAnchor_r13_PR_useNoGap_r13;
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.inbandCarrierInfo_r13= NULL;
   //UL
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->ul_CarrierConfig_r13.ul_CarrierFreq_r13= NULL;
-
- // NPDCCH
- physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13->npdcch_NumRepetitions_r13 =0;
- physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13->npdcch_Offset_USS_r13 =0;
- physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13->npdcch_StartSF_USS_r13=0;
-
- // NPUSCH //(specs TS 36.331 v14.2.1 pag 643) /* OPTIONAL */
- physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13->ack_NACK_NumRepetitions_r13= NULL;
- npusch_AllSymbols= CALLOC(1, sizeof(BOOLEAN_t));
- *npusch_AllSymbols= 1; //TRUE
- physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13->npusch_AllSymbols_r13= npusch_AllSymbols; /* OPTIONAL */
- physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13->groupHoppingDisabled_r13=NULL; /* OPTIONAL */
-
- // UplinkPowerControlDedicated
- physicalConfigDedicated2_NB_IoT->uplinkPowerControlDedicated_r13->p0_UE_NPUSCH_r13 = 0; // 0 dB (specs TS36.331 v14.2.1 pag 643)
-
-
- //Fill the rrcConnectionSetup-NB message
- rrcConnectionSetup_NB_IoT->rrc_TransactionIdentifier = Transaction_id; //input value
- rrcConnectionSetup_NB_IoT->criticalExtensions.present = RRCConnectionSetup_NB__criticalExtensions_PR_c1;
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.present =RRCConnectionSetup_NB__criticalExtensions__c1_PR_rrcConnectionSetup_r13 ;
- //MP: carry only SRB1bis at the moment and phyConfigDedicated
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.srb_ToAddModList_r13 = *SRB_configList_NB_IoT;
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.drb_ToAddModList_r13 = NULL;
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.drb_ToReleaseList_r13 = NULL;
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.rlf_TimersAndConstants_r13 = NULL;
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.physicalConfigDedicated_r13 = physicalConfigDedicated2_NB_IoT;
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.mac_MainConfig_r13 = NULL;
-
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->ul_CarrierConfig_r13.ul_CarrierFreq_r13= NULL;
+  // NPDCCH
+  physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13->npdcch_NumRepetitions_r13 =0;
+  physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13->npdcch_Offset_USS_r13 =0;
+  physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13->npdcch_StartSF_USS_r13=0;
+  // NPUSCH //(specs TS 36.331 v14.2.1 pag 643) /* OPTIONAL */
+  physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13->ack_NACK_NumRepetitions_r13= NULL;
+  npusch_AllSymbols= CALLOC(1, sizeof(BOOLEAN_t));
+  *npusch_AllSymbols= 1; //TRUE
+  physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13->npusch_AllSymbols_r13= npusch_AllSymbols; /* OPTIONAL */
+  physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13->groupHoppingDisabled_r13=NULL; /* OPTIONAL */
+  // UplinkPowerControlDedicated
+  physicalConfigDedicated2_NB_IoT->uplinkPowerControlDedicated_r13->p0_UE_NPUSCH_r13 = 0; // 0 dB (specs TS36.331 v14.2.1 pag 643)
+  //Fill the rrcConnectionSetup-NB message
+  rrcConnectionSetup_NB_IoT->rrc_TransactionIdentifier = Transaction_id; //input value
+  rrcConnectionSetup_NB_IoT->criticalExtensions.present = RRCConnectionSetup_NB__criticalExtensions_PR_c1;
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.present =RRCConnectionSetup_NB__criticalExtensions__c1_PR_rrcConnectionSetup_r13 ;
+  //MP: carry only SRB1bis at the moment and phyConfigDedicated
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.srb_ToAddModList_r13 = *SRB_configList_NB_IoT;
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.drb_ToAddModList_r13 = NULL;
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.drb_ToReleaseList_r13 = NULL;
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.rlf_TimersAndConstants_r13 = NULL;
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.physicalConfigDedicated_r13 = physicalConfigDedicated2_NB_IoT;
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.mac_MainConfig_r13 = NULL;
 #ifdef XER_PRINT
- xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
+  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void *)&dl_ccch_msg);
 #endif
- enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message_NB,
-                                  (void*)&dl_ccch_msg_NB_IoT,
-                                  buffer,
-                                  100);
+  enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message_NB,
+                                   NULL,
+                                   (void *)&dl_ccch_msg_NB_IoT,
+                                   buffer,
+                                   100);
 
- if (enc_rval.encoded <= 0) {
-     LOG_F(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
-              enc_rval.failed_type->name, enc_rval.encoded);
- }
+  if (enc_rval.encoded <= 0) {
+    LOG_F(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
+  }
 
 #ifdef USER_MODE
- LOG_D(RRC,"RRCConnectionSetup-NB Encoded %zd bits (%zd bytes), ecause %d\n",
-       enc_rval.encoded,(enc_rval.encoded+7)/8,ecause);
+  LOG_D(RRC,"RRCConnectionSetup-NB Encoded %zd bits (%zd bytes), ecause %d\n",
+        enc_rval.encoded,(enc_rval.encoded+7)/8,ecause);
 #endif
-
- return((enc_rval.encoded+7)/8);
+  return((enc_rval.encoded+7)/8);
 }
 
 /*do_SecurityModeCommand - exactly the same as previous implementation*/
 uint8_t do_SecurityModeCommand_NB_IoT(
-  const protocol_ctxt_t* const ctxt_pP,
-  uint8_t* const buffer,
+  const protocol_ctxt_t *const ctxt_pP,
+  uint8_t *const buffer,
   const uint8_t Transaction_id,
   const uint8_t cipheringAlgorithm,
   const uint8_t integrityProtAlgorithm)
 {
   DL_DCCH_Message_NB_t dl_dcch_msg_NB_IoT;
   asn_enc_rval_t enc_rval;
-
   memset(&dl_dcch_msg_NB_IoT,0,sizeof(DL_DCCH_Message_NB_t));
-
   dl_dcch_msg_NB_IoT.message.present = DL_DCCH_MessageType_NB_PR_c1;
   dl_dcch_msg_NB_IoT.message.choice.c1.present = DL_DCCH_MessageType_NB__c1_PR_securityModeCommand_r13;
-
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.securityModeCommand_r13.rrc_TransactionIdentifier = Transaction_id;
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.securityModeCommand_r13.criticalExtensions.present = SecurityModeCommand__criticalExtensions_PR_c1;
-
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.securityModeCommand_r13.criticalExtensions.choice.c1.present =
-		  SecurityModeCommand__criticalExtensions__c1_PR_securityModeCommand_r8;
-
+    SecurityModeCommand__criticalExtensions__c1_PR_securityModeCommand_r8;
   // the two following information could be based on the mod_id
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.securityModeCommand_r13.criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.cipheringAlgorithm
     = (CipheringAlgorithm_r12_t)cipheringAlgorithm; //bug solved
-
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.securityModeCommand_r13.criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.integrityProtAlgorithm
     = (e_SecurityAlgorithmConfig__integrityProtAlgorithm)integrityProtAlgorithm;
-
-//only changed "asn_DEF_DL_DCCH_Message_NB"
+  //only changed "asn_DEF_DL_DCCH_Message_NB"
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_DCCH_Message_NB, (void*)&dl_dcch_msg_NB_IoT);
+  xer_fprint(stdout, &asn_DEF_DL_DCCH_Message_NB, (void *)&dl_dcch_msg_NB_IoT);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_DCCH_Message_NB,
-                                   (void*)&dl_dcch_msg_NB_IoT,
+                                   NULL,
+                                   (void *)&dl_dcch_msg_NB_IoT,
                                    buffer,
                                    100);
+
   if (enc_rval.encoded <= 0) {
-      LOG_F(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
+    LOG_F(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
   }
 
-
-//#if defined(ENABLE_ITTI)
-//# if !defined(DISABLE_XER_SPRINT)....
-
+  //#if defined(ENABLE_ITTI)
+  //# if !defined(DISABLE_XER_SPRINT)....
 #ifdef USER_MODE
   LOG_D(RRC,"[NB-IoT %d] securityModeCommand-NB for UE %x Encoded %zd bits (%zd bytes)\n",
         ctxt_pP->module_id,
@@ -971,46 +809,40 @@ uint8_t do_SecurityModeCommand_NB_IoT(
 
 /*do_UECapabilityEnquiry_NB_IoT - very similar to legacy lte*/
 uint8_t do_UECapabilityEnquiry_NB_IoT(
-  const protocol_ctxt_t* const ctxt_pP,
-  uint8_t*               const buffer,
+  const protocol_ctxt_t *const ctxt_pP,
+  uint8_t               *const buffer,
   const uint8_t                Transaction_id
 )
 
 {
-
   DL_DCCH_Message_NB_t dl_dcch_msg_NB_IoT;
   //no RAT type in NB-IoT
   asn_enc_rval_t enc_rval;
-
   memset(&dl_dcch_msg_NB_IoT,0,sizeof(DL_DCCH_Message_NB_t));
-
   dl_dcch_msg_NB_IoT.message.present           = DL_DCCH_MessageType_NB_PR_c1;
   dl_dcch_msg_NB_IoT.message.choice.c1.present = DL_DCCH_MessageType_NB__c1_PR_ueCapabilityEnquiry_r13;
-
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.ueCapabilityEnquiry_r13.rrc_TransactionIdentifier = Transaction_id;
-
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.ueCapabilityEnquiry_r13.criticalExtensions.present = UECapabilityEnquiry_NB__criticalExtensions_PR_c1;
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.ueCapabilityEnquiry_r13.criticalExtensions.choice.c1.present =
-		  UECapabilityEnquiry_NB__criticalExtensions__c1_PR_ueCapabilityEnquiry_r13;
-
+    UECapabilityEnquiry_NB__criticalExtensions__c1_PR_ueCapabilityEnquiry_r13;
   //no ue_CapabilityRequest (list of RAT_Type)
-
-//only changed "asn_DEF_DL_DCCH_Message_NB"
+  //only changed "asn_DEF_DL_DCCH_Message_NB"
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_DCCH_Message_NB, (void*)&dl_dcch_msg_NB_IoT);
+  xer_fprint(stdout, &asn_DEF_DL_DCCH_Message_NB, (void *)&dl_dcch_msg_NB_IoT);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_DCCH_Message_NB,
-                                   (void*)&dl_dcch_msg_NB_IoT,
+                                   NULL,
+                                   (void *)&dl_dcch_msg_NB_IoT,
                                    buffer,
                                    100);
-  if (enc_rval.encoded <= 0) {
-     LOG_F(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
-    }
 
-//#if defined(ENABLE_ITTI)
-//# if !defined(DISABLE_XER_SPRINT)....
+  if (enc_rval.encoded <= 0) {
+    LOG_F(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
+  }
 
+  //#if defined(ENABLE_ITTI)
+  //# if !defined(DISABLE_XER_SPRINT)....
 #ifdef USER_MODE
   LOG_D(RRC,"[NB-IoT %d] UECapabilityEnquiry-NB for UE %x Encoded %zd bits (%zd bytes)\n",
         ctxt_pP->module_id,
@@ -1033,39 +865,32 @@ uint8_t do_UECapabilityEnquiry_NB_IoT(
  * (including RBs, MAC main configuration and physical channel configuration)
  * including any associated dedicated NAS information.*/
 uint16_t do_RRCConnectionReconfiguration_NB_IoT(
-  const protocol_ctxt_t*        const ctxt_pP,
-    uint8_t                            *buffer,
-    uint8_t                             Transaction_id,
-    SRB_ToAddModList_NB_r13_t          *SRB1_list_NB, //SRB_ConfigList2 (default)--> only SRB1
-    DRB_ToAddModList_NB_r13_t          *DRB_list_NB_IoT, //DRB_ConfigList (default)
-    DRB_ToReleaseList_NB_r13_t         *DRB_list2_NB_IoT, //is NULL when passed
-    struct PhysicalConfigDedicated_NB_r13     *physicalConfigDedicated_NB_IoT,
-	MAC_MainConfig_NB_r13_t                   *mac_MainConfig_NB_IoT,
-  struct RRCConnectionReconfiguration_NB_r13_IEs__dedicatedInfoNASList_r13* dedicatedInfoNASList_NB_IoT)
+  const protocol_ctxt_t        *const ctxt_pP,
+  uint8_t                            *buffer,
+  uint8_t                             Transaction_id,
+  SRB_ToAddModList_NB_r13_t          *SRB1_list_NB, //SRB_ConfigList2 (default)--> only SRB1
+  DRB_ToAddModList_NB_r13_t          *DRB_list_NB_IoT, //DRB_ConfigList (default)
+  DRB_ToReleaseList_NB_r13_t         *DRB_list2_NB_IoT, //is NULL when passed
+  struct PhysicalConfigDedicated_NB_r13     *physicalConfigDedicated_NB_IoT,
+  MAC_MainConfig_NB_r13_t                   *mac_MainConfig_NB_IoT,
+  struct RRCConnectionReconfiguration_NB_r13_IEs__dedicatedInfoNASList_r13 *dedicatedInfoNASList_NB_IoT)
 
 {
-
- //check on DRB_list if contains more than 2 DRB?
-
+  //check on DRB_list if contains more than 2 DRB?
   asn_enc_rval_t enc_rval;
   DL_DCCH_Message_NB_t dl_dcch_msg_NB_IoT;
   RRCConnectionReconfiguration_NB_t *rrcConnectionReconfiguration_NB;
-
-
   memset(&dl_dcch_msg_NB_IoT,0,sizeof(DL_DCCH_Message_NB_t));
-
   dl_dcch_msg_NB_IoT.message.present           = DL_DCCH_MessageType_NB_PR_c1;
   dl_dcch_msg_NB_IoT.message.choice.c1.present = DL_DCCH_MessageType_NB__c1_PR_rrcConnectionReconfiguration_r13;
   rrcConnectionReconfiguration_NB          = &dl_dcch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionReconfiguration_r13;
-
   // RRCConnectionReconfiguration
   rrcConnectionReconfiguration_NB->rrc_TransactionIdentifier = Transaction_id;
   rrcConnectionReconfiguration_NB->criticalExtensions.present = RRCConnectionReconfiguration_NB__criticalExtensions_PR_c1;
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.present =RRCConnectionReconfiguration_NB__criticalExtensions__c1_PR_rrcConnectionReconfiguration_r13 ;
-
   //RAdioResourceconfigDedicated
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13 =
-		  CALLOC(1,sizeof(*rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13));
+    CALLOC(1,sizeof(*rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13));
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->srb_ToAddModList_r13 = SRB1_list_NB; //only SRB1
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->drb_ToAddModList_r13 = DRB_list_NB_IoT;
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->drb_ToReleaseList_r13 = DRB_list2_NB_IoT; //NULL
@@ -1075,77 +900,69 @@ uint16_t do_RRCConnectionReconfiguration_NB_IoT(
 
   if (mac_MainConfig_NB_IoT!=NULL) {
     rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13 =
-    		CALLOC(1, sizeof(*rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13));
+      CALLOC(1, sizeof(*rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13));
     rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13->present
       =RadioResourceConfigDedicated_NB_r13__mac_MainConfig_r13_PR_explicitValue_r13;
-   //why memcopy only this one?
+    //why memcopy only this one?
     memcpy(&rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13->choice.explicitValue_r13,
            mac_MainConfig_NB_IoT, sizeof(*mac_MainConfig_NB_IoT));
-
   } else {
-	  rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13=NULL;
+    rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13=NULL;
   }
 
   //no measConfig, measIDlist
   //no mobilityControlInfo
-
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.dedicatedInfoNASList_r13 = dedicatedInfoNASList_NB_IoT;
   //mainly used for cell-reselection/handover purposes??
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.fullConfig_r13 = NULL;
-
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_DCCH_Message_NB,
-                                   (void*)&dl_dcch_msg_NB_IoT,
+                                   NULL,
+                                   (void *)&dl_dcch_msg_NB_IoT,
                                    buffer,
                                    RRC_BUF_SIZE);
+
   if (enc_rval.encoded <= 0) {
-     LOG_F(RRC, "ASN1 message encoding failed %s, %li\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
+    LOG_F(RRC, "ASN1 message encoding failed %s, %li\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
   }
 
   //changed only asn_DEF_DL_DCCH_Message_NB
 #ifdef XER_PRINT
-  xer_fprint(stdout,&asn_DEF_DL_DCCH_Message_NB,(void*)&dl_dcch_msg_NB_IoT);
+  xer_fprint(stdout,&asn_DEF_DL_DCCH_Message_NB,(void *)&dl_dcch_msg_NB_IoT);
 #endif
-
-//#if defined(ENABLE_ITTI)
-//# if !defined(DISABLE_XER_SPRINT)...
-
-
+  //#if defined(ENABLE_ITTI)
+  //# if !defined(DISABLE_XER_SPRINT)...
   LOG_I(RRC,"RRCConnectionReconfiguration-NB Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
-
   return((enc_rval.encoded+7)/8);
 }
 
 /*do_RRCConnectionReestablishmentReject - exactly the same as legacy LTE*/
 uint8_t do_RRCConnectionReestablishmentReject_NB_IoT(
-    uint8_t                    Mod_id,
-    uint8_t*                   const buffer)
+  uint8_t                    Mod_id,
+  uint8_t                   *const buffer)
 {
-
   asn_enc_rval_t enc_rval;
-
   DL_CCCH_Message_NB_t dl_ccch_msg_NB_IoT;
   RRCConnectionReestablishmentReject_t *rrcConnectionReestablishmentReject;
-
   memset((void *)&dl_ccch_msg_NB_IoT,0,sizeof(DL_CCCH_Message_NB_t));
   dl_ccch_msg_NB_IoT.message.present = DL_CCCH_MessageType_NB_PR_c1;
   dl_ccch_msg_NB_IoT.message.choice.c1.present = DL_CCCH_MessageType_NB__c1_PR_rrcConnectionReestablishmentReject_r13;
   rrcConnectionReestablishmentReject    = &dl_ccch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionReestablishmentReject_r13;
-
   // RRCConnectionReestablishmentReject //exactly the same as LTE
   rrcConnectionReestablishmentReject->criticalExtensions.present = RRCConnectionReestablishmentReject__criticalExtensions_PR_rrcConnectionReestablishmentReject_r8;
-
   //Only change in "asn_DEF_DL_CCCH_Message_NB"
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message_NB, (void*)&dl_ccch_msg_NB_IoT);
+  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message_NB, (void *)&dl_ccch_msg_NB_IoT);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message_NB,
-                                   (void*)&dl_ccch_msg_NB_IoT,
+                                   NULL,
+                                   (void *)&dl_ccch_msg_NB_IoT,
                                    buffer,
                                    100);
+
   if (enc_rval.encoded <= 0) {
-     LOG_F(RRC,"ASN1 message encoding failed (%s, %lu)!\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
+    LOG_F(RRC,"ASN1 message encoding failed (%s, %lu)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
   }
 
   //Only change in "asn_DEF_DL_CCCH_Message_NB"
@@ -1157,42 +974,34 @@ uint8_t do_RRCConnectionReestablishmentReject_NB_IoT(
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_CCCH_Message_NB, (void *) &dl_ccch_msg_NB_IoT)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB_NB_IoT, RRC_DL_CCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_ccch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_ccch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
     }
   }
 # endif
 #endif
-
 #ifdef USER_MODE
   LOG_D(RRC,"RRCConnectionReestablishmentReject Encoded %zd bits (%zd bytes)\n",
         enc_rval.encoded,(enc_rval.encoded+7)/8);
 #endif
-
   return((enc_rval.encoded+7)/8);
 }
 
 /*do_RRCConnectionReject_NB_IoT*/
 uint8_t do_RRCConnectionReject_NB_IoT(
-    uint8_t                    Mod_id,
-    uint8_t*                   const buffer)
+  uint8_t                    Mod_id,
+  uint8_t                   *const buffer)
 
 {
-
   asn_enc_rval_t enc_rval;
-
   DL_CCCH_Message_NB_t          dl_ccch_msg_NB_IoT;
   RRCConnectionReject_NB_t      *rrcConnectionReject_NB_IoT;
-
   memset((void *)&dl_ccch_msg_NB_IoT,0,sizeof(DL_CCCH_Message_NB_t));
   dl_ccch_msg_NB_IoT.message.present           = DL_CCCH_MessageType_NB_PR_c1;
   dl_ccch_msg_NB_IoT.message.choice.c1.present = DL_CCCH_MessageType_NB__c1_PR_rrcConnectionReject_r13;
   rrcConnectionReject_NB_IoT = &dl_ccch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionReject_r13;
-
   // RRCConnectionReject-NB_IoT
   rrcConnectionReject_NB_IoT->criticalExtensions.present = RRCConnectionReject_NB__criticalExtensions_PR_c1;
   rrcConnectionReject_NB_IoT->criticalExtensions.choice.c1.present = RRCConnectionReject_NB__criticalExtensions__c1_PR_rrcConnectionReject_r13;
@@ -1201,21 +1010,22 @@ uint8_t do_RRCConnectionReject_NB_IoT(
   //new-use of suspend indication
   //If present, this field indicates that the UE should remain suspended and not release its stored context.
   rrcConnectionReject_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReject_r13.rrc_SuspendIndication_r13=
-		  CALLOC(1, sizeof(long));
+    CALLOC(1, sizeof(long));
   *(rrcConnectionReject_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReject_r13.rrc_SuspendIndication_r13)=
-		  RRCConnectionReject_NB_r13_IEs__rrc_SuspendIndication_r13_true;
-
+    RRCConnectionReject_NB_r13_IEs__rrc_SuspendIndication_r13_true;
   //Only Modified "asn_DEF_DL_CCCH_Message_NB"
 #ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message_NB, (void*)&dl_ccch_msg);
+  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message_NB, (void *)&dl_ccch_msg);
 #endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message_NB,
-                                   (void*)&dl_ccch_msg_NB_IoT,
+                                   NULL,
+                                   (void *)&dl_ccch_msg_NB_IoT,
                                    buffer,
                                    100);
+
   if (enc_rval.encoded <= 0) {
-     LOG_F(RRC, "ASN1 message encoding failed (%s, %ld)!\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
+    LOG_F(RRC, "ASN1 message encoding failed (%s, %ld)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
   }
 
 #if defined(ENABLE_ITTI)
@@ -1226,22 +1036,18 @@ uint8_t do_RRCConnectionReject_NB_IoT(
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_CCCH_Message_NB, (void *) &dl_ccch_msg_NB_IoT)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB_NB_IoT, RRC_DL_CCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_ccch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_ccch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
     }
   }
 # endif
 #endif
-
 #ifdef USER_MODE
   LOG_D(RRC,"RRCConnectionReject-NB Encoded %zd bits (%zd bytes)\n",
         enc_rval.encoded,(enc_rval.encoded+7)/8);
 #endif
-
   return((enc_rval.encoded+7)/8);
 }
 
@@ -1251,19 +1057,16 @@ uint8_t do_RRCConnectionReject_NB_IoT(
 
 /*do_DLInformationTransfer_NB*/
 uint8_t do_DLInformationTransfer_NB_IoT(
-		uint8_t Mod_id,
-		uint8_t **buffer,
-		uint8_t transaction_id,
-		uint32_t pdu_length,
-		uint8_t *pdu_buffer)
+  uint8_t Mod_id,
+  uint8_t **buffer,
+  uint8_t transaction_id,
+  uint32_t pdu_length,
+  uint8_t *pdu_buffer)
 
 {
   ssize_t encoded;
-
   DL_DCCH_Message_NB_t dl_dcch_msg_NB_IoT;
-
   memset(&dl_dcch_msg_NB_IoT, 0, sizeof(DL_DCCH_Message_NB_t));
-
   dl_dcch_msg_NB_IoT.message.present           = DL_DCCH_MessageType_NB_PR_c1;
   dl_dcch_msg_NB_IoT.message.choice.c1.present = DL_DCCH_MessageType_NB__c1_PR_dlInformationTransfer_r13;
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.dlInformationTransfer_r13.rrc_TransactionIdentifier = transaction_id;
@@ -1271,9 +1074,7 @@ uint8_t do_DLInformationTransfer_NB_IoT(
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.dlInformationTransfer_r13.criticalExtensions.choice.c1.present = DLInformationTransfer_NB__criticalExtensions__c1_PR_dlInformationTransfer_r13;
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.dlInformationTransfer_r13.criticalExtensions.choice.c1.choice.dlInformationTransfer_r13.dedicatedInfoNAS_r13.size = pdu_length;
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.dlInformationTransfer_r13.criticalExtensions.choice.c1.choice.dlInformationTransfer_r13.dedicatedInfoNAS_r13.buf = pdu_buffer;
-
-  encoded = uper_encode_to_new_buffer (&asn_DEF_DL_DCCH_Message_NB, NULL, (void*) &dl_dcch_msg_NB_IoT, (void **) buffer);
-
+  encoded = uper_encode_to_new_buffer (&asn_DEF_DL_DCCH_Message_NB, NULL, (void *) &dl_dcch_msg_NB_IoT, (void **) buffer);
   //only change in "asn_DEF_DL_DCCH_Message_NB"
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
@@ -1283,17 +1084,14 @@ uint8_t do_DLInformationTransfer_NB_IoT(
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_DCCH_Message_NB, (void *)&dl_dcch_msg_NB_IoT)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB_NB_IoT, RRC_DL_DCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_dcch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_dcch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
     }
   }
 # endif
 #endif
-
   return encoded;
 }
 
@@ -1304,51 +1102,44 @@ uint8_t do_DLInformationTransfer_NB_IoT(
 
 /*do_RRCConnectionReestablishment_NB-->used to re-establish SRB1*/ //which parameter to use?
 uint8_t do_RRCConnectionReestablishment_NB_IoT(
-		uint8_t Mod_id,
-		uint8_t* const buffer,
-		const uint8_t     Transaction_id,
-		const NB_IoT_DL_FRAME_PARMS* const frame_parms, //to be changed
-		SRB_ToAddModList_NB_r13_t*      SRB_list_NB_IoT) //should contain SRB1 already configured?
+  uint8_t Mod_id,
+  uint8_t *const buffer,
+  const uint8_t     Transaction_id,
+  const NB_IoT_DL_FRAME_PARMS *const frame_parms, //to be changed
+  SRB_ToAddModList_NB_r13_t      *SRB_list_NB_IoT) //should contain SRB1 already configured?
 {
+  asn_enc_rval_t enc_rval;
+  DL_CCCH_Message_NB_t dl_ccch_msg_NB_IoT;
+  RRCConnectionReestablishment_NB_t *rrcConnectionReestablishment_NB_IoT;
+  memset(&dl_ccch_msg_NB_IoT, 0, sizeof(DL_CCCH_Message_NB_t));
+  dl_ccch_msg_NB_IoT.message.present = DL_CCCH_MessageType_NB_PR_c1;
+  dl_ccch_msg_NB_IoT.message.choice.c1.present = DL_CCCH_MessageType_NB__c1_PR_rrcConnectionReestablishment_r13;
+  rrcConnectionReestablishment_NB_IoT = &dl_ccch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionReestablishment_r13;
+  //rrcConnectionReestablishment_NB
+  rrcConnectionReestablishment_NB_IoT->rrc_TransactionIdentifier = Transaction_id;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.present = RRCConnectionReestablishment_NB__criticalExtensions_PR_c1;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.present = RRCConnectionReestablishment_NB__criticalExtensions__c1_PR_rrcConnectionReestablishment_r13;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.srb_ToAddModList_r13 = SRB_list_NB_IoT;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.drb_ToAddModList_r13 = NULL;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.drb_ToReleaseList_r13 = NULL;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.rlf_TimersAndConstants_r13= NULL;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.mac_MainConfig_r13= NULL;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.physicalConfigDedicated_r13 = NULL;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.nextHopChainingCount_r13=0;
+  enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message_NB,
+                                   NULL,
+                                   (void *)&dl_ccch_msg_NB_IoT,
+                                   buffer,
+                                   RRC_BUF_SIZE);
 
-	asn_enc_rval_t enc_rval;
-	DL_CCCH_Message_NB_t dl_ccch_msg_NB_IoT;
-	RRCConnectionReestablishment_NB_t* rrcConnectionReestablishment_NB_IoT;
-
-	memset(&dl_ccch_msg_NB_IoT, 0, sizeof(DL_CCCH_Message_NB_t));
-
-	dl_ccch_msg_NB_IoT.message.present = DL_CCCH_MessageType_NB_PR_c1;
-	dl_ccch_msg_NB_IoT.message.choice.c1.present = DL_CCCH_MessageType_NB__c1_PR_rrcConnectionReestablishment_r13;
-	rrcConnectionReestablishment_NB_IoT = &dl_ccch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionReestablishment_r13;
-
-	//rrcConnectionReestablishment_NB
-	rrcConnectionReestablishment_NB_IoT->rrc_TransactionIdentifier = Transaction_id;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.present = RRCConnectionReestablishment_NB__criticalExtensions_PR_c1;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.present = RRCConnectionReestablishment_NB__criticalExtensions__c1_PR_rrcConnectionReestablishment_r13;
-
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.srb_ToAddModList_r13 = SRB_list_NB_IoT;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.drb_ToAddModList_r13 = NULL;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.drb_ToReleaseList_r13 = NULL;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.rlf_TimersAndConstants_r13= NULL;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.mac_MainConfig_r13= NULL;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.physicalConfigDedicated_r13 = NULL;
-
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.nextHopChainingCount_r13=0;
-
-	enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message_NB,
-	                                   (void*)&dl_ccch_msg_NB_IoT,
-	                                   buffer,
-	                                   RRC_BUF_SIZE);
-
-	if (enc_rval.encoded <= 0) {
-           LOG_F(RRC, "ASN1 message encoding failed (%s, %li)!\n",
-	               enc_rval.failed_type->name, enc_rval.encoded);
-        }
+  if (enc_rval.encoded <= 0) {
+    LOG_F(RRC, "ASN1 message encoding failed (%s, %li)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
+  }
 
 #ifdef XER_PRINT
-  xer_fprint(stdout,&asn_DEF_DL_CCCH_Message_NB,(void*)&dl_ccch_msg_NB_IoT);
+  xer_fprint(stdout,&asn_DEF_DL_CCCH_Message_NB,(void *)&dl_ccch_msg_NB_IoT);
 #endif
-
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
   {
@@ -1357,17 +1148,14 @@ uint8_t do_RRCConnectionReestablishment_NB_IoT(
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_CCCH_Message_NB, (void *) &dl_ccch_msg_NB_IoT)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB_NB_IoT, RRC_DL_CCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_ccch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_ccch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
     }
   }
 # endif
 #endif
-
   LOG_I(RRC,"RRCConnectionReestablishment-NB Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
   return 0;
 }
@@ -1376,39 +1164,30 @@ uint8_t do_RRCConnectionReestablishment_NB_IoT(
 uint8_t do_RRCConnectionRelease_NB_IoT(
   uint8_t                             Mod_id,
   uint8_t                            *buffer,
- const uint8_t                             Transaction_id)
+  const uint8_t                             Transaction_id)
 {
-
   asn_enc_rval_t enc_rval;
-
   DL_DCCH_Message_NB_t dl_dcch_msg_NB_IoT;
   RRCConnectionRelease_NB_t *rrcConnectionRelease_NB_IoT;
-
-
   memset(&dl_dcch_msg_NB_IoT,0,sizeof(DL_DCCH_Message_NB_t));
-
   dl_dcch_msg_NB_IoT.message.present           = DL_DCCH_MessageType_NB_PR_c1;
   dl_dcch_msg_NB_IoT.message.choice.c1.present = DL_DCCH_MessageType_NB__c1_PR_rrcConnectionRelease_r13;
   rrcConnectionRelease_NB_IoT                  = &dl_dcch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionRelease_r13;
-
   // RRCConnectionRelease
   rrcConnectionRelease_NB_IoT->rrc_TransactionIdentifier = Transaction_id;
   rrcConnectionRelease_NB_IoT->criticalExtensions.present = RRCConnectionRelease_NB__criticalExtensions_PR_c1;
   rrcConnectionRelease_NB_IoT->criticalExtensions.choice.c1.present =RRCConnectionRelease_NB__criticalExtensions__c1_PR_rrcConnectionRelease_r13 ;
-
   rrcConnectionRelease_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r13.releaseCause_r13 = ReleaseCause_NB_r13_other;
   rrcConnectionRelease_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r13.redirectedCarrierInfo_r13 = NULL;
   rrcConnectionRelease_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r13.extendedWaitTime_r13 = NULL;
-
   //Why allocate memory for non critical extension?
   rrcConnectionRelease_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r13.nonCriticalExtension=CALLOC(1,
       sizeof(*rrcConnectionRelease_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r13.nonCriticalExtension));
-
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_DCCH_Message_NB,
-                                   (void*)&dl_dcch_msg_NB_IoT,
+                                   NULL,
+                                   (void *)&dl_dcch_msg_NB_IoT,
                                    buffer,
                                    RRC_BUF_SIZE);//check
-
   return((enc_rval.encoded+7)/8);
 }
 
diff --git a/openair2/RRC/LITE/rrc_UE.c b/openair2/RRC/LITE/rrc_UE.c
index 3edf230ac2817ca736956c7affd80342980629f4..7cd87ab2b75ef843ca7e32bab590aea225b4f531 100644
--- a/openair2/RRC/LITE/rrc_UE.c
+++ b/openair2/RRC/LITE/rrc_UE.c
@@ -97,38 +97,38 @@ extern void *bigphys_malloc(int);
 //extern int8_t dB_fixed2(uint32_t x,uint32_t y);
 
 extern void pdcp_config_set_security(
-  const protocol_ctxt_t* const  ctxt_pP,
-  pdcp_t         * const pdcp_pP,
+  const protocol_ctxt_t *const  ctxt_pP,
+  pdcp_t          *const pdcp_pP,
   const rb_id_t         rb_idP,
   const uint16_t        lc_idP,
   const uint8_t         security_modeP,
-  uint8_t        * const kRRCenc,
-  uint8_t        * const kRRCint,
-  uint8_t        * const  kUPenc);
+  uint8_t         *const kRRCenc,
+  uint8_t         *const kRRCint,
+  uint8_t         *const  kUPenc);
 
 // internal prototypes
 
-void rrc_ue_process_securityModeCommand( const protocol_ctxt_t* const ctxt_pP, SecurityModeCommand_t* const securityModeCommand, const uint8_t eNB_index );
+void rrc_ue_process_securityModeCommand( const protocol_ctxt_t *const ctxt_pP, SecurityModeCommand_t *const securityModeCommand, const uint8_t eNB_index );
 
-static int decode_SI( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index );
+static int decode_SI( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index );
 
-static int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t rsrq, const uint8_t rsrp );
+static int decode_SIB1( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t rsrq, const uint8_t rsrp );
 
 /** \brief Generates/Encodes RRCConnnectionSetupComplete message at UE
  *  \param ctxt_pP Running context
  *  \param eNB_index Index of corresponding eNB/CH
  *  \param Transaction_id Transaction identifier
  */
-static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id );
+static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id );
 
 /** \brief Generates/Encodes RRCConnectionReconfigurationComplete message at UE
  *  \param ctxt_pP Running context
  *  \param eNB_index Index of corresponding eNB/CH
  *  \param Transaction_id RRC transaction identifier
  */
-static void rrc_ue_generate_RRCConnectionReconfigurationComplete( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id );
+static void rrc_ue_generate_RRCConnectionReconfigurationComplete( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id );
 
-static void rrc_ue_generate_MeasurementReport(protocol_ctxt_t* const ctxt_pP, uint8_t eNB_index );
+static void rrc_ue_generate_MeasurementReport(protocol_ctxt_t *const ctxt_pP, uint8_t eNB_index );
 
 static uint8_t check_trigger_meas_event(
   uint8_t module_idP,
@@ -171,15 +171,12 @@ static int rrc_set_state (module_id_t ue_mod_idP, Rrc_State_t state)
 
   if (UE_rrc_inst[ue_mod_idP].RrcState != state) {
     UE_rrc_inst[ue_mod_idP].RrcState = state;
-
 #if defined(ENABLE_ITTI)
     {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message(TASK_RRC_UE, RRC_STATE_IND);
       RRC_STATE_IND(msg_p).state = UE_rrc_inst[ue_mod_idP].RrcState;
       RRC_STATE_IND(msg_p).sub_state = UE_rrc_inst[ue_mod_idP].RrcSubState;
-
       itti_send_msg_to_task(TASK_UNKNOWN, UE_MODULE_ID_TO_INSTANCE(ue_mod_idP), msg_p);
     }
 #endif
@@ -195,35 +192,32 @@ static int rrc_set_sub_state( module_id_t ue_mod_idP, Rrc_Sub_State_t subState )
 #if (defined(ENABLE_ITTI) && (defined(ENABLE_USE_MME) || ENABLE_RAL))
 
   switch (UE_rrc_inst[ue_mod_idP].RrcState) {
-  case RRC_STATE_INACTIVE:
-    AssertFatal ((RRC_SUB_STATE_INACTIVE_FIRST <= subState) && (subState <= RRC_SUB_STATE_INACTIVE_LAST),
-                 "Invalid sub state %d for state %d!\n", subState, UE_rrc_inst[ue_mod_idP].RrcState);
-    break;
-
-  case RRC_STATE_IDLE:
-    AssertFatal ((RRC_SUB_STATE_IDLE_FIRST <= subState) && (subState <= RRC_SUB_STATE_IDLE_LAST),
-                 "Invalid sub state %d for state %d!\n", subState, UE_rrc_inst[ue_mod_idP].RrcState);
-    break;
-
-  case RRC_STATE_CONNECTED:
-    AssertFatal ((RRC_SUB_STATE_CONNECTED_FIRST <= subState) && (subState <= RRC_SUB_STATE_CONNECTED_LAST),
-                 "Invalid sub state %d for state %d!\n", subState, UE_rrc_inst[ue_mod_idP].RrcState);
-    break;
+    case RRC_STATE_INACTIVE:
+      AssertFatal ((RRC_SUB_STATE_INACTIVE_FIRST <= subState) && (subState <= RRC_SUB_STATE_INACTIVE_LAST),
+                   "Invalid sub state %d for state %d!\n", subState, UE_rrc_inst[ue_mod_idP].RrcState);
+      break;
+
+    case RRC_STATE_IDLE:
+      AssertFatal ((RRC_SUB_STATE_IDLE_FIRST <= subState) && (subState <= RRC_SUB_STATE_IDLE_LAST),
+                   "Invalid sub state %d for state %d!\n", subState, UE_rrc_inst[ue_mod_idP].RrcState);
+      break;
+
+    case RRC_STATE_CONNECTED:
+      AssertFatal ((RRC_SUB_STATE_CONNECTED_FIRST <= subState) && (subState <= RRC_SUB_STATE_CONNECTED_LAST),
+                   "Invalid sub state %d for state %d!\n", subState, UE_rrc_inst[ue_mod_idP].RrcState);
+      break;
   }
 
 #endif
 
   if (UE_rrc_inst[ue_mod_idP].RrcSubState != subState) {
     UE_rrc_inst[ue_mod_idP].RrcSubState = subState;
-
 #if defined(ENABLE_ITTI)
     {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message(TASK_RRC_UE, RRC_STATE_IND);
       RRC_STATE_IND(msg_p).state = UE_rrc_inst[ue_mod_idP].RrcState;
       RRC_STATE_IND(msg_p).sub_state = UE_rrc_inst[ue_mod_idP].RrcSubState;
-
       itti_send_msg_to_task(TASK_UNKNOWN, UE_MODULE_ID_TO_INSTANCE(ue_mod_idP), msg_p);
     }
 #endif
@@ -236,33 +230,31 @@ static int rrc_set_sub_state( module_id_t ue_mod_idP, Rrc_Sub_State_t subState )
 //-----------------------------------------------------------------------------
 void
 openair_rrc_on_ue(
-  const protocol_ctxt_t* const ctxt_pP
+  const protocol_ctxt_t *const ctxt_pP
 )
 //-----------------------------------------------------------------------------
 {
   unsigned short i;
-
-
-    LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" UE?:OPENAIR RRC IN....\n",
-          PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
-
-    for (i = 0; i < NB_eNB_INST; i++) {
-      LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" Activating CCCH (eNB %d)\n",
-            PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), i);
-      UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Srb_id = CCCH;
-      memcpy (&UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Lchan_desc[0], &CCCH_LCHAN_DESC, LCHAN_DESC_SIZE);
-      memcpy (&UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Lchan_desc[1], &CCCH_LCHAN_DESC, LCHAN_DESC_SIZE);
-      rrc_config_buffer (&UE_rrc_inst[ctxt_pP->module_id].Srb0[i], CCCH, 1);
-      UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Active = 1;
-    }
+  LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" UE?:OPENAIR RRC IN....\n",
+        PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
+
+  for (i = 0; i < NB_eNB_INST; i++) {
+    LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" Activating CCCH (eNB %d)\n",
+          PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), i);
+    UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Srb_id = CCCH;
+    memcpy (&UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Lchan_desc[0], &CCCH_LCHAN_DESC, LCHAN_DESC_SIZE);
+    memcpy (&UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Lchan_desc[1], &CCCH_LCHAN_DESC, LCHAN_DESC_SIZE);
+    rrc_config_buffer (&UE_rrc_inst[ctxt_pP->module_id].Srb0[i], CCCH, 1);
+    UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Active = 1;
+  }
 }
 
 //-----------------------------------------------------------------------------
-static void init_SI_UE( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index )
+static void init_SI_UE( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index )
 {
   UE_rrc_inst[ctxt_pP->module_id].sizeof_SIB1[eNB_index] = 0;
   UE_rrc_inst[ctxt_pP->module_id].sizeof_SI[eNB_index] = 0;
-  UE_rrc_inst[ctxt_pP->module_id].SIB1[eNB_index] = (uint8_t*)malloc16_clear( 32 );
+  UE_rrc_inst[ctxt_pP->module_id].SIB1[eNB_index] = (uint8_t *)malloc16_clear( 32 );
   UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index] = malloc16_clear( sizeof(SystemInformationBlockType1_t) );
   UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index] = malloc16_clear( sizeof(SystemInformationBlockType2_t) );
   UE_rrc_inst[ctxt_pP->module_id].sib3[eNB_index] = malloc16_clear( sizeof(SystemInformationBlockType3_t) );
@@ -278,10 +270,8 @@ static void init_SI_UE( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
   UE_rrc_inst[ctxt_pP->module_id].sib12[eNB_index] = malloc16_clear( sizeof(SystemInformationBlockType12_r9_t) );
   UE_rrc_inst[ctxt_pP->module_id].sib13[eNB_index] = malloc16_clear( sizeof(SystemInformationBlockType13_r9_t) );
 #endif
-  UE_rrc_inst[ctxt_pP->module_id].SI[eNB_index] = (uint8_t*)malloc16_clear( 64 );
-
-  UE_rrc_inst[ctxt_pP->module_id].si[eNB_index] = (SystemInformation_t*)malloc16_clear( sizeof(SystemInformation_t) );
-
+  UE_rrc_inst[ctxt_pP->module_id].SI[eNB_index] = (uint8_t *)malloc16_clear( 64 );
+  UE_rrc_inst[ctxt_pP->module_id].si[eNB_index] = (SystemInformation_t *)malloc16_clear( sizeof(SystemInformation_t) );
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus = 0;
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIcnt    = 0;
 }
@@ -298,21 +288,19 @@ static void init_MCCH_UE(module_id_t ue_mod_idP, uint8_t eNB_index)
 
   for (i=0; i<8; i++) { // MAX MBSFN Area
     UE_rrc_inst[ue_mod_idP].Info[eNB_index].MCCHStatus[i] = 0;
-
   }
 }
 #endif
 #endif
 
 //-----------------------------------------------------------------------------
-static void openair_rrc_ue_init_security( const protocol_ctxt_t* const ctxt_pP )
+static void openair_rrc_ue_init_security( const protocol_ctxt_t *const ctxt_pP )
 {
 #if defined(ENABLE_SECURITY)
   //    uint8_t *kRRCenc;
   //    uint8_t *kRRCint;
   char ascii_buffer[65];
   uint8_t i;
-
   memset(UE_rrc_inst[ctxt_pP->module_id].kenb, ctxt_pP->module_id, 32);
 
   for (i = 0; i < 32; i++) {
@@ -335,7 +323,6 @@ char openair_rrc_ue_init( const module_id_t ue_mod_idP, const unsigned char eNB_
         PROTOCOL_RRC_CTXT_ARGS(&ctxt));
   rrc_set_state (ue_mod_idP, RRC_STATE_INACTIVE);
   rrc_set_sub_state (ue_mod_idP, RRC_SUB_STATE_INACTIVE);
-
   LOG_D(RRC,"[UE %d] INIT State = RRC_IDLE (eNB %d)\n",ctxt.module_id,eNB_index);
   UE_rrc_inst[ctxt.module_id].Info[eNB_index].State=RRC_IDLE;
   UE_rrc_inst[ctxt.module_id].Info[eNB_index].T300_active = 0;
@@ -352,16 +339,13 @@ char openair_rrc_ue_init( const module_id_t ue_mod_idP, const unsigned char eNB_
 #else
   UE_rrc_inst[ctxt.module_id].integrity_algorithm = SecurityAlgorithmConfig__integrityProtAlgorithm_reserved;
 #endif
-
   openair_rrc_ue_init_security(&ctxt);
   init_SI_UE(&ctxt,eNB_index);
   LOG_D(RRC,PROTOCOL_RRC_CTXT_FMT"  INIT: phy_sync_2_ch_ind\n",
         PROTOCOL_RRC_CTXT_ARGS(&ctxt));
-
 #ifndef NO_RRM
   send_msg(&S_rrc,msg_rrc_phy_synch_to_CH_ind(ctxt.module_id,eNB_index,UE_rrc_inst[ctxt.module_id].Mac_id));
 #endif
-
 #ifdef NO_RRM //init ch SRB0, SRB1 & BDTCH
   openair_rrc_on_ue(&ctxt);
 #endif
@@ -374,18 +358,15 @@ char openair_rrc_ue_init( const module_id_t ue_mod_idP, const unsigned char eNB_
 
   UE_rrc_inst[ue_mod_idP].num_active_cba_groups = 0;
 #endif
-
   return 0;
 }
 
 //-----------------------------------------------------------------------------
-void rrc_ue_generate_RRCConnectionRequest( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index )
+void rrc_ue_generate_RRCConnectionRequest( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index )
 {
-
   uint8_t i=0,rv[6];
 
   if(UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.payload_size ==0) {
-
     // Get RRCConnectionRequest, fill random for now
     // Generate random byte stream for contention resolution
     for (i=0; i<6; i++) {
@@ -402,9 +383,8 @@ void rrc_ue_generate_RRCConnectionRequest( const protocol_ctxt_t* const ctxt_pP,
     UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.payload_size =
       do_RRCConnectionRequest(
         ctxt_pP->module_id,
-        (uint8_t*)UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.Payload,
+        (uint8_t *)UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.Payload,
         rv);
-
     LOG_I(RRC,"[UE %d] : Frame %d, Logical Channel UL-CCCH (SRB0), Generating RRCConnectionRequest (bytes %d, eNB %d)\n",
           ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.payload_size, eNB_index);
 
@@ -415,7 +395,6 @@ void rrc_ue_generate_RRCConnectionRequest( const protocol_ctxt_t* const ctxt_pP,
     LOG_T(RRC,"\n");
     /*UE_rrc_inst[ue_mod_idP].Srb0[Idx].Tx_buffer.Payload[i] = taus()&0xff;
     UE_rrc_inst[ue_mod_idP].Srb0[Idx].Tx_buffer.payload_size =i; */
-
   }
 }
 
@@ -457,12 +436,11 @@ static const char const nas_attach_req_guti[] = {
 //-----------------------------------------------------------------------------
 void
 rrc_t310_expiration(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const uint8_t                 eNB_index
 )
 //-----------------------------------------------------------------------------
 {
-
   if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State != RRC_CONNECTED) {
     LOG_D(RRC, "Timer 310 expired, going to RRC_IDLE\n");
     UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State = RRC_IDLE;
@@ -474,7 +452,7 @@ rrc_t310_expiration(
 
     if (UE_rrc_inst[ctxt_pP->module_id].Srb2[eNB_index].Active == 1) {
       LOG_D (RRC,"[Inst %d] eNB_index %d, Remove RB %d\n ", ctxt_pP->module_id, eNB_index,
-           UE_rrc_inst[ctxt_pP->module_id].Srb2[eNB_index].Srb_info.Srb_id);
+             UE_rrc_inst[ctxt_pP->module_id].Srb2[eNB_index].Srb_info.Srb_id);
       rrc_pdcp_config_req (ctxt_pP,
                            SRB_FLAG_YES,
                            CONFIG_ACTION_REMOVE,
@@ -496,43 +474,38 @@ rrc_t310_expiration(
 }
 
 //-----------------------------------------------------------------------------
-static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id )
+static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id )
 {
-
   uint8_t    buffer[100];
   uint8_t    size;
-  const char * nas_msg;
+  const char *nas_msg;
   int   nas_msg_length;
-
 #if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
-  nas_msg         = (char*) UE_rrc_inst[ctxt_pP->module_id].initialNasMsg.data;
+  nas_msg         = (char *) UE_rrc_inst[ctxt_pP->module_id].initialNasMsg.data;
   nas_msg_length  = UE_rrc_inst[ctxt_pP->module_id].initialNasMsg.length;
 #else
   nas_msg         = nas_attach_req_imsi;
   nas_msg_length  = sizeof(nas_attach_req_imsi);
 #endif
-
   size = do_RRCConnectionSetupComplete(ctxt_pP->module_id, buffer, Transaction_id, nas_msg_length, nas_msg);
-
   LOG_I(RRC,"[UE %d][RAPROC] Frame %d : Logical Channel UL-DCCH (SRB1), Generating RRCConnectionSetupComplete (bytes%d, eNB %d)\n",
         ctxt_pP->module_id,ctxt_pP->frame, size, eNB_index);
   LOG_D(RLC,
         "[FRAME %05d][RRC_UE][MOD %02d][][--- PDCP_DATA_REQ/%d Bytes (RRCConnectionSetupComplete to eNB %d MUI %d) --->][PDCP][MOD %02d][RB %02d]\n",
         ctxt_pP->frame, ctxt_pP->module_id+NB_eNB_INST, size, eNB_index, rrc_mui, ctxt_pP->module_id+NB_eNB_INST, DCCH);
   rrc_data_req_ue (
-		ctxt_pP,
-		DCCH,
-		rrc_mui++,
-		SDU_CONFIRM_NO,
-		size,
-		buffer,
-		PDCP_TRANSMISSION_MODE_CONTROL);
+    ctxt_pP,
+    DCCH,
+    rrc_mui++,
+    SDU_CONFIRM_NO,
+    size,
+    buffer,
+    PDCP_TRANSMISSION_MODE_CONTROL);
 }
 
 //-----------------------------------------------------------------------------
-static void rrc_ue_generate_RRCConnectionReconfigurationComplete( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id )
+static void rrc_ue_generate_RRCConnectionReconfigurationComplete( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id )
 {
-
   uint8_t buffer[32], size;
   size = do_RRCConnectionReconfigurationComplete(ctxt_pP, buffer, Transaction_id);
   LOG_I(RRC,PROTOCOL_RRC_CTXT_UE_FMT" Logical Channel UL-DCCH (SRB1), Generating RRCConnectionReconfigurationComplete (bytes %d, eNB_index %d)\n",
@@ -547,46 +520,40 @@ static void rrc_ue_generate_RRCConnectionReconfigurationComplete( const protocol
         UE_MODULE_ID_TO_INSTANCE(ctxt_pP->module_id),
         DCCH);
   rrc_data_req_ue (
-		ctxt_pP,
-		DCCH,
-		rrc_mui++,
-		SDU_CONFIRM_NO,
-		size,
-		buffer,
-		PDCP_TRANSMISSION_MODE_CONTROL);
+    ctxt_pP,
+    DCCH,
+    rrc_mui++,
+    SDU_CONFIRM_NO,
+    size,
+    buffer,
+    PDCP_TRANSMISSION_MODE_CONTROL);
 }
 
 
 //-----------------------------------------------------------------------------
 // Called by L2 interface (MAC)
-int rrc_ue_decode_ccch( const protocol_ctxt_t* const ctxt_pP, const SRB_INFO* const Srb_info, const uint8_t eNB_index )
+int rrc_ue_decode_ccch( const protocol_ctxt_t *const ctxt_pP, const SRB_INFO *const Srb_info, const uint8_t eNB_index )
 {
-  DL_CCCH_Message_t* dl_ccch_msg=NULL;
+  DL_CCCH_Message_t *dl_ccch_msg=NULL;
   asn_dec_rval_t dec_rval;
   int rval=0;
-
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_CCCH, VCD_FUNCTION_IN);
   //  LOG_D(RRC,"[UE %d] Decoding DL-CCCH message (%d bytes), State %d\n",ue_mod_idP,Srb_info->Rx_buffer.payload_size,
   //  UE_rrc_inst[ue_mod_idP].Info[eNB_index].State);
-
   dec_rval = uper_decode(NULL,
                          &asn_DEF_DL_CCCH_Message,
-                         (void**)&dl_ccch_msg,
-                         (uint8_t*)Srb_info->Rx_buffer.Payload,
+                         (void **)&dl_ccch_msg,
+                         (uint8_t *)Srb_info->Rx_buffer.Payload,
                          100,0,0);
-
 #ifdef XER_PRINT
-  xer_fprint(stdout,&asn_DEF_DL_CCCH_Message,(void*)dl_ccch_msg);
+  xer_fprint(stdout,&asn_DEF_DL_CCCH_Message,(void *)dl_ccch_msg);
 #endif
-
 #if defined(ENABLE_ITTI)
 # if defined(DISABLE_ITTI_XER_PRINT)
   {
     MessageDef *msg_p;
-
     msg_p = itti_alloc_new_message (TASK_RRC_UE, RRC_DL_CCCH_MESSAGE);
     memcpy (&msg_p->ittiMsg, (void *) dl_ccch_msg, sizeof(RrcDlCcchMessage));
-
     itti_send_msg_to_task (TASK_UNKNOWN, ctxt_pP->instance, msg_p);
   }
 # else
@@ -596,11 +563,9 @@ int rrc_ue_decode_ccch( const protocol_ctxt_t* const ctxt_pP, const SRB_INFO* co
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_CCCH_Message, (void *)dl_ccch_msg)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_DL_CCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_ccch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_ccch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
     }
   }
@@ -614,74 +579,68 @@ int rrc_ue_decode_ccch( const protocol_ctxt_t* const ctxt_pP, const SRB_INFO* co
   }
 
   if (dl_ccch_msg->message.present == DL_CCCH_MessageType_PR_c1) {
-
     if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State == RRC_SI_RECEIVED) {
-
       switch (dl_ccch_msg->message.choice.c1.present) {
+        case DL_CCCH_MessageType__c1_PR_NOTHING:
+          LOG_I(RRC, "[UE%d] Frame %d : Received PR_NOTHING on DL-CCCH-Message\n",
+                ctxt_pP->module_id,
+                ctxt_pP->frame);
+          rval = 0;
+          break;
 
-      case DL_CCCH_MessageType__c1_PR_NOTHING:
-        LOG_I(RRC, "[UE%d] Frame %d : Received PR_NOTHING on DL-CCCH-Message\n",
-              ctxt_pP->module_id,
-              ctxt_pP->frame);
-        rval = 0;
-        break;
-
-      case DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishment:
-        LOG_I(RRC,
-              "[UE%d] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionReestablishment\n",
-              ctxt_pP->module_id,
-              ctxt_pP->frame);
-        rval = 0;
-        break;
-
-      case DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishmentReject:
-        LOG_I(RRC,
-              "[UE%d] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionReestablishmentReject\n",
-              ctxt_pP->module_id,
-              ctxt_pP->frame);
-        rval = 0;
-        break;
-
-      case DL_CCCH_MessageType__c1_PR_rrcConnectionReject:
-        LOG_I(RRC,
-              "[UE%d] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionReject \n",
-              ctxt_pP->module_id,
-              ctxt_pP->frame);
-        rval = 0;
-        break;
-
-      case DL_CCCH_MessageType__c1_PR_rrcConnectionSetup:
-        LOG_I(RRC,
-              "[UE%d][RAPROC] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionSetup RNTI %x\n",
-              ctxt_pP->module_id,
-              ctxt_pP->frame,
-              ctxt_pP->rnti);
-        // Get configuration
+        case DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishment:
+          LOG_I(RRC,
+                "[UE%d] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionReestablishment\n",
+                ctxt_pP->module_id,
+                ctxt_pP->frame);
+          rval = 0;
+          break;
 
-        // Release T300 timer
-        UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].T300_active = 0;
-        rrc_ue_process_radioResourceConfigDedicated(
-          ctxt_pP,
-          eNB_index,
-          &dl_ccch_msg->message.choice.c1.choice.rrcConnectionSetup.criticalExtensions.choice.c1.choice.rrcConnectionSetup_r8.radioResourceConfigDedicated);
+        case DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishmentReject:
+          LOG_I(RRC,
+                "[UE%d] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionReestablishmentReject\n",
+                ctxt_pP->module_id,
+                ctxt_pP->frame);
+          rval = 0;
+          break;
 
-        rrc_set_state (ctxt_pP->module_id, RRC_STATE_CONNECTED);
-        rrc_set_sub_state (ctxt_pP->module_id, RRC_SUB_STATE_CONNECTED);
-        UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].rnti = ctxt_pP->rnti;
-        rrc_ue_generate_RRCConnectionSetupComplete(
-          ctxt_pP,
-          eNB_index,
-          dl_ccch_msg->message.choice.c1.choice.rrcConnectionSetup.rrc_TransactionIdentifier);
+        case DL_CCCH_MessageType__c1_PR_rrcConnectionReject:
+          LOG_I(RRC,
+                "[UE%d] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionReject \n",
+                ctxt_pP->module_id,
+                ctxt_pP->frame);
+          rval = 0;
+          break;
 
-        rval = 0;
-        break;
+        case DL_CCCH_MessageType__c1_PR_rrcConnectionSetup:
+          LOG_I(RRC,
+                "[UE%d][RAPROC] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionSetup RNTI %x\n",
+                ctxt_pP->module_id,
+                ctxt_pP->frame,
+                ctxt_pP->rnti);
+          // Get configuration
+          // Release T300 timer
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].T300_active = 0;
+          rrc_ue_process_radioResourceConfigDedicated(
+            ctxt_pP,
+            eNB_index,
+            &dl_ccch_msg->message.choice.c1.choice.rrcConnectionSetup.criticalExtensions.choice.c1.choice.rrcConnectionSetup_r8.radioResourceConfigDedicated);
+          rrc_set_state (ctxt_pP->module_id, RRC_STATE_CONNECTED);
+          rrc_set_sub_state (ctxt_pP->module_id, RRC_SUB_STATE_CONNECTED);
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].rnti = ctxt_pP->rnti;
+          rrc_ue_generate_RRCConnectionSetupComplete(
+            ctxt_pP,
+            eNB_index,
+            dl_ccch_msg->message.choice.c1.choice.rrcConnectionSetup.rrc_TransactionIdentifier);
+          rval = 0;
+          break;
 
-      default:
-        LOG_E(RRC, "[UE%d] Frame %d : Unknown message\n",
-              ctxt_pP->module_id,
-              ctxt_pP->frame);
-        rval = -1;
-        break;
+        default:
+          LOG_E(RRC, "[UE%d] Frame %d : Unknown message\n",
+                ctxt_pP->module_id,
+                ctxt_pP->frame);
+          rval = -1;
+          break;
       }
     }
   }
@@ -696,31 +655,22 @@ rrc_ue_establish_srb1(
   module_id_t ue_mod_idP,
   frame_t frameP,
   uint8_t eNB_index,
-  struct SRB_ToAddMod* SRB_config
+  struct SRB_ToAddMod *SRB_config
 )
 //-----------------------------------------------------------------------------
 {
   // add descriptor from RRC PDU
-
   uint8_t lchan_id = DCCH;
-
   UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Active = 1;
   UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Status = RADIO_CONFIG_OK;//RADIO CFG
   UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Srb_info.Srb_id = 1;
-
   // copy default configuration for now
   //  memcpy(&UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Srb_info.Lchan_desc[0],&DCCH_LCHAN_DESC,LCHAN_DESC_SIZE);
   //  memcpy(&UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Srb_info.Lchan_desc[1],&DCCH_LCHAN_DESC,LCHAN_DESC_SIZE);
-
-
   LOG_I(RRC,"[UE %d], CONFIG_SRB1 %d corresponding to eNB_index %d\n", ue_mod_idP,lchan_id,eNB_index);
-
   //rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD, lchan_id,UNDEF_SECURITY_MODE);
   //  rrc_rlc_config_req(ue_mod_idP+NB_eNB_INST,frameP,0,CONFIG_ACTION_ADD,lchan_id,SIGNALLING_RADIO_BEARER,Rlc_info_am_config);
-
   //  UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Srb_info.Tx_buffer.payload_size=DEFAULT_MEAS_IND_SIZE+1;
-
-
   return(0);
 }
 
@@ -730,31 +680,22 @@ rrc_ue_establish_srb2(
   module_id_t ue_mod_idP,
   frame_t frameP,
   uint8_t eNB_index,
-  struct SRB_ToAddMod* SRB_config
+  struct SRB_ToAddMod *SRB_config
 )
 //-----------------------------------------------------------------------------
 {
   // add descriptor from RRC PDU
-
   uint8_t lchan_id = DCCH1;
-
   UE_rrc_inst[ue_mod_idP].Srb2[eNB_index].Active = 1;
   UE_rrc_inst[ue_mod_idP].Srb2[eNB_index].Status = RADIO_CONFIG_OK;//RADIO CFG
   UE_rrc_inst[ue_mod_idP].Srb2[eNB_index].Srb_info.Srb_id = 2;
-
   // copy default configuration for now
   //  memcpy(&UE_rrc_inst[ue_mod_idP].Srb2[eNB_index].Srb_info.Lchan_desc[0],&DCCH_LCHAN_DESC,LCHAN_DESC_SIZE);
   //  memcpy(&UE_rrc_inst[ue_mod_idP].Srb2[eNB_index].Srb_info.Lchan_desc[1],&DCCH_LCHAN_DESC,LCHAN_DESC_SIZE);
-
-
   LOG_I(RRC,"[UE %d], CONFIG_SRB2 %d corresponding to eNB_index %d\n",ue_mod_idP,lchan_id,eNB_index);
-
   //rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD, lchan_id, UNDEF_SECURITY_MODE);
   //  rrc_rlc_config_req(ue_mod_idP+NB_eNB_INST,frameP,0,CONFIG_ACTION_ADD,lchan_id,SIGNALLING_RADIO_BEARER,Rlc_info_am_config);
-
   //  UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Srb_info.Tx_buffer.payload_size=DEFAULT_MEAS_IND_SIZE+1;
-
-
   return(0);
 }
 
@@ -764,7 +705,7 @@ rrc_ue_establish_drb(
   module_id_t ue_mod_idP,
   frame_t frameP,
   uint8_t eNB_index,
-  struct DRB_ToAddMod* DRB_config
+  struct DRB_ToAddMod *DRB_config
 )
 //-----------------------------------------------------------------------------
 {
@@ -776,7 +717,6 @@ rrc_ue_establish_drb(
   (void)ip_addr_offset3;
   (void)ip_addr_offset4;
 #endif
-
   LOG_I(RRC,"[UE %d] Frame %d: processing RRCConnectionReconfiguration: reconfiguring DRB %ld/LCID %d\n",
         ue_mod_idP, frameP, DRB_config->drb_Identity, (int)*DRB_config->logicalChannelIdentity);
   /*
@@ -802,7 +742,6 @@ rrc_ue_establish_drb(
           ue_mod_idP,
           ip_addr_offset3+ue_mod_idP,
           (long int)((eNB_index * maxDRB) + DRB_config->drb_Identity));
-
     rb_conf_ipv4(0,//add
                  ue_mod_idP,//cx align with the UE index
                  ip_addr_offset3+ue_mod_idP,//inst num_enb+ue_index
@@ -815,7 +754,6 @@ rrc_ue_establish_drb(
 
 #    endif
 #endif
-
   return(0);
 }
 
@@ -823,13 +761,12 @@ rrc_ue_establish_drb(
 //-----------------------------------------------------------------------------
 void
 rrc_ue_process_measConfig(
-  const protocol_ctxt_t* const       ctxt_pP,
+  const protocol_ctxt_t *const       ctxt_pP,
   const uint8_t                      eNB_index,
-  MeasConfig_t* const               measConfig
+  MeasConfig_t *const               measConfig
 )
 //-----------------------------------------------------------------------------
 {
-
   // This is the procedure described in 36.331 Section 5.5.2.1
   int i;
   long ind;
@@ -851,8 +788,8 @@ rrc_ue_process_measConfig(
 
       if (UE_rrc_inst[ctxt_pP->module_id].MeasObj[eNB_index][ind-1]) {
         LOG_D(RRC,"Modifying measurement object %ld\n",ind);
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].MeasObj[eNB_index][ind-1],
-               (char*)measObj,
+        memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].MeasObj[eNB_index][ind-1],
+               (char *)measObj,
                sizeof(MeasObjectToAddMod_t));
       } else {
         LOG_I(RRC,"Adding measurement object %ld\n",ind);
@@ -869,39 +806,37 @@ rrc_ue_process_measConfig(
     }
 
     LOG_I(RRC,"call rrc_mac_config_req \n");
-
     rrc_mac_config_req_ue(ctxt_pP->module_id,0,eNB_index,
-			  (RadioResourceConfigCommonSIB_t *)NULL,
-			  (struct PhysicalConfigDedicated *)NULL,
+                          (RadioResourceConfigCommonSIB_t *)NULL,
+                          (struct PhysicalConfigDedicated *)NULL,
 #if defined(Rel10) || defined(Rel14)
-			  (SCellToAddMod_r10_t *)NULL,
-			  //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
+                          (SCellToAddMod_r10_t *)NULL,
+                          //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
 #endif
-			  UE_rrc_inst[ctxt_pP->module_id].MeasObj[eNB_index],
-			  (MAC_MainConfig_t *)NULL,
-			  0,
-			  (struct LogicalChannelConfig *)NULL,
-			  (MeasGapConfig_t *)NULL,
-			  (TDD_Config_t *)NULL,
-			  (MobilityControlInfo_t *)NULL,
-			  NULL,
-			  NULL,
-			  NULL,
-			  NULL,
-			  NULL,
-			  NULL
+                          UE_rrc_inst[ctxt_pP->module_id].MeasObj[eNB_index],
+                          (MAC_MainConfig_t *)NULL,
+                          0,
+                          (struct LogicalChannelConfig *)NULL,
+                          (MeasGapConfig_t *)NULL,
+                          (TDD_Config_t *)NULL,
+                          (MobilityControlInfo_t *)NULL,
+                          NULL,
+                          NULL,
+                          NULL,
+                          NULL,
+                          NULL,
+                          NULL
 #if defined(Rel10) || defined(Rel14)
-			  ,0,
-			  (MBSFN_AreaInfoList_r9_t *)NULL,
-			  (PMCH_InfoList_r9_t *)NULL
-
+                          ,0,
+                          (MBSFN_AreaInfoList_r9_t *)NULL,
+                          (PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-			  ,
-			  0,
-			  0
+                          ,
+                          0,
+                          0
 #endif
-			  );
+                         );
   }
 
   if (measConfig->reportConfigToRemoveList != NULL) {
@@ -919,8 +854,8 @@ rrc_ue_process_measConfig(
 
       if (UE_rrc_inst[ctxt_pP->module_id].ReportConfig[eNB_index][ind-1]) {
         LOG_I(RRC,"Modifying Report Configuration %ld\n",ind-1);
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].ReportConfig[eNB_index][ind-1],
-               (char*)measConfig->reportConfigToAddModList->list.array[i],
+        memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].ReportConfig[eNB_index][ind-1],
+               (char *)measConfig->reportConfigToAddModList->list.array[i],
                sizeof(ReportConfigToAddMod_t));
       } else {
         LOG_D(RRC,"Adding Report Configuration %ld %p \n",ind-1,measConfig->reportConfigToAddModList->list.array[i]);
@@ -932,8 +867,8 @@ rrc_ue_process_measConfig(
   if (measConfig->quantityConfig != NULL) {
     if (UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index]) {
       LOG_D(RRC,"Modifying Quantity Configuration \n");
-      memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index],
-             (char*)measConfig->quantityConfig,
+      memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index],
+             (char *)measConfig->quantityConfig,
              sizeof(QuantityConfig_t));
     } else {
       LOG_D(RRC,"Adding Quantity configuration\n");
@@ -954,8 +889,8 @@ rrc_ue_process_measConfig(
 
       if (UE_rrc_inst[ctxt_pP->module_id].MeasId[eNB_index][ind-1]) {
         LOG_D(RRC,"Modifying Measurement ID %ld\n",ind-1);
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].MeasId[eNB_index][ind-1],
-               (char*)measConfig->measIdToAddModList->list.array[i],
+        memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].MeasId[eNB_index][ind-1],
+               (char *)measConfig->measIdToAddModList->list.array[i],
                sizeof(MeasIdToAddMod_t));
       } else {
         LOG_D(RRC,"Adding Measurement ID %ld %p\n",ind-1,measConfig->measIdToAddModList->list.array[i]);
@@ -966,8 +901,8 @@ rrc_ue_process_measConfig(
 
   if (measConfig->measGapConfig !=NULL) {
     if (UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index]) {
-      memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index],
-             (char*)measConfig->measGapConfig,
+      memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index],
+             (char *)measConfig->measGapConfig,
              sizeof(MeasGapConfig_t));
     } else {
       UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index] = measConfig->measGapConfig;
@@ -977,8 +912,8 @@ rrc_ue_process_measConfig(
   if (measConfig->quantityConfig != NULL) {
     if (UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index]) {
       LOG_I(RRC,"Modifying Quantity Configuration \n");
-      memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index],
-             (char*)measConfig->quantityConfig,
+      memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index],
+             (char *)measConfig->quantityConfig,
              sizeof(QuantityConfig_t));
     } else {
       LOG_I(RRC,"Adding Quantity configuration\n");
@@ -989,7 +924,6 @@ rrc_ue_process_measConfig(
         (*UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index]->quantityConfigEUTRA->filterCoefficientRSRP)/4);
     UE_rrc_inst[ctxt_pP->module_id].filter_coeff_rsrq = 1./pow(2,
         (*UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index]->quantityConfigEUTRA->filterCoefficientRSRQ)/4);
-
     LOG_I(RRC,"[UE %d] set rsrp-coeff for eNB %d: %ld rsrq-coeff: %ld rsrp_factor: %f rsrq_factor: %f \n",
           ctxt_pP->module_id, eNB_index, // UE_rrc_inst[ue_mod_idP].Info[eNB_index].UE_index,
           *UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index]->quantityConfigEUTRA->filterCoefficientRSRP,
@@ -1004,7 +938,7 @@ rrc_ue_process_measConfig(
 
   if (measConfig->speedStatePars != NULL) {
     if (UE_rrc_inst[ctxt_pP->module_id].speedStatePars) {
-      memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].speedStatePars,(char*)measConfig->speedStatePars,sizeof(struct MeasConfig__speedStatePars));
+      memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].speedStatePars,(char *)measConfig->speedStatePars,sizeof(struct MeasConfig__speedStatePars));
     } else {
       UE_rrc_inst[ctxt_pP->module_id].speedStatePars = measConfig->speedStatePars;
     }
@@ -1016,231 +950,223 @@ rrc_ue_process_measConfig(
 
 
 void
-rrc_ue_update_radioResourceConfigDedicated(RadioResourceConfigDedicated_t* radioResourceConfigDedicated,
-        const protocol_ctxt_t* const ctxt_pP,
-        uint8_t eNB_index)
+rrc_ue_update_radioResourceConfigDedicated(RadioResourceConfigDedicated_t *radioResourceConfigDedicated,
+    const protocol_ctxt_t *const ctxt_pP,
+    uint8_t eNB_index)
 {
-    PhysicalConfigDedicated_t* physicalConfigDedicated2 = NULL;
-
-    physicalConfigDedicated2 = CALLOC(1,sizeof(*physicalConfigDedicated2));
-    physicalConfigDedicated2->pdsch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pdsch_ConfigDedicated));
-    physicalConfigDedicated2->pusch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pusch_ConfigDedicated));
-    physicalConfigDedicated2->pucch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pucch_ConfigDedicated));
-    physicalConfigDedicated2->cqi_ReportConfig              = CALLOC(1,sizeof(*physicalConfigDedicated2->cqi_ReportConfig));
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic
-                                                            = CALLOC(1,sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic));
-    physicalConfigDedicated2->soundingRS_UL_ConfigDedicated = CALLOC(1,sizeof(*physicalConfigDedicated2->soundingRS_UL_ConfigDedicated));
-    physicalConfigDedicated2->schedulingRequestConfig       = CALLOC(1,sizeof(*physicalConfigDedicated2->schedulingRequestConfig));
-    physicalConfigDedicated2->antennaInfo                   = CALLOC(1,sizeof(*physicalConfigDedicated2->antennaInfo));
-
-    physicalConfigDedicated2->uplinkPowerControlDedicated   = CALLOC(1,sizeof(*physicalConfigDedicated2->uplinkPowerControlDedicated));
-    physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH         = CALLOC(1,sizeof(*physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH));
-    physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH         = CALLOC(1,sizeof(*physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH));
-
-    // Update pdsch_ConfigDedicated
-    if(radioResourceConfigDedicated->physicalConfigDedicated->pdsch_ConfigDedicated != NULL)
-    {
-        LOG_I(RRC,"Update pdsch_ConfigDedicated config \n");
-
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pdsch_ConfigDedicated == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pdsch_ConfigDedicated = CALLOC(1,sizeof(PDSCH_ConfigDedicated_t));
-
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pdsch_ConfigDedicated,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->pdsch_ConfigDedicated,
-                sizeof(physicalConfigDedicated2->pdsch_ConfigDedicated));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for pdsch_ConfigDedicated\n");
-    }
-
-    // Update pusch_ConfigDedicated
-    if(radioResourceConfigDedicated->physicalConfigDedicated->pusch_ConfigDedicated != NULL)
-    {
-        LOG_I(RRC,"Update pusch_ConfigDedicated config \n");
-
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pusch_ConfigDedicated == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pusch_ConfigDedicated = CALLOC(1,sizeof(PUSCH_ConfigDedicated_t));
-
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pusch_ConfigDedicated,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->pusch_ConfigDedicated,
-                sizeof(physicalConfigDedicated2->pusch_ConfigDedicated));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for pusch_ConfigDedicated\n");
-    }
+  PhysicalConfigDedicated_t *physicalConfigDedicated2 = NULL;
+  physicalConfigDedicated2 = CALLOC(1,sizeof(*physicalConfigDedicated2));
+  physicalConfigDedicated2->pdsch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pdsch_ConfigDedicated));
+  physicalConfigDedicated2->pusch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pusch_ConfigDedicated));
+  physicalConfigDedicated2->pucch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pucch_ConfigDedicated));
+  physicalConfigDedicated2->cqi_ReportConfig              = CALLOC(1,sizeof(*physicalConfigDedicated2->cqi_ReportConfig));
+  physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic
+    = CALLOC(1,sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic));
+  physicalConfigDedicated2->soundingRS_UL_ConfigDedicated = CALLOC(1,sizeof(*physicalConfigDedicated2->soundingRS_UL_ConfigDedicated));
+  physicalConfigDedicated2->schedulingRequestConfig       = CALLOC(1,sizeof(*physicalConfigDedicated2->schedulingRequestConfig));
+  physicalConfigDedicated2->antennaInfo                   = CALLOC(1,sizeof(*physicalConfigDedicated2->antennaInfo));
+  physicalConfigDedicated2->uplinkPowerControlDedicated   = CALLOC(1,sizeof(*physicalConfigDedicated2->uplinkPowerControlDedicated));
+  physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH         = CALLOC(1,sizeof(*physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH));
+  physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH         = CALLOC(1,sizeof(*physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH));
+
+  // Update pdsch_ConfigDedicated
+  if(radioResourceConfigDedicated->physicalConfigDedicated->pdsch_ConfigDedicated != NULL)
+  {
+    LOG_I(RRC,"Update pdsch_ConfigDedicated config \n");
 
-    // Update pucch_ConfigDedicated
-    if(radioResourceConfigDedicated->physicalConfigDedicated->pucch_ConfigDedicated != NULL)
-    {
-        LOG_I(RRC,"Update pucch_ConfigDedicated config \n");
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pucch_ConfigDedicated == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pucch_ConfigDedicated = CALLOC(1,sizeof(PUCCH_ConfigDedicated_t));
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pdsch_ConfigDedicated == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pdsch_ConfigDedicated = CALLOC(1,sizeof(PDSCH_ConfigDedicated_t));
 
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pucch_ConfigDedicated,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->pucch_ConfigDedicated,
-                sizeof(physicalConfigDedicated2->pucch_ConfigDedicated));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for pucch_ConfigDedicated\n");
-    }
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pdsch_ConfigDedicated,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->pdsch_ConfigDedicated,
+           sizeof(physicalConfigDedicated2->pdsch_ConfigDedicated));
+  }
+  else
+  {
+    LOG_I(RRC,"Keep old config for pdsch_ConfigDedicated\n");
+  }
 
-    // Update cqi_ReportConfig
-    if(radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig != NULL)
-    {
-        LOG_I(RRC,"Update cqi_ReportConfig config (size=%zu,%zu)\n", sizeof(*physicalConfigDedicated2->cqi_ReportConfig), sizeof(CQI_ReportConfig_t));
+  // Update pusch_ConfigDedicated
+  if(radioResourceConfigDedicated->physicalConfigDedicated->pusch_ConfigDedicated != NULL)
+  {
+    LOG_I(RRC,"Update pusch_ConfigDedicated config \n");
 
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig = CALLOC(1,sizeof(CQI_ReportConfig_t));
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pusch_ConfigDedicated == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pusch_ConfigDedicated = CALLOC(1,sizeof(PUSCH_ConfigDedicated_t));
 
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig,
-                sizeof(*physicalConfigDedicated2->cqi_ReportConfig));
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pusch_ConfigDedicated,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->pusch_ConfigDedicated,
+           sizeof(physicalConfigDedicated2->pusch_ConfigDedicated));
+  }
+  else
+  {
+    LOG_I(RRC,"Keep old config for pusch_ConfigDedicated\n");
+  }
 
-        if (radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic != NULL) {
-          LOG_I(RRC,"Update cqi_ReportPeriodic config (size=%zu,%zu)\n", sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic), sizeof(CQI_ReportPeriodic_t));
+  // Update pucch_ConfigDedicated
+  if(radioResourceConfigDedicated->physicalConfigDedicated->pucch_ConfigDedicated != NULL)
+  {
+    LOG_I(RRC,"Update pucch_ConfigDedicated config \n");
 
-          if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig->cqi_ReportPeriodic == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig->cqi_ReportPeriodic = CALLOC(1,sizeof(CQI_ReportPeriodic_t));
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pucch_ConfigDedicated == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pucch_ConfigDedicated = CALLOC(1,sizeof(PUCCH_ConfigDedicated_t));
 
-          memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig->cqi_ReportPeriodic,
-                  (char*)radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic,
-                  sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic));
-        }
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for cqi_ReportConfig\n");
-    }
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pucch_ConfigDedicated,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->pucch_ConfigDedicated,
+           sizeof(physicalConfigDedicated2->pucch_ConfigDedicated));
+  }
+  else
+  {
+    LOG_I(RRC,"Keep old config for pucch_ConfigDedicated\n");
+  }
 
-    // Update schedulingRequestConfig
-    if(radioResourceConfigDedicated->physicalConfigDedicated->schedulingRequestConfig != NULL)
-    {
-        LOG_I(RRC,"Update schedulingRequestConfig config \n");
+  // Update cqi_ReportConfig
+  if(radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig != NULL)
+  {
+    LOG_I(RRC,"Update cqi_ReportConfig config (size=%zu,%zu)\n", sizeof(*physicalConfigDedicated2->cqi_ReportConfig), sizeof(CQI_ReportConfig_t));
 
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->schedulingRequestConfig == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->schedulingRequestConfig = CALLOC(1,sizeof(SchedulingRequestConfig_t));
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig = CALLOC(1,sizeof(CQI_ReportConfig_t));
 
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->schedulingRequestConfig,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->schedulingRequestConfig,
-                sizeof(physicalConfigDedicated2->schedulingRequestConfig));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for schedulingRequestConfig\n");
-    }
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig,
+           sizeof(*physicalConfigDedicated2->cqi_ReportConfig));
 
-    // Update soundingRS_UL_ConfigDedicated
-    if(radioResourceConfigDedicated->physicalConfigDedicated->soundingRS_UL_ConfigDedicated != NULL)
-    {
-        LOG_I(RRC,"Update soundingRS_UL_ConfigDedicated config \n");
+    if (radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic != NULL) {
+      LOG_I(RRC,"Update cqi_ReportPeriodic config (size=%zu,%zu)\n", sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic), sizeof(CQI_ReportPeriodic_t));
 
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->soundingRS_UL_ConfigDedicated == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->soundingRS_UL_ConfigDedicated = CALLOC(1,sizeof(SoundingRS_UL_ConfigDedicated_t));
+      if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig->cqi_ReportPeriodic == NULL)
+        UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig->cqi_ReportPeriodic = CALLOC(1,sizeof(CQI_ReportPeriodic_t));
 
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->soundingRS_UL_ConfigDedicated,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->soundingRS_UL_ConfigDedicated,
-                sizeof(physicalConfigDedicated2->soundingRS_UL_ConfigDedicated));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for soundingRS_UL_ConfigDedicated\n");
+      memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig->cqi_ReportPeriodic,
+             (char *)radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic,
+             sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic));
     }
+  }
+  else
+  {
+    LOG_I(RRC,"Keep old config for cqi_ReportConfig\n");
+  }
 
-    // Update antennaInfo
-    if(radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo != NULL)
-    {
-        LOG_I(RRC,"Update antennaInfo config \n");
-
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo = CALLOC(1,sizeof(struct PhysicalConfigDedicated__antennaInfo));
-
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo,
-                sizeof(physicalConfigDedicated2->antennaInfo));
+  // Update schedulingRequestConfig
+  if(radioResourceConfigDedicated->physicalConfigDedicated->schedulingRequestConfig != NULL)
+  {
+    LOG_I(RRC,"Update schedulingRequestConfig config \n");
 
-        UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.transmissionMode =
-        		radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.transmissionMode;
-        UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.codebookSubsetRestriction =
-        		radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.codebookSubsetRestriction;
-        UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.ue_TransmitAntennaSelection =
-        		radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.ue_TransmitAntennaSelection;
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->schedulingRequestConfig == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->schedulingRequestConfig = CALLOC(1,sizeof(SchedulingRequestConfig_t));
 
-        LOG_I(PHY,"New Transmission Mode %ld \n",radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.transmissionMode);
-        LOG_I(PHY,"Configured Transmission Mode %ld \n",UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.transmissionMode);
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->schedulingRequestConfig,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->schedulingRequestConfig,
+           sizeof(physicalConfigDedicated2->schedulingRequestConfig));
+  }
+  else
+  {
+    LOG_I(RRC,"Keep old config for schedulingRequestConfig\n");
+  }
 
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for antennaInfo\n");
-    }
+  // Update soundingRS_UL_ConfigDedicated
+  if(radioResourceConfigDedicated->physicalConfigDedicated->soundingRS_UL_ConfigDedicated != NULL)
+  {
+    LOG_I(RRC,"Update soundingRS_UL_ConfigDedicated config \n");
 
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->soundingRS_UL_ConfigDedicated == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->soundingRS_UL_ConfigDedicated = CALLOC(1,sizeof(SoundingRS_UL_ConfigDedicated_t));
 
-    // Update uplinkPowerControlDedicated
-    if(radioResourceConfigDedicated->physicalConfigDedicated->uplinkPowerControlDedicated != NULL)
-    {
-        LOG_I(RRC,"Update uplinkPowerControlDedicated config \n");
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->soundingRS_UL_ConfigDedicated,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->soundingRS_UL_ConfigDedicated,
+           sizeof(physicalConfigDedicated2->soundingRS_UL_ConfigDedicated));
+  }
+  else
+  {
+    LOG_I(RRC,"Keep old config for soundingRS_UL_ConfigDedicated\n");
+  }
 
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->uplinkPowerControlDedicated == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->uplinkPowerControlDedicated = CALLOC(1,sizeof(UplinkPowerControlDedicated_t));
+  // Update antennaInfo
+  if(radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo != NULL)
+  {
+    LOG_I(RRC,"Update antennaInfo config \n");
+
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo = CALLOC(1,sizeof(struct PhysicalConfigDedicated__antennaInfo));
+
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo,
+           sizeof(physicalConfigDedicated2->antennaInfo));
+    UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.transmissionMode =
+      radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.transmissionMode;
+    UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.codebookSubsetRestriction =
+      radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.codebookSubsetRestriction;
+    UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.ue_TransmitAntennaSelection =
+      radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.ue_TransmitAntennaSelection;
+    LOG_I(PHY,"New Transmission Mode %ld \n",radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.transmissionMode);
+    LOG_I(PHY,"Configured Transmission Mode %ld \n",UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.transmissionMode);
+  }
+  else
+  {
+    LOG_I(RRC,"Keep old config for antennaInfo\n");
+  }
 
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->uplinkPowerControlDedicated,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->uplinkPowerControlDedicated,
-                sizeof(physicalConfigDedicated2->uplinkPowerControlDedicated));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for uplinkPowerControlDedicated\n");
-    }
+  // Update uplinkPowerControlDedicated
+  if(radioResourceConfigDedicated->physicalConfigDedicated->uplinkPowerControlDedicated != NULL)
+  {
+    LOG_I(RRC,"Update uplinkPowerControlDedicated config \n");
 
-    // Update tpc_PDCCH_ConfigPUCCH
-    if(radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUCCH != NULL)
-    {
-        LOG_I(RRC,"Update tpc_PDCCH_ConfigPUCCH config \n");
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->uplinkPowerControlDedicated == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->uplinkPowerControlDedicated = CALLOC(1,sizeof(UplinkPowerControlDedicated_t));
 
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUCCH == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUCCH = CALLOC(1,sizeof(TPC_PDCCH_Config_t));
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->uplinkPowerControlDedicated,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->uplinkPowerControlDedicated,
+           sizeof(physicalConfigDedicated2->uplinkPowerControlDedicated));
+  }
+  else
+  {
+    LOG_I(RRC,"Keep old config for uplinkPowerControlDedicated\n");
+  }
 
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUCCH,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUCCH,
-                sizeof(physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for tpc_PDCCH_ConfigPUCCH\n");
-    }
+  // Update tpc_PDCCH_ConfigPUCCH
+  if(radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUCCH != NULL)
+  {
+    LOG_I(RRC,"Update tpc_PDCCH_ConfigPUCCH config \n");
 
-    // Update tpc_PDCCH_ConfigPUSCH
-    if(radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUSCH != NULL)
-    {
-        LOG_I(RRC,"Update tpc_PDCCH_ConfigPUSCH config \n");
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUCCH == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUCCH = CALLOC(1,sizeof(TPC_PDCCH_Config_t));
 
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUSCH == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUSCH = CALLOC(1,sizeof(TPC_PDCCH_Config_t));
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUCCH,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUCCH,
+           sizeof(physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH));
+  }
+  else
+  {
+    LOG_I(RRC,"Keep old config for tpc_PDCCH_ConfigPUCCH\n");
+  }
 
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUSCH,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUSCH,
-                sizeof(physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH));
+  // Update tpc_PDCCH_ConfigPUSCH
+  if(radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUSCH != NULL)
+  {
+    LOG_I(RRC,"Update tpc_PDCCH_ConfigPUSCH config \n");
 
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for tpc_PDCCH_ConfigPUSCH\n");
-    }
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUSCH == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUSCH = CALLOC(1,sizeof(TPC_PDCCH_Config_t));
 
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUSCH,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUSCH,
+           sizeof(physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH));
+  }
+  else
+  {
+    LOG_I(RRC,"Keep old config for tpc_PDCCH_ConfigPUSCH\n");
+  }
 }
 //-----------------------------------------------------------------------------
 void
 rrc_ue_process_radioResourceConfigDedicated(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   uint8_t eNB_index,
-  RadioResourceConfigDedicated_t* radioResourceConfigDedicated
+  RadioResourceConfigDedicated_t *radioResourceConfigDedicated
 )
 //-----------------------------------------------------------------------------
 {
-
   long SRB_id,DRB_id;
   int i,cnt;
   LogicalChannelConfig_t *SRB1_logicalChannelConfig,*SRB2_logicalChannelConfig;
@@ -1255,9 +1181,9 @@ rrc_ue_process_radioResourceConfigDedicated(
 
     if (UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]) {
 #if 1
-        rrc_ue_update_radioResourceConfigDedicated(radioResourceConfigDedicated, ctxt_pP, eNB_index);
+      rrc_ue_update_radioResourceConfigDedicated(radioResourceConfigDedicated, ctxt_pP, eNB_index);
 #else
-      memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],(char*)radioResourceConfigDedicated->physicalConfigDedicated,
+      memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],(char *)radioResourceConfigDedicated->physicalConfigDedicated,
              sizeof(struct PhysicalConfigDedicated));
 #endif
     } else {
@@ -1270,7 +1196,7 @@ rrc_ue_process_radioResourceConfigDedicated(
   if (radioResourceConfigDedicated->mac_MainConfig) {
     if (radioResourceConfigDedicated->mac_MainConfig->present == RadioResourceConfigDedicated__mac_MainConfig_PR_explicitValue) {
       if (UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index]) {
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],(char*)&radioResourceConfigDedicated->mac_MainConfig->choice.explicitValue,
+        memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],(char *)&radioResourceConfigDedicated->mac_MainConfig->choice.explicitValue,
                sizeof(MAC_MainConfig_t));
       } else {
         UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index] = &radioResourceConfigDedicated->mac_MainConfig->choice.explicitValue;
@@ -1318,7 +1244,6 @@ rrc_ue_process_radioResourceConfigDedicated(
   if (radioResourceConfigDedicated->srb_ToAddModList) {
     uint8_t *kRRCenc = NULL;
     uint8_t *kRRCint = NULL;
-
 #if defined(ENABLE_SECURITY)
     derive_key_rrc_enc(UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm,
                        UE_rrc_inst[ctxt_pP->module_id].kenb, &kRRCenc);
@@ -1328,8 +1253,8 @@ rrc_ue_process_radioResourceConfigDedicated(
     // Refresh SRBs
     rrc_pdcp_config_asn1_req(ctxt_pP,
                              radioResourceConfigDedicated->srb_ToAddModList,
-                             (DRB_ToAddModList_t*)NULL,
-                             (DRB_ToReleaseList_t*)NULL,
+                             (DRB_ToAddModList_t *)NULL,
+                             (DRB_ToReleaseList_t *)NULL,
                              UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm |
                              (UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm << 4),
                              kRRCenc,
@@ -1339,17 +1264,15 @@ rrc_ue_process_radioResourceConfigDedicated(
                              ,(PMCH_InfoList_r9_t *)NULL
 #endif
                              ,NULL);
-
     // Refresh SRBs
     rrc_rlc_config_asn1_req(ctxt_pP,
                             radioResourceConfigDedicated->srb_ToAddModList,
-                            (DRB_ToAddModList_t*)NULL,
-                            (DRB_ToReleaseList_t*)NULL
+                            (DRB_ToAddModList_t *)NULL,
+                            (DRB_ToReleaseList_t *)NULL
 #if defined(Rel10) || defined(Rel14)
                             ,(PMCH_InfoList_r9_t *)NULL
 #endif
                            );
-
 #if ENABLE_RAL
     // first msg that includes srb config
     UE_rrc_inst[ctxt_pP->module_id].num_srb=radioResourceConfigDedicated->srb_ToAddModList->list.count;
@@ -1371,7 +1294,6 @@ rrc_ue_process_radioResourceConfigDedicated(
           if (UE_rrc_inst[ctxt_pP->module_id].SRB1_config[eNB_index]->logicalChannelConfig) {
             if (UE_rrc_inst[ctxt_pP->module_id].SRB1_config[eNB_index]->logicalChannelConfig->present == SRB_ToAddMod__logicalChannelConfig_PR_explicitValue) {
               SRB1_logicalChannelConfig = &UE_rrc_inst[ctxt_pP->module_id].SRB1_config[eNB_index]->logicalChannelConfig->choice.explicitValue;
-
             } else {
               SRB1_logicalChannelConfig = &SRB1_logicalChannelConfig_defaultValue;
             }
@@ -1381,39 +1303,38 @@ rrc_ue_process_radioResourceConfigDedicated(
 
           LOG_I(RRC, "[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ  (SRB1 eNB %d) --->][MAC_UE][MOD %02d][]\n",
                 ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
-
           rrc_mac_config_req_ue(ctxt_pP->module_id,0,eNB_index,
-				(RadioResourceConfigCommonSIB_t *)NULL,
-				UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],
+                                (RadioResourceConfigCommonSIB_t *)NULL,
+                                UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],
 #if defined(Rel10) || defined(Rel14)
-				(SCellToAddMod_r10_t *)NULL,
-				//struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
+                                (SCellToAddMod_r10_t *)NULL,
+                                //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
 #endif
-				(MeasObjectToAddMod_t **)NULL,
-				UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],
-				1,
-				SRB1_logicalChannelConfig,
-				(MeasGapConfig_t *)NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL
+                                (MeasObjectToAddMod_t **)NULL,
+                                UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],
+                                1,
+                                SRB1_logicalChannelConfig,
+                                (MeasGapConfig_t *)NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL
 #if defined(Rel10) || defined(Rel14)
-				,
-				0,
-				(MBSFN_AreaInfoList_r9_t *)NULL,
-				(PMCH_InfoList_r9_t *)NULL
+                                ,
+                                0,
+                                (MBSFN_AreaInfoList_r9_t *)NULL,
+                                (PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-				,
-				0,
-				0
+                                ,
+                                0,
+                                0
 #endif
-				);
+                               );
         }
       } else {
         if (UE_rrc_inst[ctxt_pP->module_id].SRB2_config[eNB_index]) {
@@ -1441,38 +1362,37 @@ rrc_ue_process_radioResourceConfigDedicated(
                 eNB_index,
                 ctxt_pP->module_id);
           rrc_mac_config_req_ue(ctxt_pP->module_id,0,eNB_index,
-				(RadioResourceConfigCommonSIB_t *)NULL,
-				UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],
+                                (RadioResourceConfigCommonSIB_t *)NULL,
+                                UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],
 #if defined(Rel10) || defined(Rel14)
-				(SCellToAddMod_r10_t *)NULL,
-				//struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
+                                (SCellToAddMod_r10_t *)NULL,
+                                //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
 #endif
-				(MeasObjectToAddMod_t **)NULL,
-				UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],
-				2,
-				SRB2_logicalChannelConfig,
-				UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index],
-				(TDD_Config_t *)NULL,
-				(MobilityControlInfo_t *)NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL
+                                (MeasObjectToAddMod_t **)NULL,
+                                UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],
+                                2,
+                                SRB2_logicalChannelConfig,
+                                UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index],
+                                (TDD_Config_t *)NULL,
+                                (MobilityControlInfo_t *)NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL
 #if defined(Rel10) || defined(Rel14)
-				,
-				0,
-				(MBSFN_AreaInfoList_r9_t *)NULL,
-				(PMCH_InfoList_r9_t *)NULL
-
+                                ,
+                                0,
+                                (MBSFN_AreaInfoList_r9_t *)NULL,
+                                (PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-				,
-				0,
-				0
+                                ,
+                                0,
+                                0
 #endif
-				);
+                               );
         }
       }
     }
@@ -1480,22 +1400,19 @@ rrc_ue_process_radioResourceConfigDedicated(
 
   // Establish DRBs if present
   if (radioResourceConfigDedicated->drb_ToAddModList) {
-
     if ( (UE_rrc_inst[ctxt_pP->module_id].defaultDRB == NULL) &&
          (radioResourceConfigDedicated->drb_ToAddModList->list.count >= 1) ) {
-        // configure the first DRB ID as the default DRB ID
-        UE_rrc_inst[ctxt_pP->module_id].defaultDRB = malloc(sizeof(rb_id_t));
-        *UE_rrc_inst[ctxt_pP->module_id].defaultDRB = radioResourceConfigDedicated->drb_ToAddModList->list.array[0]->drb_Identity;
-        LOG_I(RRC,"[UE %d] default DRB = %d\n",ctxt_pP->module_id, *UE_rrc_inst[ctxt_pP->module_id].defaultDRB);
-      }
+      // configure the first DRB ID as the default DRB ID
+      UE_rrc_inst[ctxt_pP->module_id].defaultDRB = malloc(sizeof(rb_id_t));
+      *UE_rrc_inst[ctxt_pP->module_id].defaultDRB = radioResourceConfigDedicated->drb_ToAddModList->list.array[0]->drb_Identity;
+      LOG_I(RRC,"[UE %d] default DRB = %d\n",ctxt_pP->module_id, *UE_rrc_inst[ctxt_pP->module_id].defaultDRB);
+    }
 
     uint8_t *kUPenc = NULL;
-
 #if defined(ENABLE_SECURITY)
     derive_key_up_enc(UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm,
                       UE_rrc_inst[ctxt_pP->module_id].kenb, &kUPenc);
 #endif
-
     MSC_LOG_TX_MESSAGE(
       MSC_RRC_UE,
       MSC_PDCP_UE,
@@ -1506,12 +1423,11 @@ rrc_ue_process_radioResourceConfigDedicated(
       ctxt_pP->rnti,
       UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm |
       (UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm << 4));
-
     // Refresh DRBs
     rrc_pdcp_config_asn1_req(ctxt_pP,
-                             (SRB_ToAddModList_t*)NULL,
+                             (SRB_ToAddModList_t *)NULL,
                              radioResourceConfigDedicated->drb_ToAddModList,
-                             (DRB_ToReleaseList_t*)NULL,
+                             (DRB_ToReleaseList_t *)NULL,
                              UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm |
                              (UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm << 4),
                              NULL,
@@ -1521,12 +1437,11 @@ rrc_ue_process_radioResourceConfigDedicated(
                              ,(PMCH_InfoList_r9_t *)NULL
 #endif
                              , UE_rrc_inst[ctxt_pP->module_id].defaultDRB);
-
     // Refresh DRBs
     rrc_rlc_config_asn1_req(ctxt_pP,
-                            (SRB_ToAddModList_t*)NULL,
+                            (SRB_ToAddModList_t *)NULL,
                             radioResourceConfigDedicated->drb_ToAddModList,
-                            (DRB_ToReleaseList_t*)NULL
+                            (DRB_ToReleaseList_t *)NULL
 #if defined(Rel10) || defined(Rel14)
                             ,(PMCH_InfoList_r9_t *)NULL
 #endif
@@ -1549,42 +1464,41 @@ rrc_ue_process_radioResourceConfigDedicated(
               eNB_index,
               ctxt_pP->module_id);
         rrc_mac_config_req_ue(ctxt_pP->module_id,0,eNB_index,
-			      (RadioResourceConfigCommonSIB_t *)NULL,
-			      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],
+                              (RadioResourceConfigCommonSIB_t *)NULL,
+                              UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],
 #if defined(Rel10) || defined(Rel14)
-			      (SCellToAddMod_r10_t *)NULL,
-			      //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
+                              (SCellToAddMod_r10_t *)NULL,
+                              //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
 #endif
-			      (MeasObjectToAddMod_t **)NULL,
-			      UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],
-			      *UE_rrc_inst[ctxt_pP->module_id].DRB_config[eNB_index][DRB_id]->logicalChannelIdentity,
-			      UE_rrc_inst[ctxt_pP->module_id].DRB_config[eNB_index][DRB_id]->logicalChannelConfig,
-			      UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index],
-			      (TDD_Config_t*)NULL,
-			      (MobilityControlInfo_t *)NULL,
-			      NULL,
-			      NULL,
-			      NULL,
-			      NULL,
-			      NULL,
-			      NULL
+                              (MeasObjectToAddMod_t **)NULL,
+                              UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],
+                              *UE_rrc_inst[ctxt_pP->module_id].DRB_config[eNB_index][DRB_id]->logicalChannelIdentity,
+                              UE_rrc_inst[ctxt_pP->module_id].DRB_config[eNB_index][DRB_id]->logicalChannelConfig,
+                              UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index],
+                              (TDD_Config_t *)NULL,
+                              (MobilityControlInfo_t *)NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL
 #if defined(Rel10) || defined(Rel14)
-			      ,
-			      0,
-			      (MBSFN_AreaInfoList_r9_t *)NULL,
-			      (PMCH_InfoList_r9_t *)NULL
+                              ,
+                              0,
+                              (MBSFN_AreaInfoList_r9_t *)NULL,
+                              (PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-			      ,
-			      UE_rrc_inst[ue_mod_idP].num_active_cba_groups, //
-			      UE_rrc_inst[ue_mod_idP].cba_rnti[0]
+                              ,
+                              UE_rrc_inst[ue_mod_idP].num_active_cba_groups, //
+                              UE_rrc_inst[ue_mod_idP].cba_rnti[0]
 #endif
-			      );
-	
+                             );
       }
     }
   }
-  
+
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State = RRC_CONNECTED;
   LOG_I(RRC,"[UE %d] State = RRC_CONNECTED (eNB %d)\n",ctxt_pP->module_id,eNB_index);
 }
@@ -1593,75 +1507,69 @@ rrc_ue_process_radioResourceConfigDedicated(
 //-----------------------------------------------------------------------------
 void
 rrc_ue_process_securityModeCommand(
-  const protocol_ctxt_t* const ctxt_pP,
-  SecurityModeCommand_t* const securityModeCommand,
+  const protocol_ctxt_t *const ctxt_pP,
+  SecurityModeCommand_t *const securityModeCommand,
   const uint8_t                eNB_index
 )
 //-----------------------------------------------------------------------------
 {
-
   asn_enc_rval_t enc_rval;
-
   UL_DCCH_Message_t ul_dcch_msg;
   // SecurityModeCommand_t SecurityModeCommand;
   uint8_t buffer[200];
   int i, securityMode;
-
   LOG_I(RRC,"[UE %d] Frame %d: Receiving from SRB1 (DL-DCCH), Processing securityModeCommand (eNB %d)\n",
         ctxt_pP->module_id,ctxt_pP->frame,eNB_index);
 
   switch (securityModeCommand->criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.cipheringAlgorithm) {
-  case CipheringAlgorithm_r12_eea0:
-    LOG_I(RRC,"[UE %d] Security algorithm is set to eea0\n",
-          ctxt_pP->module_id);
-    securityMode= CipheringAlgorithm_r12_eea0;
-    break;
-
-  case CipheringAlgorithm_r12_eea1:
-    LOG_I(RRC,"[UE %d] Security algorithm is set to eea1\n",ctxt_pP->module_id);
-    securityMode= CipheringAlgorithm_r12_eea1;
-    break;
-
-  case CipheringAlgorithm_r12_eea2:
-    LOG_I(RRC,"[UE %d] Security algorithm is set to eea2\n",
-          ctxt_pP->module_id);
-    securityMode = CipheringAlgorithm_r12_eea2;
-    break;
-
-  default:
-    LOG_I(RRC,"[UE %d] Security algorithm is set to none\n",ctxt_pP->module_id);
-    securityMode = CipheringAlgorithm_r12_spare1;
-    break;
+    case CipheringAlgorithm_r12_eea0:
+      LOG_I(RRC,"[UE %d] Security algorithm is set to eea0\n",
+            ctxt_pP->module_id);
+      securityMode= CipheringAlgorithm_r12_eea0;
+      break;
+
+    case CipheringAlgorithm_r12_eea1:
+      LOG_I(RRC,"[UE %d] Security algorithm is set to eea1\n",ctxt_pP->module_id);
+      securityMode= CipheringAlgorithm_r12_eea1;
+      break;
+
+    case CipheringAlgorithm_r12_eea2:
+      LOG_I(RRC,"[UE %d] Security algorithm is set to eea2\n",
+            ctxt_pP->module_id);
+      securityMode = CipheringAlgorithm_r12_eea2;
+      break;
+
+    default:
+      LOG_I(RRC,"[UE %d] Security algorithm is set to none\n",ctxt_pP->module_id);
+      securityMode = CipheringAlgorithm_r12_spare1;
+      break;
   }
 
   switch (securityModeCommand->criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.integrityProtAlgorithm) {
-  case SecurityAlgorithmConfig__integrityProtAlgorithm_eia1:
-    LOG_I(RRC,"[UE %d] Integrity protection algorithm is set to eia1\n",ctxt_pP->module_id);
-    securityMode |= 1 << 5;
-    break;
-
-  case SecurityAlgorithmConfig__integrityProtAlgorithm_eia2:
-    LOG_I(RRC,"[UE %d] Integrity protection algorithm is set to eia2\n",ctxt_pP->module_id);
-    securityMode |= 1 << 6;
-    break;
-
-  default:
-    LOG_I(RRC,"[UE %d] Integrity protection algorithm is set to none\n",ctxt_pP->module_id);
-    securityMode |= 0x70 ;
-    break;
+    case SecurityAlgorithmConfig__integrityProtAlgorithm_eia1:
+      LOG_I(RRC,"[UE %d] Integrity protection algorithm is set to eia1\n",ctxt_pP->module_id);
+      securityMode |= 1 << 5;
+      break;
+
+    case SecurityAlgorithmConfig__integrityProtAlgorithm_eia2:
+      LOG_I(RRC,"[UE %d] Integrity protection algorithm is set to eia2\n",ctxt_pP->module_id);
+      securityMode |= 1 << 6;
+      break;
+
+    default:
+      LOG_I(RRC,"[UE %d] Integrity protection algorithm is set to none\n",ctxt_pP->module_id);
+      securityMode |= 0x70 ;
+      break;
   }
 
   LOG_D(RRC,"[UE %d] security mode is %x \n",ctxt_pP->module_id, securityMode);
-
   /* Store the parameters received */
   UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm =
     securityModeCommand->criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.cipheringAlgorithm;
   UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm =
     securityModeCommand->criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.integrityProtAlgorithm;
-
   memset((void *)&ul_dcch_msg,0,sizeof(UL_DCCH_Message_t));
   //memset((void *)&SecurityModeCommand,0,sizeof(SecurityModeCommand_t));
-
   ul_dcch_msg.message.present           = UL_DCCH_MessageType_PR_c1;
 
   if (securityMode >= NO_SECURITY_MODE) {
@@ -1670,7 +1578,6 @@ rrc_ue_process_securityModeCommand(
     ul_dcch_msg.message.choice.c1.present = UL_DCCH_MessageType__c1_PR_securityModeFailure;
   }
 
-
 #if defined(ENABLE_SECURITY)
   uint8_t *kRRCenc = NULL;
   uint8_t *kUPenc = NULL;
@@ -1678,47 +1585,44 @@ rrc_ue_process_securityModeCommand(
   pdcp_t *pdcp_p = NULL;
   hash_key_t key = HASHTABLE_NOT_A_KEY_VALUE;
   hashtable_rc_t h_rc;
-
   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);
+                            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) {
     LOG_D(RRC, "PDCP_COLL_KEY_VALUE() returns valid key = %ld\n", key);
-
     LOG_D(RRC, "driving kRRCenc, kRRCint and kUPenc from KeNB="
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x\n",
-        UE_rrc_inst[ctxt_pP->module_id].kenb[0],  UE_rrc_inst[ctxt_pP->module_id].kenb[1],  UE_rrc_inst[ctxt_pP->module_id].kenb[2],  UE_rrc_inst[ctxt_pP->module_id].kenb[3],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[4],  UE_rrc_inst[ctxt_pP->module_id].kenb[5],  UE_rrc_inst[ctxt_pP->module_id].kenb[6],  UE_rrc_inst[ctxt_pP->module_id].kenb[7],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[8],  UE_rrc_inst[ctxt_pP->module_id].kenb[9],  UE_rrc_inst[ctxt_pP->module_id].kenb[10], UE_rrc_inst[ctxt_pP->module_id].kenb[11],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[12], UE_rrc_inst[ctxt_pP->module_id].kenb[13], UE_rrc_inst[ctxt_pP->module_id].kenb[14], UE_rrc_inst[ctxt_pP->module_id].kenb[15],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[16], UE_rrc_inst[ctxt_pP->module_id].kenb[17], UE_rrc_inst[ctxt_pP->module_id].kenb[18], UE_rrc_inst[ctxt_pP->module_id].kenb[19],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[20], UE_rrc_inst[ctxt_pP->module_id].kenb[21], UE_rrc_inst[ctxt_pP->module_id].kenb[22], UE_rrc_inst[ctxt_pP->module_id].kenb[23],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[24], UE_rrc_inst[ctxt_pP->module_id].kenb[25], UE_rrc_inst[ctxt_pP->module_id].kenb[26], UE_rrc_inst[ctxt_pP->module_id].kenb[27],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[28], UE_rrc_inst[ctxt_pP->module_id].kenb[29], UE_rrc_inst[ctxt_pP->module_id].kenb[30], UE_rrc_inst[ctxt_pP->module_id].kenb[31]);
-
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x\n",
+          UE_rrc_inst[ctxt_pP->module_id].kenb[0],  UE_rrc_inst[ctxt_pP->module_id].kenb[1],  UE_rrc_inst[ctxt_pP->module_id].kenb[2],  UE_rrc_inst[ctxt_pP->module_id].kenb[3],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[4],  UE_rrc_inst[ctxt_pP->module_id].kenb[5],  UE_rrc_inst[ctxt_pP->module_id].kenb[6],  UE_rrc_inst[ctxt_pP->module_id].kenb[7],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[8],  UE_rrc_inst[ctxt_pP->module_id].kenb[9],  UE_rrc_inst[ctxt_pP->module_id].kenb[10], UE_rrc_inst[ctxt_pP->module_id].kenb[11],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[12], UE_rrc_inst[ctxt_pP->module_id].kenb[13], UE_rrc_inst[ctxt_pP->module_id].kenb[14], UE_rrc_inst[ctxt_pP->module_id].kenb[15],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[16], UE_rrc_inst[ctxt_pP->module_id].kenb[17], UE_rrc_inst[ctxt_pP->module_id].kenb[18], UE_rrc_inst[ctxt_pP->module_id].kenb[19],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[20], UE_rrc_inst[ctxt_pP->module_id].kenb[21], UE_rrc_inst[ctxt_pP->module_id].kenb[22], UE_rrc_inst[ctxt_pP->module_id].kenb[23],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[24], UE_rrc_inst[ctxt_pP->module_id].kenb[25], UE_rrc_inst[ctxt_pP->module_id].kenb[26], UE_rrc_inst[ctxt_pP->module_id].kenb[27],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[28], UE_rrc_inst[ctxt_pP->module_id].kenb[29], UE_rrc_inst[ctxt_pP->module_id].kenb[30], UE_rrc_inst[ctxt_pP->module_id].kenb[31]);
     derive_key_rrc_enc(UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm,
-        UE_rrc_inst[ctxt_pP->module_id].kenb, &kRRCenc);
+                       UE_rrc_inst[ctxt_pP->module_id].kenb, &kRRCenc);
     derive_key_rrc_int(UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm,
-        UE_rrc_inst[ctxt_pP->module_id].kenb, &kRRCint);
+                       UE_rrc_inst[ctxt_pP->module_id].kenb, &kRRCint);
     derive_key_up_enc(UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm,
-        UE_rrc_inst[ctxt_pP->module_id].kenb, &kUPenc);
+                      UE_rrc_inst[ctxt_pP->module_id].kenb, &kUPenc);
 
     if (securityMode != 0xff) {
       pdcp_config_set_security(ctxt_pP, pdcp_p, 0, 0,
-          UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm
-              | (UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm << 4),
-          kRRCenc, kRRCint, kUPenc);
+                               UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm
+                               | (UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm << 4),
+                               kRRCenc, kRRCint, kUPenc);
     } else {
       LOG_W(RRC, "skipped pdcp_config_set_security() as securityMode == 0x%02x",
-          securityMode);
+            securityMode);
     }
   } else {
     LOG_W(RRC, "Could not get PDCP instance where key=0x%ld\n", key);
@@ -1729,173 +1633,145 @@ rrc_ue_process_securityModeCommand(
   if (securityModeCommand->criticalExtensions.present == SecurityModeCommand__criticalExtensions_PR_c1) {
     if (securityModeCommand->criticalExtensions.choice.c1.present != SecurityModeCommand__criticalExtensions__c1_PR_securityModeCommand_r8)
       LOG_W(RRC,"securityModeCommand->criticalExtensions.choice.c1.present (%d) != SecurityModeCommand__criticalExtensions__c1_PR_securityModeCommand_r8\n",
-	    securityModeCommand->criticalExtensions.choice.c1.present);
-    
-    
+            securityModeCommand->criticalExtensions.choice.c1.present);
+
     ul_dcch_msg.message.choice.c1.choice.securityModeComplete.rrc_TransactionIdentifier = securityModeCommand->rrc_TransactionIdentifier;
     ul_dcch_msg.message.choice.c1.choice.securityModeComplete.criticalExtensions.present = SecurityModeCommand__criticalExtensions_PR_c1;
     ul_dcch_msg.message.choice.c1.choice.securityModeComplete.criticalExtensions.choice.securityModeComplete_r8.nonCriticalExtension =NULL;
-    
     LOG_I(RRC,"[UE %d] Frame %d: Receiving from SRB1 (DL-DCCH), encoding securityModeComplete (eNB %d)\n",
-	  ctxt_pP->module_id,ctxt_pP->frame,eNB_index);
-    
+          ctxt_pP->module_id,ctxt_pP->frame,eNB_index);
     enc_rval = uper_encode_to_buffer(&asn_DEF_UL_DCCH_Message,
-				     (void*)&ul_dcch_msg,
-				     buffer,
-				     100);
+                                     NULL,
+                                     (void *)&ul_dcch_msg,
+                                     buffer,
+                                     100);
     AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n",
-		 enc_rval.failed_type->name, enc_rval.encoded);
-    
+                 enc_rval.failed_type->name, enc_rval.encoded);
 #ifdef XER_PRINT
-    xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void*)&ul_dcch_msg);
+    xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)&ul_dcch_msg);
 #endif
-    
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
     {
       char        message_string[20000];
       size_t      message_string_size;
-      
+
       if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_DCCH_Message, (void *) &ul_dcch_msg)) > 0) {
-	MessageDef *msg_p;
-	
-	msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_UL_DCCH, message_string_size + sizeof (IttiMsgText));
-	msg_p->ittiMsg.rrc_ul_dcch.size = message_string_size;
-	memcpy(&msg_p->ittiMsg.rrc_ul_dcch.text, message_string, message_string_size);
-	
-	itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
+        MessageDef *msg_p;
+        msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_UL_DCCH, message_string_size + sizeof (IttiMsgText));
+        msg_p->ittiMsg.rrc_ul_dcch.size = message_string_size;
+        memcpy(&msg_p->ittiMsg.rrc_ul_dcch.text, message_string, message_string_size);
+        itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
       }
     }
 # endif
 #endif
+    LOG_D(RRC, "securityModeComplete Encoded %zd bits (%zd bytes)\n", enc_rval.encoded, (enc_rval.encoded+7)/8);
 
-      LOG_D(RRC, "securityModeComplete Encoded %zd bits (%zd bytes)\n", enc_rval.encoded, (enc_rval.encoded+7)/8);
-
-      for (i = 0; i < (enc_rval.encoded + 7) / 8; i++) {
-        LOG_T(RRC, "%02x.", buffer[i]);
-      }
-
-      LOG_T(RRC, "\n");
-      rrc_data_req (
-		    ctxt_pP,
-		    DCCH,
-		    rrc_mui++,
-		    SDU_CONFIRM_NO,
-		    (enc_rval.encoded + 7) / 8,
-		    buffer,
-		    PDCP_TRANSMISSION_MODE_CONTROL);
+    for (i = 0; i < (enc_rval.encoded + 7) / 8; i++) {
+      LOG_T(RRC, "%02x.", buffer[i]);
     }
-    
+
+    LOG_T(RRC, "\n");
+    rrc_data_req (
+      ctxt_pP,
+      DCCH,
+      rrc_mui++,
+      SDU_CONFIRM_NO,
+      (enc_rval.encoded + 7) / 8,
+      buffer,
+      PDCP_TRANSMISSION_MODE_CONTROL);
+  }
   else LOG_W(RRC,"securityModeCommand->criticalExtensions.present (%d) != SecurityModeCommand__criticalExtensions_PR_c1\n",
-	     securityModeCommand->criticalExtensions.present);
+               securityModeCommand->criticalExtensions.present);
 }
 
 //-----------------------------------------------------------------------------
 void
 rrc_ue_process_ueCapabilityEnquiry(
-  const protocol_ctxt_t* const ctxt_pP,
-  UECapabilityEnquiry_t* UECapabilityEnquiry,
+  const protocol_ctxt_t *const ctxt_pP,
+  UECapabilityEnquiry_t *UECapabilityEnquiry,
   uint8_t eNB_index
 )
 //-----------------------------------------------------------------------------
 {
-
   asn_enc_rval_t enc_rval;
-
   UL_DCCH_Message_t ul_dcch_msg;
-
-
   UE_CapabilityRAT_Container_t ue_CapabilityRAT_Container;
-
   uint8_t buffer[200];
   int i;
-
   LOG_I(RRC,"[UE %d] Frame %d: Receiving from SRB1 (DL-DCCH), Processing UECapabilityEnquiry (eNB %d)\n",
         ctxt_pP->module_id,
         ctxt_pP->frame,
         eNB_index);
-
-
   memset((void *)&ul_dcch_msg,0,sizeof(UL_DCCH_Message_t));
   memset((void *)&ue_CapabilityRAT_Container,0,sizeof(UE_CapabilityRAT_Container_t));
-
   ul_dcch_msg.message.present           = UL_DCCH_MessageType_PR_c1;
   ul_dcch_msg.message.choice.c1.present = UL_DCCH_MessageType__c1_PR_ueCapabilityInformation;
   ul_dcch_msg.message.choice.c1.choice.ueCapabilityInformation.rrc_TransactionIdentifier = UECapabilityEnquiry->rrc_TransactionIdentifier;
-
   ue_CapabilityRAT_Container.rat_Type = RAT_Type_eutra;
   OCTET_STRING_fromBuf(&ue_CapabilityRAT_Container.ueCapabilityRAT_Container,
-                       (const char*)UE_rrc_inst[ctxt_pP->module_id].UECapability,
+                       (const char *)UE_rrc_inst[ctxt_pP->module_id].UECapability,
                        UE_rrc_inst[ctxt_pP->module_id].UECapability_size);
   //  ue_CapabilityRAT_Container.ueCapabilityRAT_Container.buf  = UE_rrc_inst[ue_mod_idP].UECapability;
   // ue_CapabilityRAT_Container.ueCapabilityRAT_Container.size = UE_rrc_inst[ue_mod_idP].UECapability_size;
-
-
   AssertFatal(UECapabilityEnquiry->criticalExtensions.present == UECapabilityEnquiry__criticalExtensions_PR_c1,
-	      "UECapabilityEnquiry->criticalExtensions.present (%d) != UECapabilityEnquiry__criticalExtensions_PR_c1 (%d)\n",
-	      UECapabilityEnquiry->criticalExtensions.present,UECapabilityEnquiry__criticalExtensions_PR_c1);
+              "UECapabilityEnquiry->criticalExtensions.present (%d) != UECapabilityEnquiry__criticalExtensions_PR_c1 (%d)\n",
+              UECapabilityEnquiry->criticalExtensions.present,UECapabilityEnquiry__criticalExtensions_PR_c1);
 
   if (UECapabilityEnquiry->criticalExtensions.choice.c1.present != UECapabilityEnquiry__criticalExtensions__c1_PR_ueCapabilityEnquiry_r8)
     LOG_W(RRC,"UECapabilityEnquiry->criticalExtensions.choice.c1.present (%d) != UECapabilityEnquiry__criticalExtensions__c1_PR_ueCapabilityEnquiry_r8)\n",
-	  UECapabilityEnquiry->criticalExtensions.choice.c1.present);
-  
+          UECapabilityEnquiry->criticalExtensions.choice.c1.present);
+
   ul_dcch_msg.message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.present           = UECapabilityInformation__criticalExtensions_PR_c1;
   ul_dcch_msg.message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.present =
     UECapabilityInformation__criticalExtensions__c1_PR_ueCapabilityInformation_r8;
   ul_dcch_msg.message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.count
     =0;
-  
+
   for (i=0; i<UECapabilityEnquiry->criticalExtensions.choice.c1.choice.ueCapabilityEnquiry_r8.ue_CapabilityRequest.list.count; i++) {
-    
     if (*UECapabilityEnquiry->criticalExtensions.choice.c1.choice.ueCapabilityEnquiry_r8.ue_CapabilityRequest.list.array[i]
-	== RAT_Type_eutra) {
+        == RAT_Type_eutra) {
       ASN_SEQUENCE_ADD(
-		       &ul_dcch_msg.message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list,
-		       &ue_CapabilityRAT_Container);
-      
-      enc_rval = uper_encode_to_buffer(&asn_DEF_UL_DCCH_Message, (void*) &ul_dcch_msg, buffer, 100);
+        &ul_dcch_msg.message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list,
+        &ue_CapabilityRAT_Container);
+      enc_rval = uper_encode_to_buffer(&asn_DEF_UL_DCCH_Message, NULL, (void *) &ul_dcch_msg, buffer, 100);
       AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n",
-		   enc_rval.failed_type->name, enc_rval.encoded);
-      
+                   enc_rval.failed_type->name, enc_rval.encoded);
 #ifdef XER_PRINT
-      xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void*)&ul_dcch_msg);
+      xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)&ul_dcch_msg);
 #endif
-      
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
       {
-	char        message_string[20000];
-	size_t      message_string_size;
-	
-	if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_DCCH_Message, (void *) &ul_dcch_msg)) > 0) {
-	  MessageDef *msg_p;
-	  
-	  msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_UL_DCCH, message_string_size + sizeof (IttiMsgText));
-	  msg_p->ittiMsg.rrc_ul_dcch.size = message_string_size;
-	  memcpy(&msg_p->ittiMsg.rrc_ul_dcch.text, message_string, message_string_size);
-	  
-	  itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-	}
+        char        message_string[20000];
+        size_t      message_string_size;
+
+        if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_DCCH_Message, (void *) &ul_dcch_msg)) > 0) {
+          MessageDef *msg_p;
+          msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_UL_DCCH, message_string_size + sizeof (IttiMsgText));
+          msg_p->ittiMsg.rrc_ul_dcch.size = message_string_size;
+          memcpy(&msg_p->ittiMsg.rrc_ul_dcch.text, message_string, message_string_size);
+          itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
+        }
       }
 # endif
 #endif
-	
+      LOG_D(RRC,"UECapabilityInformation Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
 
-          LOG_D(RRC,"UECapabilityInformation Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
+      for (i = 0; i < (enc_rval.encoded + 7) / 8; i++) {
+        LOG_T(RRC, "%02x.", buffer[i]);
+      }
 
-          for (i = 0; i < (enc_rval.encoded + 7) / 8; i++) {
-            LOG_T(RRC, "%02x.", buffer[i]);
-          }
-      
       LOG_T(RRC, "\n");
       rrc_data_req_ue (
-		    ctxt_pP,
-		    DCCH,
-		    rrc_mui++,
-		    SDU_CONFIRM_NO,
-		    (enc_rval.encoded + 7) / 8,
-		    buffer,
-		    PDCP_TRANSMISSION_MODE_CONTROL);
+        ctxt_pP,
+        DCCH,
+        rrc_mui++,
+        SDU_CONFIRM_NO,
+        (enc_rval.encoded + 7) / 8,
+        buffer,
+        PDCP_TRANSMISSION_MODE_CONTROL);
     }
   }
 }
@@ -1904,20 +1780,19 @@ rrc_ue_process_ueCapabilityEnquiry(
 //-----------------------------------------------------------------------------
 void
 rrc_ue_process_rrcConnectionReconfiguration(
-  const protocol_ctxt_t* const       ctxt_pP,
+  const protocol_ctxt_t *const       ctxt_pP,
   RRCConnectionReconfiguration_t *rrcConnectionReconfiguration,
   uint8_t eNB_index
 )
 //-----------------------------------------------------------------------------
 {
-
   LOG_I(RRC,"[UE %d] Frame %d: Receiving from SRB1 (DL-DCCH), Processing RRCConnectionReconfiguration (eNB %d)\n",
         ctxt_pP->module_id,ctxt_pP->frame,eNB_index);
 
   if (rrcConnectionReconfiguration->criticalExtensions.present == RRCConnectionReconfiguration__criticalExtensions_PR_c1) {
     if (rrcConnectionReconfiguration->criticalExtensions.choice.c1.present ==
         RRCConnectionReconfiguration__criticalExtensions__c1_PR_rrcConnectionReconfiguration_r8) {
-      RRCConnectionReconfiguration_r8_IEs_t* rrcConnectionReconfiguration_r8 =
+      RRCConnectionReconfiguration_r8_IEs_t *rrcConnectionReconfiguration_r8 =
         &rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8;
 
       if (rrcConnectionReconfiguration_r8->mobilityControlInfo) {
@@ -1952,12 +1827,10 @@ rrc_ue_process_rrcConnectionReconfiguration(
         for (list_count = 0; list_count < rrcConnectionReconfiguration_r8->dedicatedInfoNASList->list.count; list_count++) {
           pdu_length = rrcConnectionReconfiguration_r8->dedicatedInfoNASList->list.array[list_count]->size;
           pdu_buffer = rrcConnectionReconfiguration_r8->dedicatedInfoNASList->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);
         }
 
@@ -1969,7 +1842,6 @@ rrc_ue_process_rrcConnectionReconfiguration(
         MessageDef                                 *message_ral_p = NULL;
         rrc_ral_connection_reestablishment_ind_t    connection_reestablishment_ind;
         int                                         i;
-
         message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_CONNECTION_REESTABLISHMENT_IND);
         memset(&connection_reestablishment_ind, 0, sizeof(rrc_ral_connection_reestablishment_ind_t));
         // TO DO ral_si_ind.plmn_id        = 0;
@@ -1994,7 +1866,6 @@ rrc_ue_process_rrcConnectionReconfiguration(
           connection_reestablishment_ind.num_srb      =
             rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList->list.count +
             UE_rrc_inst[ctxt_pP->module_id].num_srb;
-
         } else {
           connection_reestablishment_ind.num_srb      += UE_rrc_inst[ctxt_pP->module_id].num_srb;
         }
@@ -2018,9 +1889,9 @@ rrc_ue_process_rrcConnectionReconfiguration(
 //-----------------------------------------------------------------------------
 void
 rrc_ue_process_mobilityControlInfo(
-  const protocol_ctxt_t* const       ctxt_pP,
+  const protocol_ctxt_t *const       ctxt_pP,
   const uint8_t                      eNB_index,
-  struct MobilityControlInfo* const mobilityControlInfo
+  struct MobilityControlInfo *const mobilityControlInfo
 )
 //-----------------------------------------------------------------------------
 {
@@ -2036,7 +1907,6 @@ rrc_ue_process_mobilityControlInfo(
 
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].T304_active = 1;
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].T304_cnt = T304[mobilityControlInfo->t304];
-
   /*
   drb2release_list = CALLOC (1, sizeof (*drb2release_list));
   lcid= CALLOC (1, sizeof (DRB_Identity_t)); // long
@@ -2062,22 +1932,20 @@ rrc_ue_process_mobilityControlInfo(
          NULL, // key rrc encryption
          NULL, // key rrc integrity
          NULL // key encryption
-#if defined(Rel10) || defined(Rel14)
+  #if defined(Rel10) || defined(Rel14)
          ,NULL
-#endif
+  #endif
          ,NULL);
 
   rrc_rlc_config_asn1_req(NB_eNB_INST+ue_mod_idP, frameP,0,eNB_index,
         NULL,// SRB_ToAddModList
         NULL,// DRB_ToAddModList
         drb2release_list // DRB_ToReleaseList
-#if defined(Rel10) || defined(Rel14)
+  #if defined(Rel10) || defined(Rel14)
         ,NULL
-#endif
+  #endif
         ,NULL);
    */
-
-
   //A little cleanup at RRC...
   //Copying current queue config to free RRC index
   /*
@@ -2099,47 +1967,43 @@ rrc_ue_process_mobilityControlInfo(
   LOG_I(RRC,
         "HO: Reset PDCP and RLC for configured RBs.. \n[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ  (SRB2 eNB %d) --->][MAC_UE][MOD %02d][]\n",
         ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
-
   // Reset MAC and configure PHY
   rrc_mac_config_req_ue(ctxt_pP->module_id,
-			0,
-			eNB_index,
-			(RadioResourceConfigCommonSIB_t *)NULL,
-			(struct PhysicalConfigDedicated *)NULL,
+                        0,
+                        eNB_index,
+                        (RadioResourceConfigCommonSIB_t *)NULL,
+                        (struct PhysicalConfigDedicated *)NULL,
 #if defined(Rel10) || defined(Rel14)
-			(SCellToAddMod_r10_t *)NULL,
-			//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+                        (SCellToAddMod_r10_t *)NULL,
+                        //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
 #endif
-			(MeasObjectToAddMod_t **)NULL,
-			(MAC_MainConfig_t *)NULL,
-			0,
-			(struct LogicalChannelConfig *)NULL,
-			(MeasGapConfig_t *)NULL,
-			(TDD_Config_t *)NULL,
-			mobilityControlInfo,
-			(uint8_t *)NULL,
-			(uint16_t *)NULL,
-			NULL,
-			NULL,
-			NULL,
-			NULL
+                        (MeasObjectToAddMod_t **)NULL,
+                        (MAC_MainConfig_t *)NULL,
+                        0,
+                        (struct LogicalChannelConfig *)NULL,
+                        (MeasGapConfig_t *)NULL,
+                        (TDD_Config_t *)NULL,
+                        mobilityControlInfo,
+                        (uint8_t *)NULL,
+                        (uint16_t *)NULL,
+                        NULL,
+                        NULL,
+                        NULL,
+                        NULL
 #if defined(Rel10) || defined(Rel14)
-			,0,
-			(MBSFN_AreaInfoList_r9_t *)NULL,
-			(PMCH_InfoList_r9_t *)NULL
+                        ,0,
+                        (MBSFN_AreaInfoList_r9_t *)NULL,
+                        (PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-			,0,
-			0
+                        ,0,
+                        0
 #endif
-			);
-  
+                       );
   // Re-establish PDCP for all RBs that are established
   // rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD, ue_mod_idP+DCCH);
   // rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD, ue_mod_idP+DCCH1);
   // rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD, ue_mod_idP+DTCH);
-
-
   // Re-establish RLC for all RBs that are established
   // rrc_rlc_config_req(ue_mod_idP+NB_eNB_INST,frameP,0,CONFIG_ACTION_ADD,ue_mod_idP+DCCH,SIGNALLING_RADIO_BEARER,Rlc_info_am_config);
   // rrc_rlc_config_req(ue_mod_idP+NB_eNB_INST,frameP,0,CONFIG_ACTION_ADD,ue_mod_idP+DCCH1,SIGNALLING_RADIO_BEARER,Rlc_info_am_config);
@@ -2161,14 +2025,13 @@ rrc_detach_from_eNB(
 //-----------------------------------------------------------------------------
 void
 rrc_ue_decode_dcch(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const rb_id_t                Srb_id,
-  const uint8_t*         const Buffer,
+  const uint8_t         *const Buffer,
   const uint8_t                eNB_indexP
 )
 //-----------------------------------------------------------------------------
 {
-
   //DL_DCCH_Message_t dldcchmsg;
   DL_DCCH_Message_t *dl_dcch_msg=NULL;//&dldcchmsg;
   //  asn_dec_rval_t dec_rval;
@@ -2185,7 +2048,6 @@ rrc_ue_decode_dcch(
   }
 
   //memset(dl_dcch_msg,0,sizeof(DL_DCCH_Message_t));
-
   // decode messages
   //  LOG_D(RRC,"[UE %d] Decoding DL-DCCH message\n",ue_mod_idP);
   /*
@@ -2195,20 +2057,17 @@ rrc_ue_decode_dcch(
    */
   uper_decode(NULL,
               &asn_DEF_DL_DCCH_Message,
-              (void**)&dl_dcch_msg,
-              (uint8_t*)Buffer,
+              (void **)&dl_dcch_msg,
+              (uint8_t *)Buffer,
               RRC_BUF_SIZE,0,0);
-
 #ifdef XER_PRINT
-  xer_fprint(stdout,&asn_DEF_DL_DCCH_Message,(void*)dl_dcch_msg);
+  xer_fprint(stdout,&asn_DEF_DL_DCCH_Message,(void *)dl_dcch_msg);
 #endif
-
 #if defined(ENABLE_ITTI)
 # if defined(DISABLE_ITTI_XER_PRINT)
   {
     msg_p = itti_alloc_new_message (TASK_RRC_UE, RRC_DL_DCCH_MESSAGE);
     memcpy (&msg_p->ittiMsg, (void *) dl_dcch_msg, sizeof(RrcDlDcchMessage));
-
     itti_send_msg_to_task (TASK_UNKNOWN, ctxt_pP->instance, msg_p);
   }
 # else
@@ -2220,7 +2079,6 @@ rrc_ue_decode_dcch(
       msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_DL_DCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_dcch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_dcch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
     }
   }
@@ -2228,276 +2086,266 @@ rrc_ue_decode_dcch(
 #endif
 
   if (dl_dcch_msg->message.present == DL_DCCH_MessageType_PR_c1) {
-
     if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_indexP].State >= RRC_CONNECTED) {
-
       switch (dl_dcch_msg->message.choice.c1.present) {
+        case DL_DCCH_MessageType__c1_PR_NOTHING:
+          LOG_I(RRC, "[UE %d] Frame %d : Received PR_NOTHING on DL-DCCH-Message\n",
+                ctxt_pP->module_id, ctxt_pP->frame);
+          return;
 
-      case DL_DCCH_MessageType__c1_PR_NOTHING:
-        LOG_I(RRC, "[UE %d] Frame %d : Received PR_NOTHING on DL-DCCH-Message\n",
-              ctxt_pP->module_id, ctxt_pP->frame);
-        return;
-
-      case DL_DCCH_MessageType__c1_PR_csfbParametersResponseCDMA2000:
-        break;
+        case DL_DCCH_MessageType__c1_PR_csfbParametersResponseCDMA2000:
+          break;
 
-      case DL_DCCH_MessageType__c1_PR_dlInformationTransfer: {
+        case DL_DCCH_MessageType__c1_PR_dlInformationTransfer: {
 #if defined(ENABLE_ITTI)
-        DLInformationTransfer_t *dlInformationTransfer = &dl_dcch_msg->message.choice.c1.choice.dlInformationTransfer;
-
-        if ((dlInformationTransfer->criticalExtensions.present == DLInformationTransfer__criticalExtensions_PR_c1)
-            && (dlInformationTransfer->criticalExtensions.choice.c1.present
-                == DLInformationTransfer__criticalExtensions__c1_PR_dlInformationTransfer_r8)
-            && (dlInformationTransfer->criticalExtensions.choice.c1.choice.dlInformationTransfer_r8.dedicatedInfoType.present
-                == DLInformationTransfer_r8_IEs__dedicatedInfoType_PR_dedicatedInfoNAS)) {
-          /* This message hold a dedicated info NAS payload, forward it to NAS */
-          struct DLInformationTransfer_r8_IEs__dedicatedInfoType *dedicatedInfoType =
+          DLInformationTransfer_t *dlInformationTransfer = &dl_dcch_msg->message.choice.c1.choice.dlInformationTransfer;
+
+          if ((dlInformationTransfer->criticalExtensions.present == DLInformationTransfer__criticalExtensions_PR_c1)
+              && (dlInformationTransfer->criticalExtensions.choice.c1.present
+                  == DLInformationTransfer__criticalExtensions__c1_PR_dlInformationTransfer_r8)
+              && (dlInformationTransfer->criticalExtensions.choice.c1.choice.dlInformationTransfer_r8.dedicatedInfoType.present
+                  == DLInformationTransfer_r8_IEs__dedicatedInfoType_PR_dedicatedInfoNAS)) {
+            /* This message hold a dedicated info NAS payload, forward it to NAS */
+            struct DLInformationTransfer_r8_IEs__dedicatedInfoType *dedicatedInfoType =
                 &dlInformationTransfer->criticalExtensions.choice.c1.choice.dlInformationTransfer_r8.dedicatedInfoType;
-          uint32_t pdu_length;
-          uint8_t *pdu_buffer;
-          MessageDef *msg_p;
-
-          pdu_length = dedicatedInfoType->choice.dedicatedInfoNAS.size;
-          pdu_buffer = dedicatedInfoType->choice.dedicatedInfoNAS.buf;
-
-          msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_DOWNLINK_DATA_IND);
-          NAS_DOWNLINK_DATA_IND(msg_p).UEid = ctxt_pP->module_id; // TODO set the UEid to something else ?
-          NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.length = pdu_length;
-          NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.data = pdu_buffer;
-
-          itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
-        }
+            uint32_t pdu_length;
+            uint8_t *pdu_buffer;
+            MessageDef *msg_p;
+            pdu_length = dedicatedInfoType->choice.dedicatedInfoNAS.size;
+            pdu_buffer = dedicatedInfoType->choice.dedicatedInfoNAS.buf;
+            msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_DOWNLINK_DATA_IND);
+            NAS_DOWNLINK_DATA_IND(msg_p).UEid = ctxt_pP->module_id; // TODO set the UEid to something else ?
+            NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.length = pdu_length;
+            NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.data = pdu_buffer;
+            itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
+          }
 
 #endif
-        break;
-      }
-
-      case DL_DCCH_MessageType__c1_PR_handoverFromEUTRAPreparationRequest:
-        break;
+          break;
+        }
 
-      case DL_DCCH_MessageType__c1_PR_mobilityFromEUTRACommand:
-        break;
+        case DL_DCCH_MessageType__c1_PR_handoverFromEUTRAPreparationRequest:
+          break;
 
-      case DL_DCCH_MessageType__c1_PR_rrcConnectionReconfiguration:
+        case DL_DCCH_MessageType__c1_PR_mobilityFromEUTRACommand:
+          break;
 
-        // first check if mobilityControlInfo  is present
-        if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo
-            != NULL) {
-          /* 36.331, 5.3.5.4 Reception of an RRCConnectionReconfiguration including the mobilityControlInfo by the UE (handover)*/
-          if (UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId
-              != dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo->targetPhysCellId) {
-            LOG_W(RRC,
-                  "[UE %d] Frame %d: Handover target (%ld) is different from RSRP measured target (%ld)..\n",
-                  ctxt_pP->module_id,
-                  ctxt_pP->frame,
-                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo->targetPhysCellId,
-                  UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId);
-            return;
-          } else if ((target_eNB_index = get_adjacent_cell_mod_id(UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId))
-                     == 0xFF) {
-            LOG_W(RRC,
-                  "[UE %d] Frame %d: ue_mod_idP of the target eNB not found, check the network topology\n",
-                  ctxt_pP->module_id,
-                  ctxt_pP->frame);
-            return;
-          } else {
-            LOG_I(RRC,
-                  "[UE% d] Frame %d: Received rrcConnectionReconfiguration with mobilityControlInfo \n",
-                  ctxt_pP->module_id,
-                  ctxt_pP->frame);
-            UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag = 1; // Ready to send more MeasReports if required
+        case DL_DCCH_MessageType__c1_PR_rrcConnectionReconfiguration:
+
+          // first check if mobilityControlInfo  is present
+          if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo
+              != NULL) {
+            /* 36.331, 5.3.5.4 Reception of an RRCConnectionReconfiguration including the mobilityControlInfo by the UE (handover)*/
+            if (UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId
+                != dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo->targetPhysCellId) {
+              LOG_W(RRC,
+                    "[UE %d] Frame %d: Handover target (%ld) is different from RSRP measured target (%ld)..\n",
+                    ctxt_pP->module_id,
+                    ctxt_pP->frame,
+                    dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo->targetPhysCellId,
+                    UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId);
+              return;
+            } else if ((target_eNB_index = get_adjacent_cell_mod_id(UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId))
+                       == 0xFF) {
+              LOG_W(RRC,
+                    "[UE %d] Frame %d: ue_mod_idP of the target eNB not found, check the network topology\n",
+                    ctxt_pP->module_id,
+                    ctxt_pP->frame);
+              return;
+            } else {
+              LOG_I(RRC,
+                    "[UE% d] Frame %d: Received rrcConnectionReconfiguration with mobilityControlInfo \n",
+                    ctxt_pP->module_id,
+                    ctxt_pP->frame);
+              UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag = 1; // Ready to send more MeasReports if required
+            }
           }
-        }
-
-        rrc_ue_process_rrcConnectionReconfiguration(
-          ctxt_pP,
-          &dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration,
-          eNB_indexP);
 
-        if (target_eNB_index != 0xFF) {
-          rrc_ue_generate_RRCConnectionReconfigurationComplete(
+          rrc_ue_process_rrcConnectionReconfiguration(
             ctxt_pP,
-            target_eNB_index,
-            dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.rrc_TransactionIdentifier);
-          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_indexP].State = RRC_HO_EXECUTION;
-          UE_rrc_inst[ctxt_pP->module_id].Info[target_eNB_index].State = RRC_RECONFIGURED;
-          LOG_I(RRC, "[UE %d] State = RRC_RECONFIGURED during HO (eNB %d)\n",
-                ctxt_pP->module_id, target_eNB_index);
+            &dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration,
+            eNB_indexP);
+
+          if (target_eNB_index != 0xFF) {
+            rrc_ue_generate_RRCConnectionReconfigurationComplete(
+              ctxt_pP,
+              target_eNB_index,
+              dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.rrc_TransactionIdentifier);
+            UE_rrc_inst[ctxt_pP->module_id].Info[eNB_indexP].State = RRC_HO_EXECUTION;
+            UE_rrc_inst[ctxt_pP->module_id].Info[target_eNB_index].State = RRC_RECONFIGURED;
+            LOG_I(RRC, "[UE %d] State = RRC_RECONFIGURED during HO (eNB %d)\n",
+                  ctxt_pP->module_id, target_eNB_index);
 #if defined(ENABLE_ITTI)
 #if ENABLE_RAL
-          {
-            MessageDef                                 *message_ral_p = NULL;
-            rrc_ral_connection_reconfiguration_ho_ind_t connection_reconfiguration_ho_ind;
-            int                                         i;
-
-            message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_CONNECTION_RECONFIGURATION_HO_IND);
-            memset(&connection_reconfiguration_ho_ind, 0, sizeof(rrc_ral_connection_reconfiguration_ho_ind_t));
-            connection_reconfiguration_ho_ind.ue_id = ctxt_pP->module_id;
-
-            if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList
-                != NULL) {
-              connection_reconfiguration_ho_ind.num_drb      =
-                dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count;
-
-              for (i=0; (
-                     i<dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count)
-                   && (i < maxDRB); i++) {
-                // why minus 1 in RRC code for drb_identity ?
-                connection_reconfiguration_ho_ind.drb_id[i]   =
-                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.array[i]->drb_Identity;
+            {
+              MessageDef                                 *message_ral_p = NULL;
+              rrc_ral_connection_reconfiguration_ho_ind_t connection_reconfiguration_ho_ind;
+              int                                         i;
+              message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_CONNECTION_RECONFIGURATION_HO_IND);
+              memset(&connection_reconfiguration_ho_ind, 0, sizeof(rrc_ral_connection_reconfiguration_ho_ind_t));
+              connection_reconfiguration_ho_ind.ue_id = ctxt_pP->module_id;
+
+              if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList
+                  != NULL) {
+                connection_reconfiguration_ho_ind.num_drb      =
+                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count;
+
+                for (i=0; (
+                       i<dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count)
+                     && (i < maxDRB); i++) {
+                  // why minus 1 in RRC code for drb_identity ?
+                  connection_reconfiguration_ho_ind.drb_id[i]   =
+                    dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.array[i]->drb_Identity;
+                }
+              } else {
+                connection_reconfiguration_ho_ind.num_drb      = 0;
               }
-            } else {
-              connection_reconfiguration_ho_ind.num_drb      = 0;
-            }
 
-            if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList
-                != NULL) {
-              connection_reconfiguration_ho_ind.num_srb      =
-                dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList->list.count
-                +
-                UE_rrc_inst[ctxt_pP->module_id].num_srb;
-            } else {
-              connection_reconfiguration_ho_ind.num_srb      += UE_rrc_inst[ctxt_pP->module_id].num_srb;
-            }
+              if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList
+                  != NULL) {
+                connection_reconfiguration_ho_ind.num_srb      =
+                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList->list.count
+                  +
+                  UE_rrc_inst[ctxt_pP->module_id].num_srb;
+              } else {
+                connection_reconfiguration_ho_ind.num_srb      += UE_rrc_inst[ctxt_pP->module_id].num_srb;
+              }
 
-            if (connection_reconfiguration_ho_ind.num_srb > 2 ) {
-              connection_reconfiguration_ho_ind.num_srb =2;
-            }
+              if (connection_reconfiguration_ho_ind.num_srb > 2 ) {
+                connection_reconfiguration_ho_ind.num_srb =2;
+              }
 
-            memcpy (&message_ral_p->ittiMsg, (void *) &connection_reconfiguration_ho_ind, sizeof(rrc_ral_connection_reconfiguration_ho_ind_t));
-            //#warning "ue_mod_idP ? for instance ? => YES"
-            LOG_I(RRC, "Sending RRC_RAL_CONNECTION_RECONFIGURATION_HO_IND to mRAL\n");
-            itti_send_msg_to_task (TASK_RAL_UE, ctxt_pP->instance, message_ral_p);
-          }
+              memcpy (&message_ral_p->ittiMsg, (void *) &connection_reconfiguration_ho_ind, sizeof(rrc_ral_connection_reconfiguration_ho_ind_t));
+              //#warning "ue_mod_idP ? for instance ? => YES"
+              LOG_I(RRC, "Sending RRC_RAL_CONNECTION_RECONFIGURATION_HO_IND to mRAL\n");
+              itti_send_msg_to_task (TASK_RAL_UE, ctxt_pP->instance, message_ral_p);
+            }
 #endif
 #endif
-        } else {
-          rrc_ue_generate_RRCConnectionReconfigurationComplete(
-            ctxt_pP,
-            eNB_indexP,
-            dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.rrc_TransactionIdentifier);
-          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_indexP].State = RRC_RECONFIGURED;
-          LOG_I(RRC, "[UE %d] State = RRC_RECONFIGURED (eNB %d)\n",
-                ctxt_pP->module_id,
-                eNB_indexP);
+          } else {
+            rrc_ue_generate_RRCConnectionReconfigurationComplete(
+              ctxt_pP,
+              eNB_indexP,
+              dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.rrc_TransactionIdentifier);
+            UE_rrc_inst[ctxt_pP->module_id].Info[eNB_indexP].State = RRC_RECONFIGURED;
+            LOG_I(RRC, "[UE %d] State = RRC_RECONFIGURED (eNB %d)\n",
+                  ctxt_pP->module_id,
+                  eNB_indexP);
 #if defined(ENABLE_ITTI)
 #if ENABLE_RAL
-          {
-            MessageDef                                 *message_ral_p = NULL;
-            rrc_ral_connection_reconfiguration_ind_t    connection_reconfiguration_ind;
-            int                                         i;
-
-            message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_CONNECTION_RECONFIGURATION_IND);
-            memset(&connection_reconfiguration_ind, 0, sizeof(rrc_ral_connection_reconfiguration_ind_t));
-            connection_reconfiguration_ind.ue_id = ctxt_pP->module_id;
-
-            if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList
-                != NULL) {
-              connection_reconfiguration_ind.num_drb      =
-                dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count;
-
-              for (i=0; (
-                     i<dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count)
-                   && (i < maxDRB); i++) {
-                // why minus 1 in RRC code for drb_identity ?
-                connection_reconfiguration_ind.drb_id[i]   =
-                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.array[i]->drb_Identity;
+            {
+              MessageDef                                 *message_ral_p = NULL;
+              rrc_ral_connection_reconfiguration_ind_t    connection_reconfiguration_ind;
+              int                                         i;
+              message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_CONNECTION_RECONFIGURATION_IND);
+              memset(&connection_reconfiguration_ind, 0, sizeof(rrc_ral_connection_reconfiguration_ind_t));
+              connection_reconfiguration_ind.ue_id = ctxt_pP->module_id;
+
+              if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList
+                  != NULL) {
+                connection_reconfiguration_ind.num_drb      =
+                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count;
+
+                for (i=0; (
+                       i<dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count)
+                     && (i < maxDRB); i++) {
+                  // why minus 1 in RRC code for drb_identity ?
+                  connection_reconfiguration_ind.drb_id[i]   =
+                    dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.array[i]->drb_Identity;
+                }
+              } else {
+                connection_reconfiguration_ind.num_drb      = 0;
               }
-            } else {
-              connection_reconfiguration_ind.num_drb      = 0;
-            }
 
-            if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList
-                != NULL) {
-              connection_reconfiguration_ind.num_srb      =
-                dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList->list.count
-                +
-                UE_rrc_inst[ctxt_pP->module_id].num_srb;
-            } else {
-              connection_reconfiguration_ind.num_srb      +=UE_rrc_inst[ctxt_pP->module_id].num_srb;
-            }
+              if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList
+                  != NULL) {
+                connection_reconfiguration_ind.num_srb      =
+                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList->list.count
+                  +
+                  UE_rrc_inst[ctxt_pP->module_id].num_srb;
+              } else {
+                connection_reconfiguration_ind.num_srb      +=UE_rrc_inst[ctxt_pP->module_id].num_srb;
+              }
 
-            if (connection_reconfiguration_ind.num_srb > 2 ) {
-              connection_reconfiguration_ind.num_srb =2;
-            }
+              if (connection_reconfiguration_ind.num_srb > 2 ) {
+                connection_reconfiguration_ind.num_srb =2;
+              }
 
-            memcpy (&message_ral_p->ittiMsg, (void *) &connection_reconfiguration_ind, sizeof(rrc_ral_connection_reconfiguration_ind_t));
-            //#warning "ue_mod_idP ? for instance ? => YES"
-            LOG_I(RRC, "Sending RRC_RAL_CONNECTION_RECONFIGURATION_IND to mRAL\n");
-            itti_send_msg_to_task (TASK_RAL_UE, ctxt_pP->instance, message_ral_p);
-          }
+              memcpy (&message_ral_p->ittiMsg, (void *) &connection_reconfiguration_ind, sizeof(rrc_ral_connection_reconfiguration_ind_t));
+              //#warning "ue_mod_idP ? for instance ? => YES"
+              LOG_I(RRC, "Sending RRC_RAL_CONNECTION_RECONFIGURATION_IND to mRAL\n");
+              itti_send_msg_to_task (TASK_RAL_UE, ctxt_pP->instance, message_ral_p);
+            }
 #endif
 #endif
+          }
 
-        }
-
-        break;
+          break;
 
-      case DL_DCCH_MessageType__c1_PR_rrcConnectionRelease:
+        case DL_DCCH_MessageType__c1_PR_rrcConnectionRelease:
 #if defined(ENABLE_ITTI)
-        msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_CONN_RELEASE_IND);
-
-        if ((dl_dcch_msg->message.choice.c1.choice.rrcConnectionRelease.criticalExtensions.present
-             == RRCConnectionRelease__criticalExtensions_PR_c1)
-            && (dl_dcch_msg->message.choice.c1.choice.rrcConnectionRelease.criticalExtensions.choice.c1.present
-                == RRCConnectionRelease__criticalExtensions__c1_PR_rrcConnectionRelease_r8)) {
-          NAS_CONN_RELEASE_IND(msg_p).cause =
-            dl_dcch_msg->message.choice.c1.choice.rrcConnectionRelease.criticalExtensions.choice.c1.choice.rrcConnectionRelease_r8.releaseCause;
-        }
+          msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_CONN_RELEASE_IND);
+
+          if ((dl_dcch_msg->message.choice.c1.choice.rrcConnectionRelease.criticalExtensions.present
+               == RRCConnectionRelease__criticalExtensions_PR_c1)
+              && (dl_dcch_msg->message.choice.c1.choice.rrcConnectionRelease.criticalExtensions.choice.c1.present
+                  == RRCConnectionRelease__criticalExtensions__c1_PR_rrcConnectionRelease_r8)) {
+            NAS_CONN_RELEASE_IND(msg_p).cause =
+              dl_dcch_msg->message.choice.c1.choice.rrcConnectionRelease.criticalExtensions.choice.c1.choice.rrcConnectionRelease_r8.releaseCause;
+          }
 
-        itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
+          itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
 #if ENABLE_RAL
-        msg_p = itti_alloc_new_message(TASK_RRC_UE, RRC_RAL_CONNECTION_RELEASE_IND);
-        RRC_RAL_CONNECTION_RELEASE_IND(msg_p).ue_id = ctxt_pP->module_id;
-        itti_send_msg_to_task(TASK_RAL_UE, ctxt_pP->instance, msg_p);
+          msg_p = itti_alloc_new_message(TASK_RRC_UE, RRC_RAL_CONNECTION_RELEASE_IND);
+          RRC_RAL_CONNECTION_RELEASE_IND(msg_p).ue_id = ctxt_pP->module_id;
+          itti_send_msg_to_task(TASK_RAL_UE, ctxt_pP->instance, msg_p);
 #endif
 #endif
-        break;
-
-      case DL_DCCH_MessageType__c1_PR_securityModeCommand:
-        LOG_I(RRC, "[UE %d] Received securityModeCommand (eNB %d)\n",
-              ctxt_pP->module_id, eNB_indexP);
-        rrc_ue_process_securityModeCommand(
-          ctxt_pP,
-          &dl_dcch_msg->message.choice.c1.choice.securityModeCommand,
-          eNB_indexP);
-        break;
+          break;
 
-      case DL_DCCH_MessageType__c1_PR_ueCapabilityEnquiry:
-        LOG_I(RRC, "[UE %d] Received Capability Enquiry (eNB %d)\n",
-              ctxt_pP->module_id,
-              eNB_indexP);
-        rrc_ue_process_ueCapabilityEnquiry(
-          ctxt_pP,
-          &dl_dcch_msg->message.choice.c1.choice.ueCapabilityEnquiry,
-          eNB_indexP);
-        break;
+        case DL_DCCH_MessageType__c1_PR_securityModeCommand:
+          LOG_I(RRC, "[UE %d] Received securityModeCommand (eNB %d)\n",
+                ctxt_pP->module_id, eNB_indexP);
+          rrc_ue_process_securityModeCommand(
+            ctxt_pP,
+            &dl_dcch_msg->message.choice.c1.choice.securityModeCommand,
+            eNB_indexP);
+          break;
 
-      case DL_DCCH_MessageType__c1_PR_counterCheck:
-        break;
+        case DL_DCCH_MessageType__c1_PR_ueCapabilityEnquiry:
+          LOG_I(RRC, "[UE %d] Received Capability Enquiry (eNB %d)\n",
+                ctxt_pP->module_id,
+                eNB_indexP);
+          rrc_ue_process_ueCapabilityEnquiry(
+            ctxt_pP,
+            &dl_dcch_msg->message.choice.c1.choice.ueCapabilityEnquiry,
+            eNB_indexP);
+          break;
 
+        case DL_DCCH_MessageType__c1_PR_counterCheck:
+          break;
 #if defined(Rel10) || defined(Rel14)
 
-      case DL_DCCH_MessageType__c1_PR_ueInformationRequest_r9:
-        break;
+        case DL_DCCH_MessageType__c1_PR_ueInformationRequest_r9:
+          break;
 
-      case DL_DCCH_MessageType__c1_PR_loggedMeasurementConfiguration_r10:
-        break;
+        case DL_DCCH_MessageType__c1_PR_loggedMeasurementConfiguration_r10:
+          break;
 
-      case DL_DCCH_MessageType__c1_PR_rnReconfiguration_r10:
-        break;
+        case DL_DCCH_MessageType__c1_PR_rnReconfiguration_r10:
+          break;
 #endif
 
-      case DL_DCCH_MessageType__c1_PR_spare1:
-      case DL_DCCH_MessageType__c1_PR_spare2:
-      case DL_DCCH_MessageType__c1_PR_spare3:
+        case DL_DCCH_MessageType__c1_PR_spare1:
+        case DL_DCCH_MessageType__c1_PR_spare2:
+        case DL_DCCH_MessageType__c1_PR_spare3:
 #if !defined(Rel14)
-      case DL_DCCH_MessageType__c1_PR_spare4:
+        case DL_DCCH_MessageType__c1_PR_spare4:
 #endif
-        break;
+          break;
 
-      default:
-        break;
+        default:
+          break;
       }
     }
   }
@@ -2514,7 +2362,7 @@ const char SIBType[12][6] = {"SIB3","SIB4","SIB5","SIB6","SIB7","SIB8","SIB9","S
 const char SIBPeriod[8][6]= {"rf8","rf16","rf32","rf64","rf128","rf256","rf512","ERR"};
 int siPeriod_int[7] = {80,160,320,640,1280,2560,5120};
 
-static const char* SIBreserved( long value )
+static const char *SIBreserved( long value )
 {
   if (value < 0 || value > 1)
     return "ERR";
@@ -2524,7 +2372,7 @@ static const char* SIBreserved( long value )
 
   return "reserved";
 }
-static const char* SIBbarred( long value )
+static const char *SIBbarred( long value )
 {
   if (value < 0 || value > 1)
     return "ERR";
@@ -2534,7 +2382,7 @@ static const char* SIBbarred( long value )
 
   return "barred";
 }
-static const char* SIBallowed( long value )
+static const char *SIBallowed( long value )
 {
   if (value < 0 || value > 1)
     return "ERR";
@@ -2544,22 +2392,22 @@ static const char* SIBallowed( long value )
 
   return "allowed";
 }
-static const char* SIB2SoundingPresent( int value )
+static const char *SIB2SoundingPresent( int value )
 {
   switch (value) {
-  case SoundingRS_UL_ConfigCommon_PR_NOTHING:
-    return "NOTHING";
+    case SoundingRS_UL_ConfigCommon_PR_NOTHING:
+      return "NOTHING";
 
-  case SoundingRS_UL_ConfigCommon_PR_release:
-    return "release";
+    case SoundingRS_UL_ConfigCommon_PR_release:
+      return "release";
 
-  case SoundingRS_UL_ConfigCommon_PR_setup:
-    return "setup";
+    case SoundingRS_UL_ConfigCommon_PR_setup:
+      return "setup";
   }
 
   return "ERR";
 }
-static const char* SIB2numberOfRA_Preambles( long value )
+static const char *SIB2numberOfRA_Preambles( long value )
 {
   static char temp[4] = {0};
 
@@ -2570,7 +2418,7 @@ static const char* SIB2numberOfRA_Preambles( long value )
   temp[3] = 0; // terminate string
   return temp;
 }
-static const char* SIB2powerRampingStep( long value )
+static const char *SIB2powerRampingStep( long value )
 {
   if (value < 0 || value > 3)
     return "ERR";
@@ -2578,7 +2426,7 @@ static const char* SIB2powerRampingStep( long value )
   static const char str[4][4] = {"dB0","dB2","dB4","dB6"};
   return str[value];
 }
-static const char* SIB2preambleInitialReceivedTargetPower( long value )
+static const char *SIB2preambleInitialReceivedTargetPower( long value )
 {
   static char temp[8] = {0};
 
@@ -2589,7 +2437,7 @@ static const char* SIB2preambleInitialReceivedTargetPower( long value )
   temp[7] = 0; // terminate string
   return temp;
 }
-static const char* SIB2preambleTransMax( long value )
+static const char *SIB2preambleTransMax( long value )
 {
   static char temp[5] = {0};
 
@@ -2602,26 +2450,26 @@ static const char* SIB2preambleTransMax( long value )
   }
 
   switch (value) {
-  case 6:
-    return "n10";
+    case 6:
+      return "n10";
 
-  case 7:
-    return "n20";
+    case 7:
+      return "n20";
 
-  case 8:
-    return "n50";
+    case 8:
+      return "n50";
 
-  case 9:
-    return "n100";
+    case 9:
+      return "n100";
 
-  case 10:
-    return "n200";
+    case 10:
+      return "n200";
   }
 
   /* unreachable but gcc warns... */
   return "ERR";
 }
-static const char* SIB2ra_ResponseWindowSize( long value )
+static const char *SIB2ra_ResponseWindowSize( long value )
 {
   static char temp[4] = {0};
 
@@ -2634,7 +2482,7 @@ static const char* SIB2ra_ResponseWindowSize( long value )
   snprintf( temp, sizeof(temp), "sf%ld", value+2 );
   return temp;
 }
-static const char* SIB2mac_ContentionResolutionTimer( long value )
+static const char *SIB2mac_ContentionResolutionTimer( long value )
 {
   static char temp[5] = {0};
 
@@ -2644,7 +2492,7 @@ static const char* SIB2mac_ContentionResolutionTimer( long value )
   snprintf( temp, sizeof(temp), "sf%ld", 8 + value*8 );
   return temp;
 }
-static const char* SIB2modificationPeriodCoeff( long value )
+static const char *SIB2modificationPeriodCoeff( long value )
 {
   static char temp[32] = {0};
 
@@ -2654,7 +2502,7 @@ static const char* SIB2modificationPeriodCoeff( long value )
   snprintf( temp, sizeof(temp), "n%d", (int)pow(2,value+1) );
   return temp;
 }
-static const char* SIB2defaultPagingCycle( long value )
+static const char *SIB2defaultPagingCycle( long value )
 {
   static char temp[32] = {0};
 
@@ -2664,7 +2512,7 @@ static const char* SIB2defaultPagingCycle( long value )
   snprintf( temp, sizeof(temp), "rf%d", (int)pow(2,value+4) );
   return temp;
 }
-static const char* SIB2nB( long value )
+static const char *SIB2nB( long value )
 {
   if (value < 0 || value > 7)
     return "ERR";
@@ -2678,17 +2526,16 @@ static const char* SIB2nB( long value )
 
 //-----------------------------------------------------------------------------
 int decode_BCCH_DLSCH_Message(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const uint8_t                eNB_index,
-  uint8_t*               const Sdu,
+  uint8_t               *const Sdu,
   const uint8_t                Sdu_len,
   const uint8_t                rsrq,
   const uint8_t                rsrp )
 {
   BCCH_DL_SCH_Message_t *bcch_message = NULL;
-  SystemInformationBlockType1_t* sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
+  SystemInformationBlockType1_t *sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
   int i;
-
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_BCCH, VCD_FUNCTION_IN );
 
   if (((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1) == 1) &&  // SIB1 received
@@ -2700,7 +2547,6 @@ int decode_BCCH_DLSCH_Message(
   }
 
   rrc_set_sub_state( ctxt_pP->module_id, RRC_SUB_STATE_IDLE_RECEIVING_SIB );
-
   asn_dec_rval_t dec_rval = uper_decode_complete( NULL,
                             &asn_DEF_BCCH_DL_SCH_Message,
                             (void **)&bcch_message,
@@ -2711,11 +2557,13 @@ int decode_BCCH_DLSCH_Message(
     LOG_E( RRC, "[UE %"PRIu8"] Failed to decode BCCH_DLSCH_MESSAGE (%zu bits)\n",
            ctxt_pP->module_id,
            dec_rval.consumed );
-    for (i=0;i<Sdu_len;i++)
+
+    for (i=0; i<Sdu_len; i++)
       printf("%02x ",Sdu[i]);
+
     printf("\n");
     // free the memory
-    SEQUENCE_free( &asn_DEF_BCCH_DL_SCH_Message, (void*)bcch_message, 1 );
+    SEQUENCE_free( &asn_DEF_BCCH_DL_SCH_Message, (void *)bcch_message, 1 );
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_BCCH, VCD_FUNCTION_OUT );
     return -1;
   }
@@ -2724,10 +2572,8 @@ int decode_BCCH_DLSCH_Message(
 # if defined(DISABLE_ITTI_XER_PRINT)
   {
     MessageDef *msg_p;
-
     msg_p = itti_alloc_new_message (TASK_RRC_UE, RRC_DL_BCCH_MESSAGE);
     memcpy (&msg_p->ittiMsg, (void *) bcch_message, sizeof(RrcDlBcchMessage));
-
     itti_send_msg_to_task (TASK_UNKNOWN, ctxt_pP->instance, msg_p);
   }
 # else
@@ -2737,11 +2583,9 @@ int decode_BCCH_DLSCH_Message(
 
     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_BCCH_DL_SCH_Message, (void *)bcch_message)) > 0) {
       MessageDef *msg_p;
-
       msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_DL_BCCH, message_string_size + sizeof (IttiMsgText));
       msg_p->ittiMsg.rrc_dl_bcch.size = message_string_size;
       memcpy(&msg_p->ittiMsg.rrc_dl_bcch.text, message_string, message_string_size);
-
       itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
     }
   }
@@ -2750,42 +2594,39 @@ int decode_BCCH_DLSCH_Message(
 
   if (bcch_message->message.present == BCCH_DL_SCH_MessageType_PR_c1) {
     switch (bcch_message->message.choice.c1.present) {
-    case BCCH_DL_SCH_MessageType__c1_PR_systemInformationBlockType1:
-      if ((ctxt_pP->frame % 2) == 0) {
-        // even frame
-        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1) == 0) {
-          SystemInformationBlockType1_t* sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
-          memcpy( (void*)sib1,
-                  (void*)&bcch_message->message.choice.c1.choice.systemInformationBlockType1,
-                  sizeof(SystemInformationBlockType1_t) );
-          LOG_D( RRC, "[UE %"PRIu8"] Decoding First SIB1\n", ctxt_pP->module_id );
-          decode_SIB1( ctxt_pP, eNB_index, rsrq, rsrp );
+      case BCCH_DL_SCH_MessageType__c1_PR_systemInformationBlockType1:
+        if ((ctxt_pP->frame % 2) == 0) {
+          // even frame
+          if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1) == 0) {
+            SystemInformationBlockType1_t *sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
+            memcpy( (void *)sib1,
+                    (void *)&bcch_message->message.choice.c1.choice.systemInformationBlockType1,
+                    sizeof(SystemInformationBlockType1_t) );
+            LOG_D( RRC, "[UE %"PRIu8"] Decoding First SIB1\n", ctxt_pP->module_id );
+            decode_SIB1( ctxt_pP, eNB_index, rsrq, rsrp );
+          }
         }
-      }
-
-      break;
-
-    case BCCH_DL_SCH_MessageType__c1_PR_systemInformation:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1) == 1) {
-        // SIB1 with schedulingInfoList is available
 
-        SystemInformation_t* si = UE_rrc_inst[ctxt_pP->module_id].si[eNB_index];
-        memcpy( si,
-                &bcch_message->message.choice.c1.choice.systemInformation,
-                sizeof(SystemInformation_t) );
-
-        LOG_D( RRC, "[UE %"PRIu8"] Decoding SI for frameP %"PRIu32"\n",
-               ctxt_pP->module_id,
-               ctxt_pP->frame );
+        break;
 
-        decode_SI( ctxt_pP, eNB_index );
-      }
+      case BCCH_DL_SCH_MessageType__c1_PR_systemInformation:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1) == 1) {
+          // SIB1 with schedulingInfoList is available
+          SystemInformation_t *si = UE_rrc_inst[ctxt_pP->module_id].si[eNB_index];
+          memcpy( si,
+                  &bcch_message->message.choice.c1.choice.systemInformation,
+                  sizeof(SystemInformation_t) );
+          LOG_D( RRC, "[UE %"PRIu8"] Decoding SI for frameP %"PRIu32"\n",
+                 ctxt_pP->module_id,
+                 ctxt_pP->frame );
+          decode_SI( ctxt_pP, eNB_index );
+        }
 
-      break;
+        break;
 
-    case BCCH_DL_SCH_MessageType__c1_PR_NOTHING:
-    default:
-      break;
+      case BCCH_DL_SCH_MessageType__c1_PR_NOTHING:
+      default:
+        break;
     }
   }
 
@@ -2799,22 +2640,19 @@ int decode_BCCH_DLSCH_Message(
   }
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_BCCH, VCD_FUNCTION_OUT );
-
   return 0;
 }
 
 //-----------------------------------------------------------------------------
 int decode_PCCH_DLSCH_Message(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const uint8_t                eNB_index,
-  uint8_t*               const Sdu,
+  uint8_t               *const Sdu,
   const uint8_t                Sdu_len)
 {
   PCCH_Message_t *pcch_message = NULL;
   int i;
-
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_PCCH, VCD_FUNCTION_IN );
-
   asn_dec_rval_t dec_rval = uper_decode_complete( NULL,
                             &asn_DEF_PCCH_Message,
                             (void **)&pcch_message,
@@ -2825,11 +2663,13 @@ int decode_PCCH_DLSCH_Message(
     LOG_E( RRC, "[UE %"PRIu8"] Failed to decode PCCH_MESSAGE (%zu bits)\n",
            ctxt_pP->module_id,
            dec_rval.consumed );
-    for (i=0;i<Sdu_len;i++)
+
+    for (i=0; i<Sdu_len; i++)
       printf("%02x ",Sdu[i]);
+
     printf("\n");
     // free the memory
-    SEQUENCE_free( &asn_DEF_PCCH_Message, (void*)pcch_message, 1 );
+    SEQUENCE_free( &asn_DEF_PCCH_Message, (void *)pcch_message, 1 );
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_PCCH, VCD_FUNCTION_OUT );
     return -1;
   }
@@ -2838,19 +2678,14 @@ int decode_PCCH_DLSCH_Message(
 }
 
 //-----------------------------------------------------------------------------
-static int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t rsrq, const uint8_t rsrp )
+static int decode_SIB1( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t rsrq, const uint8_t rsrp )
 {
-  SystemInformationBlockType1_t* sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
-
+  SystemInformationBlockType1_t *sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_UE_DECODE_SIB1, VCD_FUNCTION_IN );
-
   LOG_I( RRC, "[UE %d] : Dumping SIB 1\n", ctxt_pP->module_id );
-
   PLMN_Identity_t *PLMN_identity = &sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[0]->plmn_Identity;
-
   int mccdigits = PLMN_identity->mcc->list.count;
   int mncdigits = PLMN_identity->mnc.list.count;
-
   int mcc;
 
   if (mccdigits == 2) {
@@ -2876,7 +2711,6 @@ static int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
   LOG_I( RRC, "PLMN MCC %0*d, MNC %0*d, TAC 0x%04x\n", mccdigits, mcc, mncdigits, mnc, tac );
   long cellReservedForOperatorUse = sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[0]->cellReservedForOperatorUse;
   LOG_I( RRC, "cellReservedForOperatorUse                 : raw:%ld decoded:%s\n", cellReservedForOperatorUse, SIBreserved(cellReservedForOperatorUse) );
-
   // search internal table for provider name
   int plmn_ind = 0;
 
@@ -2899,7 +2733,6 @@ static int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
          sib1->cellAccessRelatedInfo.cellIdentity.buf[1],
          sib1->cellAccessRelatedInfo.cellIdentity.buf[2],
          sib1->cellAccessRelatedInfo.cellIdentity.buf[3] >> sib1->cellAccessRelatedInfo.cellIdentity.bits_unused);
-
   long cellBarred = sib1->cellAccessRelatedInfo.cellBarred;
   LOG_I( RRC, "cellAccessRelatedInfo.cellBarred           : raw:%ld decoded:%s\n", cellBarred, SIBbarred(cellBarred) );
   long intraFreqReselection = sib1->cellAccessRelatedInfo.intraFreqReselection;
@@ -2953,48 +2786,43 @@ static int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
 
   LOG_I( RRC, "siWindowLength                             : %s\n", siWindowLength[min(sib1->si_WindowLength,7)] );
   LOG_I( RRC, "systemInfoValueTag                         : %ld\n", sib1->systemInfoValueTag );
-
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIperiod     = siPeriod_int[sib1->schedulingInfoList.list.array[0]->si_Periodicity];
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIwindowsize = siWindowLength_int[sib1->si_WindowLength];
   LOG_I( RRC, "[FRAME unknown][RRC_UE][MOD %02"PRIu8"][][--- MAC_CONFIG_REQ (SIB1 params eNB %"PRIu8") --->][MAC_UE][MOD %02"PRIu8"][]\n",
          ctxt_pP->module_id, eNB_index, ctxt_pP->module_id );
-
   rrc_mac_config_req_ue(ctxt_pP->module_id, 0, eNB_index,
-			(RadioResourceConfigCommonSIB_t *)NULL,
-			(struct PhysicalConfigDedicated *)NULL,
+                        (RadioResourceConfigCommonSIB_t *)NULL,
+                        (struct PhysicalConfigDedicated *)NULL,
 #if defined(Rel10) || defined(Rel14)
-			(SCellToAddMod_r10_t *)NULL,
-			//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+                        (SCellToAddMod_r10_t *)NULL,
+                        //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
 #endif
-			(MeasObjectToAddMod_t **)NULL,
-			(MAC_MainConfig_t *)NULL,
-			0,
-			(struct LogicalChannelConfig *)NULL,
-			(MeasGapConfig_t *)NULL,
-			UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index]->tdd_Config,
-			(MobilityControlInfo_t *) NULL,
-			&UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIwindowsize,
-			&UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIperiod,
-			NULL,
-			NULL,
-			NULL,
-			(MBSFN_SubframeConfigList_t *)NULL
+                        (MeasObjectToAddMod_t **)NULL,
+                        (MAC_MainConfig_t *)NULL,
+                        0,
+                        (struct LogicalChannelConfig *)NULL,
+                        (MeasGapConfig_t *)NULL,
+                        UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index]->tdd_Config,
+                        (MobilityControlInfo_t *) NULL,
+                        &UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIwindowsize,
+                        &UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIperiod,
+                        NULL,
+                        NULL,
+                        NULL,
+                        (MBSFN_SubframeConfigList_t *)NULL
 #if defined(Rel10) || defined(Rel14)
-			,0,
-			(MBSFN_AreaInfoList_r9_t *)NULL,
-			(PMCH_InfoList_r9_t *)NULL
-
+                        ,0,
+                        (MBSFN_AreaInfoList_r9_t *)NULL,
+                        (PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-			,
-			0,
-			0
+                        ,
+                        0,
+                        0
 #endif
-			);
-  
+                       );
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus = 1;
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIB1systemInfoValueTag = sib1->systemInfoValueTag;
-
 #if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
   {
     int cell_valid = 0;
@@ -3003,13 +2831,11 @@ static int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
       /* Cell is not barred */
       int plmn;
       int plmn_number;
-
       plmn_number = sib1->cellAccessRelatedInfo.plmn_IdentityList.list.count;
 
       /* Compare requested PLMN and PLMNs from SIB1*/
       for (plmn = 0; plmn < plmn_number; plmn++) {
         PLMN_Identity_t *plmn_Identity;
-
         plmn_Identity = &sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[plmn]->plmn_Identity;
 
         if (
@@ -3035,7 +2861,6 @@ static int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
         ) {
           /* PLMN match, send a confirmation to NAS */
           MessageDef  *msg_p;
-
           msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_CELL_SELECTION_CNF);
           NAS_CELL_SELECTION_CNF (msg_p).errCode = AS_SUCCESS;
           NAS_CELL_SELECTION_CNF (msg_p).cellID = BIT_STRING_to_uint32(&sib1->cellAccessRelatedInfo.cellIdentity);
@@ -3043,7 +2868,6 @@ static int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
           NAS_CELL_SELECTION_CNF (msg_p).rat = 0xFF;
           NAS_CELL_SELECTION_CNF (msg_p).rsrq = rsrq;
           NAS_CELL_SELECTION_CNF (msg_p).rsrp = rsrp;
-
           itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
           cell_valid = 1;
           break;
@@ -3054,16 +2878,12 @@ static int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
     if (cell_valid == 0) {
       /* Cell can not be used, ask PHY to try the next one */
       MessageDef  *msg_p;
-
       msg_p = itti_alloc_new_message(TASK_RRC_UE, PHY_FIND_NEXT_CELL_REQ);
-
       itti_send_msg_to_task(TASK_PHY_UE, ctxt_pP->instance, msg_p);
     }
   }
 #endif
-
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_UE_DECODE_SIB1, VCD_FUNCTION_OUT );
-
   return 0;
 }
 
@@ -3120,7 +2940,6 @@ static void dump_sib2( SystemInformationBlockType2_t *sib2 )
   LOG_I( RRC, "radioResourceConfigCommon.rach_ConfigCommon.powerRampingParameters.preambleInitialReceivedTargetPower : raw:%ld decoded:%s\n",
          sib2->radioResourceConfigCommon.rach_ConfigCommon.powerRampingParameters.preambleInitialReceivedTargetPower,
          SIB2preambleInitialReceivedTargetPower(sib2->radioResourceConfigCommon.rach_ConfigCommon.powerRampingParameters.preambleInitialReceivedTargetPower) );
-
   LOG_I( RRC, "radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.preambleTransMax              : raw:%ld decoded:%s\n",
          sib2->radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.preambleTransMax,
          SIB2preambleTransMax(sib2->radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.preambleTransMax) );
@@ -3130,15 +2949,12 @@ static void dump_sib2( SystemInformationBlockType2_t *sib2 )
   LOG_I( RRC, "radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.mac_ContentionResolutionTimer : raw:%ld decoded:%s\n",
          sib2->radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.mac_ContentionResolutionTimer,
          SIB2mac_ContentionResolutionTimer(sib2->radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.mac_ContentionResolutionTimer) );
-
   LOG_I( RRC, "radioResourceConfigCommon.rach_ConfigCommon.maxHARQ_Msg3Tx : %ld\n",
          sib2->radioResourceConfigCommon.rach_ConfigCommon.maxHARQ_Msg3Tx );
-
   // BCCH
   LOG_I( RRC, "radioResourceConfigCommon.bcch_Config.modificationPeriodCoeff : raw:%ld decoded:%s\n",
          sib2->radioResourceConfigCommon.bcch_Config.modificationPeriodCoeff,
          SIB2modificationPeriodCoeff(sib2->radioResourceConfigCommon.bcch_Config.modificationPeriodCoeff) );
-
   // PCCH
   LOG_I( RRC, "radioResourceConfigCommon.pcch_Config.defaultPagingCycle : raw:%ld decoded:%s\n",
          sib2->radioResourceConfigCommon.pcch_Config.defaultPagingCycle,
@@ -3146,7 +2962,6 @@ static void dump_sib2( SystemInformationBlockType2_t *sib2 )
   LOG_I( RRC, "radioResourceConfigCommon.pcch_Config.nB                 : raw:%ld decoded:%s\n",
          sib2->radioResourceConfigCommon.pcch_Config.nB,
          SIB2nB(sib2->radioResourceConfigCommon.pcch_Config.nB) );
-
   // PRACH
   LOG_I( RRC, "radioResourceConfigCommon.prach_Config.rootSequenceIndex                          : %ld\n",
          sib2->radioResourceConfigCommon.prach_Config.rootSequenceIndex );
@@ -3158,13 +2973,11 @@ static void dump_sib2( SystemInformationBlockType2_t *sib2 )
          sib2->radioResourceConfigCommon.prach_Config.prach_ConfigInfo.zeroCorrelationZoneConfig );
   LOG_I( RRC, "radioResourceConfigCommon.prach_Config.prach_ConfigInfo.prach_FreqOffset          : %ld\n",
          sib2->radioResourceConfigCommon.prach_Config.prach_ConfigInfo.prach_FreqOffset );
-
   // PDSCH-Config
   LOG_I( RRC, "radioResourceConfigCommon.pdsch_ConfigCommon.referenceSignalPower : %ld\n",
          sib2->radioResourceConfigCommon.pdsch_ConfigCommon.referenceSignalPower );
   LOG_I( RRC, "radioResourceConfigCommon.pdsch_ConfigCommon.p_b                  : %ld\n",
          sib2->radioResourceConfigCommon.pdsch_ConfigCommon.p_b );
-
   // PUSCH-Config
   LOG_I( RRC, "radioResourceConfigCommon.pusch_ConfigCommon.pusch_ConfigBasic.n_SB                : %ld\n",
          sib2->radioResourceConfigCommon.pusch_ConfigCommon.pusch_ConfigBasic.n_SB );
@@ -3182,7 +2995,6 @@ static void dump_sib2( SystemInformationBlockType2_t *sib2 )
          sib2->radioResourceConfigCommon.pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled );
   LOG_I( RRC, "radioResourceConfigCommon.pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.cyclicShift            : %ld\n",
          sib2->radioResourceConfigCommon.pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.cyclicShift );
-
   // PUCCH-Config
   LOG_I( RRC, "radioResourceConfigCommon.pucch_ConfigCommon.deltaPUCCH_Shift : %ld\n",
          sib2->radioResourceConfigCommon.pucch_ConfigCommon.deltaPUCCH_Shift );
@@ -3192,7 +3004,6 @@ static void dump_sib2( SystemInformationBlockType2_t *sib2 )
          sib2->radioResourceConfigCommon.pucch_ConfigCommon.nCS_AN );
   LOG_I( RRC, "radioResourceConfigCommon.pucch_ConfigCommon.n1PUCCH_AN       : %ld\n",
          sib2->radioResourceConfigCommon.pucch_ConfigCommon.n1PUCCH_AN );
-
   // SoundingRS_UL_Config
   LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.present : raw:%d decoded:%s\n",
          sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.present,
@@ -3208,9 +3019,9 @@ static void dump_sib2( SystemInformationBlockType2_t *sib2 )
 
     if(sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts)
     {
-    LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts                        : %ld\n",
-           /* TODO: check that it's okay to access [0] */
-           sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts[0] );
+      LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts                        : %ld\n",
+             /* TODO: check that it's okay to access [0] */
+             sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts[0] );
     }
   }
 
@@ -3233,15 +3044,12 @@ static void dump_sib2( SystemInformationBlockType2_t *sib2 )
          sib2->radioResourceConfigCommon.uplinkPowerControlCommon.deltaFList_PUCCH.deltaF_PUCCH_Format2b );
   LOG_I( RRC, "radioResourceConfigCommon.uplinkPowerControlCommon.deltaPreambleMsg3 : %ld\n",
          sib2->radioResourceConfigCommon.uplinkPowerControlCommon.deltaPreambleMsg3 );
-
   LOG_I( RRC, "radioResourceConfigCommon.ul_CyclicPrefixLength : %ld\n",
          sib2->radioResourceConfigCommon.ul_CyclicPrefixLength );
-
 #if defined(Rel10) || defined(Rel14)
   // UplinkPowerControlCommon_v1020
   // ...
 #endif
-
   LOG_I( RRC, "ue_TimersAndConstants.t300 : %ld\n", sib2->ue_TimersAndConstants.t300 );
   LOG_I( RRC, "ue_TimersAndConstants.t301 : %ld\n", sib2->ue_TimersAndConstants.t301 );
   LOG_I( RRC, "ue_TimersAndConstants.t310 : %ld\n", sib2->ue_TimersAndConstants.t310 );
@@ -3268,7 +3076,6 @@ static void dump_sib2( SystemInformationBlockType2_t *sib2 )
     LOG_I( RRC, "mbsfn_SubframeConfigList : not defined\n" );
 
   LOG_I( RRC, "timeAlignmentTimerCommon : %ld\n", sib2->timeAlignmentTimerCommon );
-
 #if defined(Rel10) || defined(Rel14)
 
   if (sib2->lateNonCriticalExtension) {
@@ -3313,7 +3120,6 @@ static void dump_sib2( SystemInformationBlockType2_t *sib2 )
 static void dump_sib3( SystemInformationBlockType3_t *sib3 )
 {
   LOG_I( RRC, "Dumping SIB3 (see TS36.331 V8.21.0)\n" );
-
   int q_Hyst_dB = sib3->cellReselectionInfoCommon.q_Hyst; // sib3->cellReselectionInfoCommon.q_Hyst is a enumerated value
 
   if (q_Hyst_dB > 6)
@@ -3348,7 +3154,6 @@ static void dump_sib3( SystemInformationBlockType3_t *sib3 )
 
   LOG_I( RRC, "cellReselectionServingFreqInfo.threshServingLow : %ld\n", sib3->cellReselectionServingFreqInfo.threshServingLow );
   LOG_I( RRC, "cellReselectionServingFreqInfo.cellReselectionPriority : %ld\n", sib3->cellReselectionServingFreqInfo.cellReselectionPriority );
-
   LOG_I( RRC, "intraFreqCellReselectionInfo.q_RxLevMin : %ld\n", sib3->intraFreqCellReselectionInfo.q_RxLevMin );
 
   if (sib3->intraFreqCellReselectionInfo.p_Max) {
@@ -3385,7 +3190,6 @@ int Qoffsettab[31] = {-24,-22,-20,-18,-16,-14,-12,-10,-8,-6,-5,-4,-3,-2,-1,0,1,2
 int PhysCellIdRange[16] = {4,8,12,16,24,32,48,64,84,96,128,168,252,504,0,0};
 
 uint64_t arfcn_to_freq(long arfcn) {
-  
   if (arfcn < 600)  // Band 1
     return((uint64_t)2110000000 + (arfcn*100000));
   else if (arfcn <1200) // Band 2
@@ -3464,93 +3268,110 @@ static void dump_sib5( SystemInformationBlockType5_t *sib5 )
   InterFreqCarrierFreqList_t interFreqCarrierFreqList = sib5->interFreqCarrierFreqList;
   int i,j;
   InterFreqCarrierFreqInfo_t *ifcfInfo;
-
   LOG_I( RRC, "Dumping SIB5 (see TS36.331 V8.21.0)\n" );
-  
-  for (i=0;i<interFreqCarrierFreqList.list.count;i++) {
+
+  for (i=0; i<interFreqCarrierFreqList.list.count; i++) {
     LOG_I(RRC, "SIB5 InterFreqCarrierFreq element %d/%d\n",i,interFreqCarrierFreqList.list.count);
     ifcfInfo = interFreqCarrierFreqList.list.array[i];
     LOG_I(RRC, "   DL Carrier Frequency/ARFCN : %ld/%ld\n",
-	  arfcn_to_freq(ifcfInfo->dl_CarrierFreq),
-	  ifcfInfo->dl_CarrierFreq);
+          arfcn_to_freq(ifcfInfo->dl_CarrierFreq),
+          ifcfInfo->dl_CarrierFreq);
     LOG_I(RRC,"   Q_RXLevMin : %ld\n", ifcfInfo->q_RxLevMin);
+
     if (ifcfInfo->p_Max != NULL)
       LOG_I(RRC,"   P_max : %ld\n", *ifcfInfo->p_Max);
+
     LOG_I(RRC,"   T_ReselectionEUTRA : %ld\n",ifcfInfo->t_ReselectionEUTRA);
+
     if (ifcfInfo->t_ReselectionEUTRA_SF) {
       LOG_I(RRC,"   t_ReselectionEUTRA_SF.sf_Medium %ld, t_ReselectionEUTRA_SF.sf_High %ld",
-	    ifcfInfo->t_ReselectionEUTRA_SF->sf_Medium,
-	    ifcfInfo->t_ReselectionEUTRA_SF->sf_High);
+            ifcfInfo->t_ReselectionEUTRA_SF->sf_Medium,
+            ifcfInfo->t_ReselectionEUTRA_SF->sf_High);
     }
+
     LOG_I(RRC,"   threshX_High : %ld\n",ifcfInfo->threshX_High);
     LOG_I(RRC,"   threshX_Low : %ld\n",ifcfInfo->threshX_Low);
+
     switch(ifcfInfo->allowedMeasBandwidth) {
-    case AllowedMeasBandwidth_mbw6:
-      LOG_I(RRC,"   AllowedMeasBandwidth : 6\n");
-      break;
-    case AllowedMeasBandwidth_mbw15:
-      LOG_I(RRC,"   AllowedMeasBandwidth : 15\n");
-      break;
-    case AllowedMeasBandwidth_mbw25:
-      LOG_I(RRC,"   AllowedMeasBandwidth : 25\n");
-      break;
-    case AllowedMeasBandwidth_mbw50:
-      LOG_I(RRC,"   AllowedMeasBandwidth : 50\n");
-      break;
-    case AllowedMeasBandwidth_mbw75:
-      LOG_I(RRC,"   AllowedMeasBandwidth : 75\n");
-      break;
-    case AllowedMeasBandwidth_mbw100:
-      LOG_I(RRC,"   AllowedMeasBandwidth : 100\n");
-      break;
+      case AllowedMeasBandwidth_mbw6:
+        LOG_I(RRC,"   AllowedMeasBandwidth : 6\n");
+        break;
+
+      case AllowedMeasBandwidth_mbw15:
+        LOG_I(RRC,"   AllowedMeasBandwidth : 15\n");
+        break;
+
+      case AllowedMeasBandwidth_mbw25:
+        LOG_I(RRC,"   AllowedMeasBandwidth : 25\n");
+        break;
+
+      case AllowedMeasBandwidth_mbw50:
+        LOG_I(RRC,"   AllowedMeasBandwidth : 50\n");
+        break;
+
+      case AllowedMeasBandwidth_mbw75:
+        LOG_I(RRC,"   AllowedMeasBandwidth : 75\n");
+        break;
+
+      case AllowedMeasBandwidth_mbw100:
+        LOG_I(RRC,"   AllowedMeasBandwidth : 100\n");
+        break;
     }
+
     if (ifcfInfo->presenceAntennaPort1)
       LOG_I(RRC,"   PresenceAntennaPort1 : True\n");
     else
       LOG_I(RRC,"   PresenceAntennaPort1 : False\n");
+
     if (ifcfInfo->cellReselectionPriority) {
       LOG_I(RRC,"   CellReselectionPriority : %ld\n",
-	    *ifcfInfo->cellReselectionPriority);
+            *ifcfInfo->cellReselectionPriority);
     }
+
     LOG_I(RRC,"   NeighCellConfig  : ");
-    for (j=0;j<ifcfInfo->neighCellConfig.size;j++) {
+
+    for (j=0; j<ifcfInfo->neighCellConfig.size; j++) {
       printf("%2x ",ifcfInfo->neighCellConfig.buf[j]);
     }
+
     printf("\n");
+
     if (ifcfInfo->q_OffsetFreq)
       LOG_I(RRC,"   Q_OffsetFreq : %d\n",Qoffsettab[*ifcfInfo->q_OffsetFreq]);
+
     if (ifcfInfo->interFreqNeighCellList) {
-      
-      for (j=0;j<ifcfInfo->interFreqNeighCellList->list.count;j++) {
-	LOG_I(RRC,"   Cell %d\n", j);
-	LOG_I(RRC,"      PhysCellId : %ld\n",ifcfInfo->interFreqNeighCellList->list.array[j]->physCellId);
-	LOG_I(RRC,"      Q_OffsetRange : %ld\n",ifcfInfo->interFreqNeighCellList->list.array[j]->q_OffsetCell);
-	
+      for (j=0; j<ifcfInfo->interFreqNeighCellList->list.count; j++) {
+        LOG_I(RRC,"   Cell %d\n", j);
+        LOG_I(RRC,"      PhysCellId : %ld\n",ifcfInfo->interFreqNeighCellList->list.array[j]->physCellId);
+        LOG_I(RRC,"      Q_OffsetRange : %ld\n",ifcfInfo->interFreqNeighCellList->list.array[j]->q_OffsetCell);
       }
     }
+
     if (ifcfInfo->interFreqBlackCellList) {
-      
-      for (j=0;j<ifcfInfo->interFreqBlackCellList->list.count;j++) {
-	LOG_I(RRC,"   Cell %d\n", j);
-	LOG_I(RRC,"      PhysCellId start: %ld\n",ifcfInfo->interFreqBlackCellList->list.array[j]->start);
-	if (ifcfInfo->interFreqBlackCellList->list.array[i]->range) {
-	  LOG_I(RRC,"      PhysCellId Range : %ld\n",*ifcfInfo->interFreqBlackCellList->list.array[j]->range);
-	}
+      for (j=0; j<ifcfInfo->interFreqBlackCellList->list.count; j++) {
+        LOG_I(RRC,"   Cell %d\n", j);
+        LOG_I(RRC,"      PhysCellId start: %ld\n",ifcfInfo->interFreqBlackCellList->list.array[j]->start);
+
+        if (ifcfInfo->interFreqBlackCellList->list.array[i]->range) {
+          LOG_I(RRC,"      PhysCellId Range : %ld\n",*ifcfInfo->interFreqBlackCellList->list.array[j]->range);
+        }
       }
     }
+
 #if defined(Rel10) || defined(Rel14)
+
     if (ifcfInfo->ext1 && ifcfInfo->ext1->q_QualMin_r9)
       LOG_I(RRC,"   Q_QualMin_r9 : %ld\n",*ifcfInfo->ext1->q_QualMin_r9);
-    
+
     if (ifcfInfo->ext1 && ifcfInfo->ext1->threshX_Q_r9) {
       LOG_I(RRC,"   threshX_HighQ_r9 : %ld\n",ifcfInfo->ext1->threshX_Q_r9->threshX_HighQ_r9);
       LOG_I(RRC,"   threshX_LowQ_r9: %ld\n",ifcfInfo->ext1->threshX_Q_r9->threshX_LowQ_r9);
     }
+
 #endif
   }
-  
 }
-  
+
 #if defined(Rel10) || defined(Rel14)
 static void dump_sib13( SystemInformationBlockType13_r9_t *sib13 )
 {
@@ -3563,13 +3384,11 @@ static void dump_sib13( SystemInformationBlockType13_r9_t *sib13 )
 #endif
 
 //-----------------------------------------------------------------------------
-static int decode_SI( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index )
+static int decode_SI( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index )
 {
-
-  SystemInformation_t** si = &UE_rrc_inst[ctxt_pP->module_id].si[eNB_index];
+  SystemInformation_t **si = &UE_rrc_inst[ctxt_pP->module_id].si[eNB_index];
   int new_sib = 0;
-  SystemInformationBlockType1_t* sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
-
+  SystemInformationBlockType1_t *sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_UE_DECODE_SI, VCD_FUNCTION_IN );
 
   // Dump contents
@@ -3587,252 +3406,254 @@ static int decode_SI( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_in
     typeandinfo = (*si)->criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list.array[i];
 
     switch(typeandinfo->present) {
-    case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&2) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=2;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index], &typeandinfo->choice.sib2, sizeof(SystemInformationBlockType2_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB2 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-	dump_sib2( UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index] );
-	LOG_I( RRC, "[FRAME %05"PRIu32"][RRC_UE][MOD %02"PRIu8"][][--- MAC_CONFIG_REQ (SIB2 params  eNB %"PRIu8") --->][MAC_UE][MOD %02"PRIu8"][]\n",
-	       ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id );
-
-	rrc_mac_config_req_ue(ctxt_pP->module_id, 0, eNB_index,
-			      &UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->radioResourceConfigCommon,
-			      (struct PhysicalConfigDedicated *)NULL,
+      case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&2) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=2;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index], &typeandinfo->choice.sib2, sizeof(SystemInformationBlockType2_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB2 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+          dump_sib2( UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index] );
+          LOG_I( RRC, "[FRAME %05"PRIu32"][RRC_UE][MOD %02"PRIu8"][][--- MAC_CONFIG_REQ (SIB2 params  eNB %"PRIu8") --->][MAC_UE][MOD %02"PRIu8"][]\n",
+                 ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id );
+          rrc_mac_config_req_ue(ctxt_pP->module_id, 0, eNB_index,
+                                &UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->radioResourceConfigCommon,
+                                (struct PhysicalConfigDedicated *)NULL,
 #if defined(Rel10) || defined(Rel14)
-			      (SCellToAddMod_r10_t *)NULL,
+                                (SCellToAddMod_r10_t *)NULL,
 #endif
-			      (MeasObjectToAddMod_t **)NULL,
-			      (MAC_MainConfig_t *)NULL,
-			      0,
-			      (struct LogicalChannelConfig *)NULL,
-			      (MeasGapConfig_t *)NULL,
-			      (TDD_Config_t *)NULL,
-			      (MobilityControlInfo_t *)NULL,
-			      NULL,
-			      NULL,
-			      UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->freqInfo.ul_CarrierFreq,
-			      UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->freqInfo.ul_Bandwidth,
-			      &UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->freqInfo.additionalSpectrumEmission,
-			      UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->mbsfn_SubframeConfigList
+                                (MeasObjectToAddMod_t **)NULL,
+                                (MAC_MainConfig_t *)NULL,
+                                0,
+                                (struct LogicalChannelConfig *)NULL,
+                                (MeasGapConfig_t *)NULL,
+                                (TDD_Config_t *)NULL,
+                                (MobilityControlInfo_t *)NULL,
+                                NULL,
+                                NULL,
+                                UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->freqInfo.ul_CarrierFreq,
+                                UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->freqInfo.ul_Bandwidth,
+                                &UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->freqInfo.additionalSpectrumEmission,
+                                UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->mbsfn_SubframeConfigList
 #if defined(Rel10) || defined(Rel14)
-			      ,0,
-			      (MBSFN_AreaInfoList_r9_t *)NULL,
-			      (PMCH_InfoList_r9_t *)NULL
-
+                                ,0,
+                                (MBSFN_AreaInfoList_r9_t *)NULL,
+                                (PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-			      ,0,
-			      0
+                                ,0,
+                                0
 #endif
-			      );
-	// After SI is received, prepare RRCConnectionRequest
+                               );
+          // After SI is received, prepare RRCConnectionRequest
 #if defined(Rel10) || defined(Rel14)
 
-	if (UE_rrc_inst[ctxt_pP->module_id].MBMS_flag < 3) // see -Q option
+          if (UE_rrc_inst[ctxt_pP->module_id].MBMS_flag < 3) // see -Q option
 #endif
 #if !(defined(ENABLE_ITTI) && defined(ENABLE_USE_MME))
-	  rrc_ue_generate_RRCConnectionRequest( ctxt_pP, eNB_index );
-	
+            rrc_ue_generate_RRCConnectionRequest( ctxt_pP, eNB_index );
+
 #endif
-	
-	if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State == RRC_IDLE) {
-	  LOG_I( RRC, "[UE %d] Received SIB1/SIB2/SIB3 Switching to RRC_SI_RECEIVED\n", ctxt_pP->module_id );
-	  UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State = RRC_SI_RECEIVED;
+
+          if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State == RRC_IDLE) {
+            LOG_I( RRC, "[UE %d] Received SIB1/SIB2/SIB3 Switching to RRC_SI_RECEIVED\n", ctxt_pP->module_id );
+            UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State = RRC_SI_RECEIVED;
 #if ENABLE_RAL
-	  {
-	    MessageDef                            *message_ral_p = NULL;
-	    rrc_ral_system_information_ind_t       ral_si_ind;
-	    
-	    message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_SYSTEM_INFORMATION_IND);
-	    memset(&ral_si_ind, 0, sizeof(rrc_ral_system_information_ind_t));
-	    ral_si_ind.plmn_id.MCCdigit2 = '0';
-	    ral_si_ind.plmn_id.MCCdigit1 = '2';
-	    ral_si_ind.plmn_id.MNCdigit3 = '0';
-	    ral_si_ind.plmn_id.MCCdigit3 = '8';
-	    ral_si_ind.plmn_id.MNCdigit2 = '9';
-	    ral_si_ind.plmn_id.MNCdigit1 = '9';
-	    ral_si_ind.cell_id        = 1;
-	    ral_si_ind.dbm            = 0;
-	    //ral_si_ind.dbm            = fifo_dump_emos_UE.PHY_measurements->rx_rssi_dBm[eNB_index];
-	    // TO DO
-	    ral_si_ind.sinr           = 0;
-	    //ral_si_ind.sinr           = fifo_dump_emos_UE.PHY_measurements->subband_cqi_dB[eNB_index][phy_vars_ue->lte_frame_parms.nb_antennas_rx][0];
-	    // TO DO
-	    ral_si_ind.link_data_rate = 0;
-	    memcpy (&message_ral_p->ittiMsg, (void *) &ral_si_ind, sizeof(rrc_ral_system_information_ind_t));
+            {
+              MessageDef                            *message_ral_p = NULL;
+              rrc_ral_system_information_ind_t       ral_si_ind;
+              message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_SYSTEM_INFORMATION_IND);
+              memset(&ral_si_ind, 0, sizeof(rrc_ral_system_information_ind_t));
+              ral_si_ind.plmn_id.MCCdigit2 = '0';
+              ral_si_ind.plmn_id.MCCdigit1 = '2';
+              ral_si_ind.plmn_id.MNCdigit3 = '0';
+              ral_si_ind.plmn_id.MCCdigit3 = '8';
+              ral_si_ind.plmn_id.MNCdigit2 = '9';
+              ral_si_ind.plmn_id.MNCdigit1 = '9';
+              ral_si_ind.cell_id        = 1;
+              ral_si_ind.dbm            = 0;
+              //ral_si_ind.dbm            = fifo_dump_emos_UE.PHY_measurements->rx_rssi_dBm[eNB_index];
+              // TO DO
+              ral_si_ind.sinr           = 0;
+              //ral_si_ind.sinr           = fifo_dump_emos_UE.PHY_measurements->subband_cqi_dB[eNB_index][phy_vars_ue->lte_frame_parms.nb_antennas_rx][0];
+              // TO DO
+              ral_si_ind.link_data_rate = 0;
+              memcpy (&message_ral_p->ittiMsg, (void *) &ral_si_ind, sizeof(rrc_ral_system_information_ind_t));
 #warning "ue_mod_idP ? for instance ?"
-	    itti_send_msg_to_task (TASK_RAL_UE, UE_MODULE_ID_TO_INSTANCE(ctxt_pP->module_id), message_ral_p);
-	  }
+              itti_send_msg_to_task (TASK_RAL_UE, UE_MODULE_ID_TO_INSTANCE(ctxt_pP->module_id), message_ral_p);
+            }
 #endif
-	}
-      }
-      break; // case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2
+          }
+        }
 
-    case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib3:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&4) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=4;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib3[eNB_index], &typeandinfo->choice.sib3, sizeof(SystemInformationBlockType3_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB3 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-	dump_sib3( UE_rrc_inst[ctxt_pP->module_id].sib3[eNB_index] );
+        break; // case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2
 
-      }
-      break;
+      case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib3:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&4) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=4;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib3[eNB_index], &typeandinfo->choice.sib3, sizeof(SystemInformationBlockType3_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB3 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+          dump_sib3( UE_rrc_inst[ctxt_pP->module_id].sib3[eNB_index] );
+        }
 
-    case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib4:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&8) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=8;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib4[eNB_index], &typeandinfo->choice.sib4, sizeof(SystemInformationBlockType4_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB4 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
+        break;
 
-      break;
+      case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib4:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&8) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=8;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib4[eNB_index], &typeandinfo->choice.sib4, sizeof(SystemInformationBlockType4_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB4 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
 
-    case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib5:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&16) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=16;
-	new_sib=1;
-     
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib5[eNB_index], &typeandinfo->choice.sib5, sizeof(SystemInformationBlockType5_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB5 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-	dump_sib5(UE_rrc_inst[ctxt_pP->module_id].sib5[eNB_index]);
-      }
-      break;
+        break;
 
-    case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib6:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&32) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=32;
-	new_sib=1;
-     
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib6[eNB_index], &typeandinfo->choice.sib6, sizeof(SystemInformationBlockType6_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB6 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
+      case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib5:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&16) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=16;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib5[eNB_index], &typeandinfo->choice.sib5, sizeof(SystemInformationBlockType5_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB5 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+          dump_sib5(UE_rrc_inst[ctxt_pP->module_id].sib5[eNB_index]);
+        }
 
-    case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib7:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&64) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=64;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib7[eNB_index], &typeandinfo->choice.sib7, sizeof(SystemInformationBlockType7_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB7 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
+        break;
 
-    case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib8:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&128) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=128;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib8[eNB_index], &typeandinfo->choice.sib8, sizeof(SystemInformationBlockType8_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB8 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
+      case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib6:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&32) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=32;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib6[eNB_index], &typeandinfo->choice.sib6, sizeof(SystemInformationBlockType6_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB6 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
 
-    case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib9:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&256) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=256;
-	new_sib=1;
-      
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib9[eNB_index], &typeandinfo->choice.sib9, sizeof(SystemInformationBlockType9_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB9 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
+        break;
 
-    case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib10:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&512) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=512;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib10[eNB_index], &typeandinfo->choice.sib10, sizeof(SystemInformationBlockType10_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB10 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
+      case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib7:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&64) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=64;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib7[eNB_index], &typeandinfo->choice.sib7, sizeof(SystemInformationBlockType7_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB7 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
 
-    case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib11:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1024) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=1024;
-	new_sib=1;
+        break;
 
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib11[eNB_index], &typeandinfo->choice.sib11, sizeof(SystemInformationBlockType11_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB11 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
+      case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib8:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&128) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=128;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib8[eNB_index], &typeandinfo->choice.sib8, sizeof(SystemInformationBlockType8_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB8 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
 
+        break;
+
+      case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib9:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&256) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=256;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib9[eNB_index], &typeandinfo->choice.sib9, sizeof(SystemInformationBlockType9_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB9 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
+
+        break;
+
+      case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib10:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&512) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=512;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib10[eNB_index], &typeandinfo->choice.sib10, sizeof(SystemInformationBlockType10_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB10 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
+
+        break;
+
+      case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib11:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1024) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=1024;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib11[eNB_index], &typeandinfo->choice.sib11, sizeof(SystemInformationBlockType11_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB11 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
+
+        break;
 #if defined(Rel10) || defined(Rel14)
 
-    case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib12_v920:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&2048) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=2048;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib12[eNB_index], &typeandinfo->choice.sib12_v920, sizeof(SystemInformationBlockType12_r9_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB12 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
-	
-    case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&4096) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=4096;
-	new_sib=1;
-	
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib13[eNB_index], &typeandinfo->choice.sib13_v920, sizeof(SystemInformationBlockType13_r9_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB13 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-	dump_sib13( UE_rrc_inst[ctxt_pP->module_id].sib13[eNB_index] );
-	// adding here function to store necessary parameters for using in decode_MCCH_Message + maybe transfer to PHY layer
-	LOG_I( RRC, "[FRAME %05"PRIu32"][RRC_UE][MOD %02"PRIu8"][][--- MAC_CONFIG_REQ (SIB13 params eNB %"PRIu8") --->][MAC_UE][MOD %02"PRIu8"][]\n",
-	       ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
-	rrc_mac_config_req_ue(ctxt_pP->module_id,0,eNB_index,
-			      (RadioResourceConfigCommonSIB_t *)NULL,
-			      (struct PhysicalConfigDedicated *)NULL,
-			      (SCellToAddMod_r10_t *)NULL,
-			      (MeasObjectToAddMod_t **)NULL,
-			      (MAC_MainConfig_t *)NULL,
-			      0,
-			      (struct LogicalChannelConfig *)NULL,
-			      (MeasGapConfig_t *)NULL,
-			      (TDD_Config_t *)NULL,
-			      (MobilityControlInfo_t *)NULL,
-			      NULL,
-			      NULL,
-			      NULL,
-			      NULL,
-			      NULL,
-			      (MBSFN_SubframeConfigList_t *)NULL,
-			      0,
-			      &UE_rrc_inst[ctxt_pP->module_id].sib13[eNB_index]->mbsfn_AreaInfoList_r9,
-			      (PMCH_InfoList_r9_t *)NULL
+      case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib12_v920:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&2048) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=2048;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib12[eNB_index], &typeandinfo->choice.sib12_v920, sizeof(SystemInformationBlockType12_r9_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB12 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
+
+        break;
+
+      case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&4096) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=4096;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib13[eNB_index], &typeandinfo->choice.sib13_v920, sizeof(SystemInformationBlockType13_r9_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB13 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+          dump_sib13( UE_rrc_inst[ctxt_pP->module_id].sib13[eNB_index] );
+          // adding here function to store necessary parameters for using in decode_MCCH_Message + maybe transfer to PHY layer
+          LOG_I( RRC, "[FRAME %05"PRIu32"][RRC_UE][MOD %02"PRIu8"][][--- MAC_CONFIG_REQ (SIB13 params eNB %"PRIu8") --->][MAC_UE][MOD %02"PRIu8"][]\n",
+                 ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
+          rrc_mac_config_req_ue(ctxt_pP->module_id,0,eNB_index,
+                                (RadioResourceConfigCommonSIB_t *)NULL,
+                                (struct PhysicalConfigDedicated *)NULL,
+                                (SCellToAddMod_r10_t *)NULL,
+                                (MeasObjectToAddMod_t **)NULL,
+                                (MAC_MainConfig_t *)NULL,
+                                0,
+                                (struct LogicalChannelConfig *)NULL,
+                                (MeasGapConfig_t *)NULL,
+                                (TDD_Config_t *)NULL,
+                                (MobilityControlInfo_t *)NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                (MBSFN_SubframeConfigList_t *)NULL,
+                                0,
+                                &UE_rrc_inst[ctxt_pP->module_id].sib13[eNB_index]->mbsfn_AreaInfoList_r9,
+                                (PMCH_InfoList_r9_t *)NULL
 #ifdef CBA
-			      ,0,
-			      0
+                                ,0,
+                                0
 #endif
-			      );
-	break;
-      }
+                               );
+          break;
+        }
+
 #endif
-    default:
-      break;
-    }
 
+      default:
+        break;
+    }
   }
+
   if (new_sib == 1) {
     UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIcnt++;
 
     if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIcnt == sib1->schedulingInfoList.list.count)
       rrc_set_sub_state( ctxt_pP->module_id, RRC_SUB_STATE_IDLE_SIB_COMPLETE );
 
-    LOG_I(RRC,"SIStatus %x, SIcnt %d/%d\n", 
-	  UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus,
-	  UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIcnt,
-	  sib1->schedulingInfoList.list.count);
+    LOG_I(RRC,"SIStatus %x, SIcnt %d/%d\n",
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus,
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIcnt,
+          sib1->schedulingInfoList.list.count);
   }
 
-  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_UE_DECODE_SI  , VCD_FUNCTION_OUT);
+  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_UE_DECODE_SI, VCD_FUNCTION_OUT);
   return 0;
 }
 
 // layer 3 filtering of RSRP (EUTRA) measurements: 36.331, Sec. 5.5.3.2
 //-----------------------------------------------------------------------------
-void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index )
+void ue_meas_filtering( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index )
 {
   float a  = UE_rrc_inst[ctxt_pP->module_id].filter_coeff_rsrp; // 'a' in 36.331 Sec. 5.5.3.2
   float a1 = UE_rrc_inst[ctxt_pP->module_id].filter_coeff_rsrq;
@@ -3844,18 +3665,17 @@ void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
       if(UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[0]->quantityConfigEUTRA->filterCoefficientRSRP != NULL) {
         for (eNB_offset = 0; eNB_offset<1+get_n_adj_cells(ctxt_pP->module_id,0); eNB_offset++) {
           UE_rrc_inst[ctxt_pP->module_id].rsrp_db[eNB_offset] = get_RSRP(ctxt_pP->module_id,0,eNB_offset);
-	  /*
-	  (dB_fixed_times10(get_RSRP(ctxt_pP->module_id,0,eNB_offset))/10.0) -
-	  get_rx_total_gain_dB(ctxt_pP->module_id,0) -
-	  get_bw_gain_dB(ctxt_pP->module_id);
-	  */
+          /*
+          (dB_fixed_times10(get_RSRP(ctxt_pP->module_id,0,eNB_offset))/10.0) -
+          get_rx_total_gain_dB(ctxt_pP->module_id,0) -
+          get_bw_gain_dB(ctxt_pP->module_id);
+          */
           UE_rrc_inst[ctxt_pP->module_id].rsrp_db_filtered[eNB_offset] =
             (1.0-a)*UE_rrc_inst[ctxt_pP->module_id].rsrp_db_filtered[eNB_offset] +
             a*UE_rrc_inst[ctxt_pP->module_id].rsrp_db[eNB_offset];
-
           LOG_D(RRC,"RSRP_dBm: %3.2f \n",get_RSRP(ctxt_pP->module_id,0,eNB_offset));;
-	  /*          LOG_D(RRC,"gain_loss_dB: %d \n",get_rx_total_gain_dB(ctxt_pP->module_id,0));
-		      LOG_D(RRC,"gain_fixed_dB: %d \n",dB_fixed(frame_parms->N_RB_DL*12));*/
+          /*          LOG_D(RRC,"gain_loss_dB: %d \n",get_rx_total_gain_dB(ctxt_pP->module_id,0));
+                LOG_D(RRC,"gain_fixed_dB: %d \n",dB_fixed(frame_parms->N_RB_DL*12));*/
           LOG_D(PHY,"[UE %d] Frame %d, RRC Measurements => rssi %3.1f dBm (digital: %3.1f dB)\n",
                 ctxt_pP->module_id,
                 ctxt_pP->frame,
@@ -3893,9 +3713,8 @@ void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
 
 //Below routine implements Measurement Reporting procedure from 36.331 Section 5.5.5
 //-----------------------------------------------------------------------------
-static void rrc_ue_generate_MeasurementReport(protocol_ctxt_t* const ctxt_pP, uint8_t eNB_index )
+static void rrc_ue_generate_MeasurementReport(protocol_ctxt_t *const ctxt_pP, uint8_t eNB_index )
 {
-
   uint8_t             buffer[32], size;
   uint8_t             i;
   uint8_t             target_eNB_offset;
@@ -3907,7 +3726,6 @@ static void rrc_ue_generate_MeasurementReport(protocol_ctxt_t* const ctxt_pP, ui
   float            rsrp_filtered, rsrq_filtered;
   static frame_t   pframe=0;
   int              result;
-
   nElem = 98;
   nElem1 = 35;
   target_eNB_offset = UE_rrc_inst[ctxt_pP->module_id].Info[0].handoverTarget; // eNB_offset of target eNB: used to obtain the mod_id of target eNB
@@ -3915,14 +3733,11 @@ static void rrc_ue_generate_MeasurementReport(protocol_ctxt_t* const ctxt_pP, ui
   for (i=0; i<MAX_MEAS_ID; i++) {
     if (UE_rrc_inst[ctxt_pP->module_id].measReportList[0][i] != NULL) {
       measId = UE_rrc_inst[ctxt_pP->module_id].measReportList[0][i]->measId;
-
       // Note: Values in the meas report have to be the mapped values...to implement binary search for LUT
       rsrp_filtered = UE_rrc_inst[ctxt_pP->module_id].rsrp_db_filtered[eNB_index];//nid_cell];
       rsrp_s = binary_search_float(RSRP_meas_mapping,nElem, rsrp_filtered);
-
       rsrq_filtered = UE_rrc_inst[ctxt_pP->module_id].rsrq_db_filtered[eNB_index];//nid_cell]; //RSRQ of serving cell
       rsrq_s = binary_search_float(RSRQ_meas_mapping,nElem1,rsrq_filtered);//mapped RSRQ of serving cell
-
       LOG_D(RRC,"[UE %d] Frame %d: source eNB %d :rsrp_s: %ld rsrq_s: %ld rsrp_filtered: %f rsrq_filtered: %f \n",
             ctxt_pP->module_id,
             ctxt_pP->frame,
@@ -3933,7 +3748,6 @@ static void rrc_ue_generate_MeasurementReport(protocol_ctxt_t* const ctxt_pP, ui
             rsrq_filtered);
       rsrp_t = binary_search_float(RSRP_meas_mapping,nElem,UE_rrc_inst[ctxt_pP->module_id].rsrp_db_filtered[target_eNB_offset]); //RSRP of target cell
       rsrq_t = binary_search_float(RSRQ_meas_mapping,nElem1,UE_rrc_inst[ctxt_pP->module_id].rsrq_db_filtered[target_eNB_offset]); //RSRQ of target cell
-
       LOG_D(RRC,"[UE %d] Frame %d: target eNB %d :rsrp_t: %ld rsrq_t: %ld rsrp_filtered: %f rsrq_filtered: %f \n",
             ctxt_pP->module_id,
             ctxt_pP->frame,
@@ -3942,7 +3756,6 @@ static void rrc_ue_generate_MeasurementReport(protocol_ctxt_t* const ctxt_pP, ui
             rsrq_t,
             UE_rrc_inst[ctxt_pP->module_id].rsrp_db_filtered[target_eNB_offset],
             UE_rrc_inst[ctxt_pP->module_id].rsrq_db_filtered[target_eNB_offset]);
-
       //  if (measFlag == 1) {
       cellId = get_adjacent_cell_id(ctxt_pP->module_id, eNB_index); //PhycellId of serving cell
       targetCellId = UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId ;//get_adjacent_cell_id(ue_mod_idP,target_eNB_offset); //PhycellId of target cell
@@ -3974,7 +3787,7 @@ static void rrc_ue_generate_MeasurementReport(protocol_ctxt_t* const ctxt_pP, ui
 
 // Measurement report triggering, described in 36.331 Section 5.5.4.1: called periodically
 //-----------------------------------------------------------------------------
-void ue_measurement_report_triggering(protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index )
+void ue_measurement_report_triggering(protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index )
 {
   uint8_t               i,j;
   Hysteresis_t     hys;
@@ -4016,65 +3829,65 @@ void ue_measurement_report_triggering(protocol_ctxt_t* const ctxt_pP, const uint
                           -1]->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA3.a3_Offset;
 
               switch (UE_rrc_inst[ctxt_pP->module_id].ReportConfig[i][reportConfigId-1]->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.present) {
-              case ReportConfigEUTRA__triggerType__event__eventId_PR_eventA1:
-                LOG_D(RRC,"[UE %d] Frame %d : A1 event: check if serving becomes better than threshold\n",
-                      ctxt_pP->module_id, ctxt_pP->frame);
-                break;
-
-              case ReportConfigEUTRA__triggerType__event__eventId_PR_eventA2:
-                LOG_D(RRC,"[UE %d] Frame %d : A2 event, check if serving becomes worse than a threshold\n",
-                      ctxt_pP->module_id, ctxt_pP->frame);
-                break;
-
-              case ReportConfigEUTRA__triggerType__event__eventId_PR_eventA3:
-                LOG_D(RRC,"[UE %d] Frame %d : A3 event: check if a neighboring cell becomes offset better than serving to trigger a measurement event \n",
-                      ctxt_pP->module_id, ctxt_pP->frame);
-
-                if ((check_trigger_meas_event(
-                       ctxt_pP->module_id,
-                       ctxt_pP->frame,
-                       eNB_index,
-                       i,j,ofn,ocn,hys,ofs,ocs,a3_offset,ttt_ms)) &&
-                    (UE_rrc_inst[ctxt_pP->module_id].Info[0].State >= RRC_CONNECTED) &&
-                    (UE_rrc_inst[ctxt_pP->module_id].Info[0].T304_active == 0 )      &&
-                    (UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag == 1)) {
-                  //trigger measurement reporting procedure (36.331, section 5.5.5)
-                  if (UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] == NULL) {
-                    UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] = malloc(sizeof(MEAS_REPORT_LIST));
-                  }
-
-                  UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j]->measId = UE_rrc_inst[ctxt_pP->module_id].MeasId[i][j]->measId;
-                  UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j]->numberOfReportsSent = 0;
-                  rrc_ue_generate_MeasurementReport(
-                    ctxt_pP,
-                    eNB_index);
-                  UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag = 1;
-                  LOG_I(RRC,"[UE %d] Frame %d: A3 event detected, state: %d \n",
-                        ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Info[0].State);
-                } else {
-                  if(UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] != NULL) {
-                    free(UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j]);
+                case ReportConfigEUTRA__triggerType__event__eventId_PR_eventA1:
+                  LOG_D(RRC,"[UE %d] Frame %d : A1 event: check if serving becomes better than threshold\n",
+                        ctxt_pP->module_id, ctxt_pP->frame);
+                  break;
+
+                case ReportConfigEUTRA__triggerType__event__eventId_PR_eventA2:
+                  LOG_D(RRC,"[UE %d] Frame %d : A2 event, check if serving becomes worse than a threshold\n",
+                        ctxt_pP->module_id, ctxt_pP->frame);
+                  break;
+
+                case ReportConfigEUTRA__triggerType__event__eventId_PR_eventA3:
+                  LOG_D(RRC,"[UE %d] Frame %d : A3 event: check if a neighboring cell becomes offset better than serving to trigger a measurement event \n",
+                        ctxt_pP->module_id, ctxt_pP->frame);
+
+                  if ((check_trigger_meas_event(
+                         ctxt_pP->module_id,
+                         ctxt_pP->frame,
+                         eNB_index,
+                         i,j,ofn,ocn,hys,ofs,ocs,a3_offset,ttt_ms)) &&
+                      (UE_rrc_inst[ctxt_pP->module_id].Info[0].State >= RRC_CONNECTED) &&
+                      (UE_rrc_inst[ctxt_pP->module_id].Info[0].T304_active == 0 )      &&
+                      (UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag == 1)) {
+                    //trigger measurement reporting procedure (36.331, section 5.5.5)
+                    if (UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] == NULL) {
+                      UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] = malloc(sizeof(MEAS_REPORT_LIST));
+                    }
+
+                    UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j]->measId = UE_rrc_inst[ctxt_pP->module_id].MeasId[i][j]->measId;
+                    UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j]->numberOfReportsSent = 0;
+                    rrc_ue_generate_MeasurementReport(
+                      ctxt_pP,
+                      eNB_index);
+                    UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag = 1;
+                    LOG_I(RRC,"[UE %d] Frame %d: A3 event detected, state: %d \n",
+                          ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Info[0].State);
+                  } else {
+                    if(UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] != NULL) {
+                      free(UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j]);
+                    }
+
+                    UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] = NULL;
                   }
 
-                  UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] = NULL;
-                }
-
-                break;
+                  break;
 
-              case ReportConfigEUTRA__triggerType__event__eventId_PR_eventA4:
-                LOG_D(RRC,"[UE %d] Frame %d : received an A4 event, neighbor becomes offset better than a threshold\n",
-                      ctxt_pP->module_id, ctxt_pP->frame);
-                break;
+                case ReportConfigEUTRA__triggerType__event__eventId_PR_eventA4:
+                  LOG_D(RRC,"[UE %d] Frame %d : received an A4 event, neighbor becomes offset better than a threshold\n",
+                        ctxt_pP->module_id, ctxt_pP->frame);
+                  break;
 
-              case ReportConfigEUTRA__triggerType__event__eventId_PR_eventA5:
-                LOG_D(RRC,"[UE %d] Frame %d: received an A5 event, serving becomes worse than threshold 1 and neighbor becomes better than threshold 2\n",
-                      ctxt_pP->module_id, ctxt_pP->frame);
-                break;
+                case ReportConfigEUTRA__triggerType__event__eventId_PR_eventA5:
+                  LOG_D(RRC,"[UE %d] Frame %d: received an A5 event, serving becomes worse than threshold 1 and neighbor becomes better than threshold 2\n",
+                        ctxt_pP->module_id, ctxt_pP->frame);
+                  break;
 
-              default:
-                LOG_D(RRC,"Invalid ReportConfigEUTRA__triggerType__event__eventId: %d",
-                      UE_rrc_inst[ctxt_pP->module_id].ReportConfig[i][j]->reportConfig.choice.reportConfigEUTRA.triggerType.present);
-                break;
+                default:
+                  LOG_D(RRC,"Invalid ReportConfigEUTRA__triggerType__event__eventId: %d",
+                        UE_rrc_inst[ctxt_pP->module_id].ReportConfig[i][j]->reportConfig.choice.reportConfigEUTRA.triggerType.present);
+                  break;
               }
             }
           }
@@ -4104,7 +3917,6 @@ static uint8_t check_trigger_meas_event(
   uint8_t eNB_offset;
   //  uint8_t currentCellIndex = frame_parms->Nid_cell;
   uint8_t tmp_offset;
-
   LOG_I(RRC,"[UE %d] ofn(%ld) ocn(%ld) hys(%ld) ofs(%ld) ocs(%ld) a3_offset(%ld) ttt(%ld) rssi %3.1f\n",
         ue_mod_idP,
         ofn,ocn,hys,ofs,ocs,a3_offset,ttt,
@@ -4134,8 +3946,8 @@ static uint8_t check_trigger_meas_event(
         LOG_D(RRC,"[UE %d] Frame %d eNB %d: Handover triggered: targetCellId: %ld currentCellId: %d eNB_offset: %d rsrp source: %3.1f rsrp target: %3.1f\n",
               ue_mod_idP, frameP, eNB_index,
               UE_rrc_inst->HandoverInfoUe.targetCellId,ue_cnx_index,eNB_offset,
-	      get_RSRP(ue_mod_idP,0,0),
-	      get_RSRP(ue_mod_idP,0,1));
+              get_RSRP(ue_mod_idP,0,0),
+              get_RSRP(ue_mod_idP,0,1));
         UE_rrc_inst->Info[0].handoverTarget = eNB_offset;
         //LOG_D(RRC,"PHY_ID: %d \n",UE_rrc_inst->HandoverInfoUe.targetCellId);
         return 1;
@@ -4152,12 +3964,10 @@ static uint8_t check_trigger_meas_event(
 
 #if defined(Rel10) || defined(Rel14)
 //-----------------------------------------------------------------------------
-int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t* const Sdu, const uint8_t Sdu_len, const uint8_t mbsfn_sync_area )
+int decode_MCCH_Message( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t *const Sdu, const uint8_t Sdu_len, const uint8_t mbsfn_sync_area )
 {
-
   MCCH_Message_t               *mcch=NULL;
-  MBSFNAreaConfiguration_r9_t** mcch_message=&UE_rrc_inst[ctxt_pP->module_id].mcch_message[eNB_index];
-
+  MBSFNAreaConfiguration_r9_t **mcch_message=&UE_rrc_inst[ctxt_pP->module_id].mcch_message[eNB_index];
   asn_dec_rval_t                dec_rval;
 
   if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].MCCHStatus[mbsfn_sync_area] == 1) {
@@ -4178,12 +3988,12 @@ int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB
             ctxt_pP->module_id,
             dec_rval.consumed);
       //free the memory
-      SEQUENCE_free(&asn_DEF_MCCH_Message, (void*)mcch, 1);
+      SEQUENCE_free(&asn_DEF_MCCH_Message, (void *)mcch, 1);
       return -1;
     }
 
 #ifdef XER_PRINT
-    xer_fprint(stdout, &asn_DEF_MCCH_Message, (void*)mcch);
+    xer_fprint(stdout, &asn_DEF_MCCH_Message, (void *)mcch);
 #endif
 
     if (mcch->message.present == MCCH_MessageType_PR_c1) {
@@ -4205,7 +4015,6 @@ int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB
           eNB_index,
           ctxt_pP->frame,
           mbsfn_sync_area);
-
       }
     }
   }
@@ -4217,54 +4026,48 @@ int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB
 static void decode_MBSFNAreaConfiguration( module_id_t ue_mod_idP, uint8_t eNB_index, frame_t frameP, uint8_t mbsfn_sync_area )
 {
   protocol_ctxt_t               ctxt;
-
   LOG_I(RRC,"[UE %d] Frame %d : Number of MCH(s) in the MBSFN Sync Area %d  is %d\n",
         ue_mod_idP, frameP, mbsfn_sync_area, UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->pmch_InfoList_r9.list.count);
   //  store to MAC/PHY necessary parameters for receiving MTCHs
-
   rrc_mac_config_req_ue(ue_mod_idP,0,eNB_index,
-			(RadioResourceConfigCommonSIB_t *)NULL,
-			(struct PhysicalConfigDedicated *)NULL,
+                        (RadioResourceConfigCommonSIB_t *)NULL,
+                        (struct PhysicalConfigDedicated *)NULL,
 #if defined(Rel10) || defined(Rel14)
-			(SCellToAddMod_r10_t *)NULL,
-			//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+                        (SCellToAddMod_r10_t *)NULL,
+                        //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
 #endif
-			(MeasObjectToAddMod_t **)NULL,
-			(MAC_MainConfig_t *)NULL,
-			0,
-			(struct LogicalChannelConfig *)NULL,
-			(MeasGapConfig_t *)NULL,
-			(TDD_Config_t *)NULL,
-			(MobilityControlInfo_t *)NULL,
-			NULL,
-			NULL,
-			NULL,
-			NULL,
-			NULL,
-			(MBSFN_SubframeConfigList_t *)NULL
+                        (MeasObjectToAddMod_t **)NULL,
+                        (MAC_MainConfig_t *)NULL,
+                        0,
+                        (struct LogicalChannelConfig *)NULL,
+                        (MeasGapConfig_t *)NULL,
+                        (TDD_Config_t *)NULL,
+                        (MobilityControlInfo_t *)NULL,
+                        NULL,
+                        NULL,
+                        NULL,
+                        NULL,
+                        NULL,
+                        (MBSFN_SubframeConfigList_t *)NULL
 #if defined(Rel10) || defined(Rel14)
-			,
-			0,
-			(MBSFN_AreaInfoList_r9_t *)NULL,
-			&UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->pmch_InfoList_r9
-
+                        ,
+                        0,
+                        (MBSFN_AreaInfoList_r9_t *)NULL,
+                        &UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->pmch_InfoList_r9
 #endif
 #ifdef CBA
-			,
-			0,
-			0
+                        ,
+                        0,
+                        0
 #endif
-			);
-  
+                       );
   UE_rrc_inst[ue_mod_idP].Info[eNB_index].MCCHStatus[mbsfn_sync_area] = 1;
-
   PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_idP, ENB_FLAG_NO, UE_rrc_inst[ue_mod_idP].Info[eNB_index].rnti, frameP, 0,eNB_index);
-
   // Config Radio Bearer for MBMS user data (similar way to configure for eNB side in init_MBMS function)
   rrc_pdcp_config_asn1_req(&ctxt,
                            NULL, // SRB_ToAddModList
                            NULL, // DRB_ToAddModList
-                           (DRB_ToReleaseList_t*)NULL,
+                           (DRB_ToReleaseList_t *)NULL,
                            0, // security mode
                            NULL, // key rrc encryption
                            NULL, // key rrc integrity
@@ -4273,7 +4076,6 @@ static void decode_MBSFNAreaConfiguration( module_id_t ue_mod_idP, uint8_t eNB_i
                            ,&(UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->pmch_InfoList_r9)
 #endif
                            ,NULL);
-
   rrc_rlc_config_asn1_req(&ctxt,
                           NULL,// SRB_ToAddModList
                           NULL,// DRB_ToAddModList
@@ -4283,7 +4085,6 @@ static void decode_MBSFNAreaConfiguration( module_id_t ue_mod_idP, uint8_t eNB_i
 #endif
                          );
   // */
-
 }
 
 #endif // rel10
@@ -4298,467 +4099,424 @@ void *rrc_ue_task( void *args_p )
   unsigned int  ue_mod_id;
   int           result;
   SRB_INFO     *srb_info_p;
-
   protocol_ctxt_t  ctxt;
   itti_mark_task_ready (TASK_RRC_UE);
 
   while(1) {
     // Wait for a message
     itti_receive_msg (TASK_RRC_UE, &msg_p);
-
     msg_name = ITTI_MSG_NAME (msg_p);
     instance = ITTI_MSG_INSTANCE (msg_p);
     ue_mod_id = UE_INSTANCE_TO_MODULE_ID(instance);
 
     switch (ITTI_MSG_ID(msg_p)) {
-    case TERMINATE_MESSAGE:
-      LOG_W(RRC, " *** Exiting RRC thread\n");
-      itti_exit_task ();
-      break;
+      case TERMINATE_MESSAGE:
+        LOG_W(RRC, " *** Exiting RRC thread\n");
+        itti_exit_task ();
+        break;
 
-    case MESSAGE_TEST:
-      LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, msg_name);
-      break;
+      case MESSAGE_TEST:
+        LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, msg_name);
+        break;
 
       /* MAC messages */
-    case RRC_MAC_IN_SYNC_IND:
-      LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, msg_name,
-            RRC_MAC_IN_SYNC_IND (msg_p).frame, RRC_MAC_IN_SYNC_IND (msg_p).enb_index);
-
-      UE_rrc_inst[ue_mod_id].Info[RRC_MAC_IN_SYNC_IND (msg_p).enb_index].N310_cnt = 0;
-
-      if (UE_rrc_inst[ue_mod_id].Info[RRC_MAC_IN_SYNC_IND (msg_p).enb_index].T310_active == 1) {
-        UE_rrc_inst[ue_mod_id].Info[RRC_MAC_IN_SYNC_IND (msg_p).enb_index].N311_cnt++;
-      }
+      case RRC_MAC_IN_SYNC_IND:
+        LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, msg_name,
+              RRC_MAC_IN_SYNC_IND (msg_p).frame, RRC_MAC_IN_SYNC_IND (msg_p).enb_index);
+        UE_rrc_inst[ue_mod_id].Info[RRC_MAC_IN_SYNC_IND (msg_p).enb_index].N310_cnt = 0;
 
-      break;
-
-    case RRC_MAC_OUT_OF_SYNC_IND:
-      LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, msg_name,
-            RRC_MAC_OUT_OF_SYNC_IND (msg_p).frame, RRC_MAC_OUT_OF_SYNC_IND (msg_p).enb_index);
-
-      UE_rrc_inst[ue_mod_id].Info[RRC_MAC_OUT_OF_SYNC_IND (msg_p).enb_index].N310_cnt ++;
-      break;
+        if (UE_rrc_inst[ue_mod_id].Info[RRC_MAC_IN_SYNC_IND (msg_p).enb_index].T310_active == 1) {
+          UE_rrc_inst[ue_mod_id].Info[RRC_MAC_IN_SYNC_IND (msg_p).enb_index].N311_cnt++;
+        }
 
-    case RRC_MAC_BCCH_DATA_IND:
-      LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, msg_name,
-            RRC_MAC_BCCH_DATA_IND (msg_p).frame, RRC_MAC_BCCH_DATA_IND (msg_p).enb_index);
-
-      //      PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, RRC_MAC_BCCH_DATA_IND (msg_p).frame, 0);
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, NOT_A_RNTI, RRC_MAC_BCCH_DATA_IND (msg_p).frame, 0,RRC_MAC_BCCH_DATA_IND (msg_p).enb_index);
-      decode_BCCH_DLSCH_Message (&ctxt,
-                                 RRC_MAC_BCCH_DATA_IND (msg_p).enb_index,
-                                 RRC_MAC_BCCH_DATA_IND (msg_p).sdu,
-                                 RRC_MAC_BCCH_DATA_IND (msg_p).sdu_size,
-                                 RRC_MAC_BCCH_DATA_IND (msg_p).rsrq,
-                                 RRC_MAC_BCCH_DATA_IND (msg_p).rsrp);
-      break;
+        break;
 
-    case RRC_MAC_CCCH_DATA_CNF:
-      LOG_D(RRC, "[UE %d] Received %s: eNB %d\n", ue_mod_id, msg_name,
-            RRC_MAC_CCCH_DATA_CNF (msg_p).enb_index);
+      case RRC_MAC_OUT_OF_SYNC_IND:
+        LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, msg_name,
+              RRC_MAC_OUT_OF_SYNC_IND (msg_p).frame, RRC_MAC_OUT_OF_SYNC_IND (msg_p).enb_index);
+        UE_rrc_inst[ue_mod_id].Info[RRC_MAC_OUT_OF_SYNC_IND (msg_p).enb_index].N310_cnt ++;
+        break;
 
-      // reset the tx buffer to indicate RRC that ccch was successfully transmitted (for example if contention resolution succeeds)
-      UE_rrc_inst[ue_mod_id].Srb0[RRC_MAC_CCCH_DATA_CNF (msg_p).enb_index].Tx_buffer.payload_size = 0;
-      break;
+      case RRC_MAC_BCCH_DATA_IND:
+        LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, msg_name,
+              RRC_MAC_BCCH_DATA_IND (msg_p).frame, RRC_MAC_BCCH_DATA_IND (msg_p).enb_index);
+        //      PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, RRC_MAC_BCCH_DATA_IND (msg_p).frame, 0);
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, NOT_A_RNTI, RRC_MAC_BCCH_DATA_IND (msg_p).frame, 0,RRC_MAC_BCCH_DATA_IND (msg_p).enb_index);
+        decode_BCCH_DLSCH_Message (&ctxt,
+                                   RRC_MAC_BCCH_DATA_IND (msg_p).enb_index,
+                                   RRC_MAC_BCCH_DATA_IND (msg_p).sdu,
+                                   RRC_MAC_BCCH_DATA_IND (msg_p).sdu_size,
+                                   RRC_MAC_BCCH_DATA_IND (msg_p).rsrq,
+                                   RRC_MAC_BCCH_DATA_IND (msg_p).rsrp);
+        break;
 
-    case RRC_MAC_CCCH_DATA_IND:
-      LOG_D(RRC, "[UE %d] RNTI %x Received %s: frameP %d, eNB %d\n",
-            ue_mod_id,
-            RRC_MAC_CCCH_DATA_IND (msg_p).rnti,
-            msg_name,
-            RRC_MAC_CCCH_DATA_IND (msg_p).frame,
-            RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
-
-      srb_info_p = &UE_rrc_inst[ue_mod_id].Srb0[RRC_MAC_CCCH_DATA_IND (msg_p).enb_index];
-
-      memcpy (srb_info_p->Rx_buffer.Payload, RRC_MAC_CCCH_DATA_IND (msg_p).sdu,
-              RRC_MAC_CCCH_DATA_IND (msg_p).sdu_size);
-      srb_info_p->Rx_buffer.payload_size = RRC_MAC_CCCH_DATA_IND (msg_p).sdu_size;
-      //      PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, RRC_MAC_CCCH_DATA_IND (msg_p).rnti, RRC_MAC_CCCH_DATA_IND (msg_p).frame, 0);
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, RRC_MAC_CCCH_DATA_IND (msg_p).rnti, RRC_MAC_CCCH_DATA_IND (msg_p).frame, 0, RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
-      rrc_ue_decode_ccch (&ctxt,
-                          srb_info_p,
-                          RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
-      break;
+      case RRC_MAC_CCCH_DATA_CNF:
+        LOG_D(RRC, "[UE %d] Received %s: eNB %d\n", ue_mod_id, msg_name,
+              RRC_MAC_CCCH_DATA_CNF (msg_p).enb_index);
+        // reset the tx buffer to indicate RRC that ccch was successfully transmitted (for example if contention resolution succeeds)
+        UE_rrc_inst[ue_mod_id].Srb0[RRC_MAC_CCCH_DATA_CNF (msg_p).enb_index].Tx_buffer.payload_size = 0;
+        break;
 
+      case RRC_MAC_CCCH_DATA_IND:
+        LOG_D(RRC, "[UE %d] RNTI %x Received %s: frameP %d, eNB %d\n",
+              ue_mod_id,
+              RRC_MAC_CCCH_DATA_IND (msg_p).rnti,
+              msg_name,
+              RRC_MAC_CCCH_DATA_IND (msg_p).frame,
+              RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
+        srb_info_p = &UE_rrc_inst[ue_mod_id].Srb0[RRC_MAC_CCCH_DATA_IND (msg_p).enb_index];
+        memcpy (srb_info_p->Rx_buffer.Payload, RRC_MAC_CCCH_DATA_IND (msg_p).sdu,
+                RRC_MAC_CCCH_DATA_IND (msg_p).sdu_size);
+        srb_info_p->Rx_buffer.payload_size = RRC_MAC_CCCH_DATA_IND (msg_p).sdu_size;
+        //      PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, RRC_MAC_CCCH_DATA_IND (msg_p).rnti, RRC_MAC_CCCH_DATA_IND (msg_p).frame, 0);
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, RRC_MAC_CCCH_DATA_IND (msg_p).rnti, RRC_MAC_CCCH_DATA_IND (msg_p).frame, 0, RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
+        rrc_ue_decode_ccch (&ctxt,
+                            srb_info_p,
+                            RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
+        break;
 # if defined(Rel10) || defined(Rel14)
 
-    case RRC_MAC_MCCH_DATA_IND:
-      LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d, mbsfn SA %d\n", ue_mod_id, msg_name,
-            RRC_MAC_MCCH_DATA_IND (msg_p).frame, RRC_MAC_MCCH_DATA_IND (msg_p).enb_index, RRC_MAC_MCCH_DATA_IND (msg_p).mbsfn_sync_area);
-
-      //PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, M_RNTI, RRC_MAC_MCCH_DATA_IND (msg_p).frame, 0);
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, M_RNTI, RRC_MAC_MCCH_DATA_IND (msg_p).frame, 0,RRC_MAC_MCCH_DATA_IND (msg_p).enb_index);
-      decode_MCCH_Message (
-        &ctxt,
-        RRC_MAC_MCCH_DATA_IND (msg_p).enb_index,
-        RRC_MAC_MCCH_DATA_IND (msg_p).sdu,
-        RRC_MAC_MCCH_DATA_IND (msg_p).sdu_size,
-        RRC_MAC_MCCH_DATA_IND (msg_p).mbsfn_sync_area);
-      break;
+      case RRC_MAC_MCCH_DATA_IND:
+        LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d, mbsfn SA %d\n", ue_mod_id, msg_name,
+              RRC_MAC_MCCH_DATA_IND (msg_p).frame, RRC_MAC_MCCH_DATA_IND (msg_p).enb_index, RRC_MAC_MCCH_DATA_IND (msg_p).mbsfn_sync_area);
+        //PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, M_RNTI, RRC_MAC_MCCH_DATA_IND (msg_p).frame, 0);
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, M_RNTI, RRC_MAC_MCCH_DATA_IND (msg_p).frame, 0,RRC_MAC_MCCH_DATA_IND (msg_p).enb_index);
+        decode_MCCH_Message (
+          &ctxt,
+          RRC_MAC_MCCH_DATA_IND (msg_p).enb_index,
+          RRC_MAC_MCCH_DATA_IND (msg_p).sdu,
+          RRC_MAC_MCCH_DATA_IND (msg_p).sdu_size,
+          RRC_MAC_MCCH_DATA_IND (msg_p).mbsfn_sync_area);
+        break;
 # endif
 
       /* PDCP messages */
-    case RRC_DCCH_DATA_IND:
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, RRC_DCCH_DATA_IND (msg_p).module_id, ENB_FLAG_NO, RRC_DCCH_DATA_IND (msg_p).rnti, RRC_DCCH_DATA_IND (msg_p).frame, 0,RRC_DCCH_DATA_IND (msg_p).eNB_index);
-      LOG_D(RRC, "[UE %d] Received %s: frameP %d, DCCH %d, eNB %d\n",
-            RRC_DCCH_DATA_IND (msg_p).module_id,
-            msg_name,
-            RRC_DCCH_DATA_IND (msg_p).frame,
-            RRC_DCCH_DATA_IND (msg_p).dcch_index,
-            RRC_DCCH_DATA_IND (msg_p).eNB_index);
-
-      LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT"Received %s DCCH %d, eNB %d\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(&ctxt),
-            msg_name,
-            RRC_DCCH_DATA_IND (msg_p).dcch_index,
-            RRC_DCCH_DATA_IND (msg_p).eNB_index);
-      rrc_ue_decode_dcch (
-        &ctxt,
-        RRC_DCCH_DATA_IND (msg_p).dcch_index,
-        RRC_DCCH_DATA_IND (msg_p).sdu_p,
-        RRC_DCCH_DATA_IND (msg_p).eNB_index);
-      // Message buffer has been processed, free it now.
-      result = itti_free (ITTI_MSG_ORIGIN_ID(msg_p), RRC_DCCH_DATA_IND (msg_p).sdu_p);
-      AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-      break;
-
+      case RRC_DCCH_DATA_IND:
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, RRC_DCCH_DATA_IND (msg_p).module_id, ENB_FLAG_NO, RRC_DCCH_DATA_IND (msg_p).rnti, RRC_DCCH_DATA_IND (msg_p).frame, 0,RRC_DCCH_DATA_IND (msg_p).eNB_index);
+        LOG_D(RRC, "[UE %d] Received %s: frameP %d, DCCH %d, eNB %d\n",
+              RRC_DCCH_DATA_IND (msg_p).module_id,
+              msg_name,
+              RRC_DCCH_DATA_IND (msg_p).frame,
+              RRC_DCCH_DATA_IND (msg_p).dcch_index,
+              RRC_DCCH_DATA_IND (msg_p).eNB_index);
+        LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT"Received %s DCCH %d, eNB %d\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(&ctxt),
+              msg_name,
+              RRC_DCCH_DATA_IND (msg_p).dcch_index,
+              RRC_DCCH_DATA_IND (msg_p).eNB_index);
+        rrc_ue_decode_dcch (
+          &ctxt,
+          RRC_DCCH_DATA_IND (msg_p).dcch_index,
+          RRC_DCCH_DATA_IND (msg_p).sdu_p,
+          RRC_DCCH_DATA_IND (msg_p).eNB_index);
+        // Message buffer has been processed, free it now.
+        result = itti_free (ITTI_MSG_ORIGIN_ID(msg_p), RRC_DCCH_DATA_IND (msg_p).sdu_p);
+        AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
+        break;
 # if defined(ENABLE_USE_MME)
 
-    case NAS_KENB_REFRESH_REQ:
-        memcpy((void*)UE_rrc_inst[ue_mod_id].kenb, (void*)NAS_KENB_REFRESH_REQ(msg_p).kenb, sizeof(UE_rrc_inst[ue_mod_id].kenb));
-
+      case NAS_KENB_REFRESH_REQ:
+        memcpy((void *)UE_rrc_inst[ue_mod_id].kenb, (void *)NAS_KENB_REFRESH_REQ(msg_p).kenb, sizeof(UE_rrc_inst[ue_mod_id].kenb));
         LOG_D(RRC, "[UE %d] Received %s: refreshed RRC::KeNB = "
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x\n",
-            ue_mod_id, msg_name,
-            UE_rrc_inst[ue_mod_id].kenb[0],  UE_rrc_inst[ue_mod_id].kenb[1],  UE_rrc_inst[ue_mod_id].kenb[2],  UE_rrc_inst[ue_mod_id].kenb[3],
-            UE_rrc_inst[ue_mod_id].kenb[4],  UE_rrc_inst[ue_mod_id].kenb[5],  UE_rrc_inst[ue_mod_id].kenb[6],  UE_rrc_inst[ue_mod_id].kenb[7],
-            UE_rrc_inst[ue_mod_id].kenb[8],  UE_rrc_inst[ue_mod_id].kenb[9],  UE_rrc_inst[ue_mod_id].kenb[10], UE_rrc_inst[ue_mod_id].kenb[11],
-            UE_rrc_inst[ue_mod_id].kenb[12], UE_rrc_inst[ue_mod_id].kenb[13], UE_rrc_inst[ue_mod_id].kenb[14], UE_rrc_inst[ue_mod_id].kenb[15],
-            UE_rrc_inst[ue_mod_id].kenb[16], UE_rrc_inst[ue_mod_id].kenb[17], UE_rrc_inst[ue_mod_id].kenb[18], UE_rrc_inst[ue_mod_id].kenb[19],
-            UE_rrc_inst[ue_mod_id].kenb[20], UE_rrc_inst[ue_mod_id].kenb[21], UE_rrc_inst[ue_mod_id].kenb[22], UE_rrc_inst[ue_mod_id].kenb[23],
-            UE_rrc_inst[ue_mod_id].kenb[24], UE_rrc_inst[ue_mod_id].kenb[25], UE_rrc_inst[ue_mod_id].kenb[26], UE_rrc_inst[ue_mod_id].kenb[27],
-            UE_rrc_inst[ue_mod_id].kenb[28], UE_rrc_inst[ue_mod_id].kenb[29], UE_rrc_inst[ue_mod_id].kenb[30], UE_rrc_inst[ue_mod_id].kenb[31]);
-
-      break;
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x\n",
+              ue_mod_id, msg_name,
+              UE_rrc_inst[ue_mod_id].kenb[0],  UE_rrc_inst[ue_mod_id].kenb[1],  UE_rrc_inst[ue_mod_id].kenb[2],  UE_rrc_inst[ue_mod_id].kenb[3],
+              UE_rrc_inst[ue_mod_id].kenb[4],  UE_rrc_inst[ue_mod_id].kenb[5],  UE_rrc_inst[ue_mod_id].kenb[6],  UE_rrc_inst[ue_mod_id].kenb[7],
+              UE_rrc_inst[ue_mod_id].kenb[8],  UE_rrc_inst[ue_mod_id].kenb[9],  UE_rrc_inst[ue_mod_id].kenb[10], UE_rrc_inst[ue_mod_id].kenb[11],
+              UE_rrc_inst[ue_mod_id].kenb[12], UE_rrc_inst[ue_mod_id].kenb[13], UE_rrc_inst[ue_mod_id].kenb[14], UE_rrc_inst[ue_mod_id].kenb[15],
+              UE_rrc_inst[ue_mod_id].kenb[16], UE_rrc_inst[ue_mod_id].kenb[17], UE_rrc_inst[ue_mod_id].kenb[18], UE_rrc_inst[ue_mod_id].kenb[19],
+              UE_rrc_inst[ue_mod_id].kenb[20], UE_rrc_inst[ue_mod_id].kenb[21], UE_rrc_inst[ue_mod_id].kenb[22], UE_rrc_inst[ue_mod_id].kenb[23],
+              UE_rrc_inst[ue_mod_id].kenb[24], UE_rrc_inst[ue_mod_id].kenb[25], UE_rrc_inst[ue_mod_id].kenb[26], UE_rrc_inst[ue_mod_id].kenb[27],
+              UE_rrc_inst[ue_mod_id].kenb[28], UE_rrc_inst[ue_mod_id].kenb[29], UE_rrc_inst[ue_mod_id].kenb[30], UE_rrc_inst[ue_mod_id].kenb[31]);
+        break;
 
       /* NAS messages */
-    case NAS_CELL_SELECTION_REQ:
-
-      LOG_D(RRC, "[UE %d] Received %s: state %d, plmnID (%d%d%d.%d%d%d), rat %x\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id),
-            NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit1,
-            NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit2,
-            NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit3,
-            NAS_CELL_SELECTION_REQ (msg_p).plmnID.MNCdigit1,
-            NAS_CELL_SELECTION_REQ (msg_p).plmnID.MNCdigit2,
-            NAS_CELL_SELECTION_REQ (msg_p).plmnID.MNCdigit3,
-            NAS_CELL_SELECTION_REQ (msg_p).rat);
-
-      if (rrc_get_state(ue_mod_id) == RRC_STATE_INACTIVE) {
-        // have a look at MAC/main.c void dl_phy_sync_success(...)
-        openair_rrc_ue_init(ue_mod_id,0);
-      }
-
-      /* Save cell selection criterion */
-      {
-        UE_rrc_inst[ue_mod_id].plmnID = NAS_CELL_SELECTION_REQ (msg_p).plmnID;
-        UE_rrc_inst[ue_mod_id].rat = NAS_CELL_SELECTION_REQ (msg_p).rat;
-        LOG_D(RRC, "[UE %d] Save cell selection criterion MCC %X%X%X MNC %X%X%X\n",
-              ue_mod_id,
-              UE_rrc_inst[ue_mod_id].plmnID.MCCdigit1,
-              UE_rrc_inst[ue_mod_id].plmnID.MCCdigit2,
-              UE_rrc_inst[ue_mod_id].plmnID.MCCdigit3,
-              UE_rrc_inst[ue_mod_id].plmnID.MNCdigit1,
-              UE_rrc_inst[ue_mod_id].plmnID.MNCdigit2,
-              UE_rrc_inst[ue_mod_id].plmnID.MNCdigit3);
-
-      }
-
-      switch (rrc_get_state(ue_mod_id)) {
-      case RRC_STATE_INACTIVE: {
-        /* Need to first activate lower layers */
-        MessageDef *message_p;
-
-        message_p = itti_alloc_new_message(TASK_RRC_UE, ACTIVATE_MESSAGE);
-
-        itti_send_msg_to_task(TASK_L2L1, UE_MODULE_ID_TO_INSTANCE(ue_mod_id), message_p);
+      case NAS_CELL_SELECTION_REQ:
+        LOG_D(RRC, "[UE %d] Received %s: state %d, plmnID (%d%d%d.%d%d%d), rat %x\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id),
+              NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit1,
+              NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit2,
+              NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit3,
+              NAS_CELL_SELECTION_REQ (msg_p).plmnID.MNCdigit1,
+              NAS_CELL_SELECTION_REQ (msg_p).plmnID.MNCdigit2,
+              NAS_CELL_SELECTION_REQ (msg_p).plmnID.MNCdigit3,
+              NAS_CELL_SELECTION_REQ (msg_p).rat);
+
+        if (rrc_get_state(ue_mod_id) == RRC_STATE_INACTIVE) {
+          // have a look at MAC/main.c void dl_phy_sync_success(...)
+          openair_rrc_ue_init(ue_mod_id,0);
+        }
 
-        rrc_set_state (ue_mod_id, RRC_STATE_IDLE);
-        /* Fall through to next case */
-      }
+        /* Save cell selection criterion */
+        {
+          UE_rrc_inst[ue_mod_id].plmnID = NAS_CELL_SELECTION_REQ (msg_p).plmnID;
+          UE_rrc_inst[ue_mod_id].rat = NAS_CELL_SELECTION_REQ (msg_p).rat;
+          LOG_D(RRC, "[UE %d] Save cell selection criterion MCC %X%X%X MNC %X%X%X\n",
+                ue_mod_id,
+                UE_rrc_inst[ue_mod_id].plmnID.MCCdigit1,
+                UE_rrc_inst[ue_mod_id].plmnID.MCCdigit2,
+                UE_rrc_inst[ue_mod_id].plmnID.MCCdigit3,
+                UE_rrc_inst[ue_mod_id].plmnID.MNCdigit1,
+                UE_rrc_inst[ue_mod_id].plmnID.MNCdigit2,
+                UE_rrc_inst[ue_mod_id].plmnID.MNCdigit3);
+        }
 
-      case RRC_STATE_IDLE: {
-        /* Ask to layer 1 to find a cell matching the criterion */
-        MessageDef *message_p;
+        switch (rrc_get_state(ue_mod_id)) {
+          case RRC_STATE_INACTIVE: {
+            /* Need to first activate lower layers */
+            MessageDef *message_p;
+            message_p = itti_alloc_new_message(TASK_RRC_UE, ACTIVATE_MESSAGE);
+            itti_send_msg_to_task(TASK_L2L1, UE_MODULE_ID_TO_INSTANCE(ue_mod_id), message_p);
+            rrc_set_state (ue_mod_id, RRC_STATE_IDLE);
+            /* Fall through to next case */
+          }
 
-        message_p = itti_alloc_new_message(TASK_RRC_UE, PHY_FIND_CELL_REQ);
+          case RRC_STATE_IDLE: {
+            /* Ask to layer 1 to find a cell matching the criterion */
+            MessageDef *message_p;
+            message_p = itti_alloc_new_message(TASK_RRC_UE, PHY_FIND_CELL_REQ);
+            PHY_FIND_CELL_REQ (message_p).earfcn_start = 1;
+            PHY_FIND_CELL_REQ (message_p).earfcn_end = 1;
+            itti_send_msg_to_task(TASK_PHY_UE, UE_MODULE_ID_TO_INSTANCE(ue_mod_id), message_p);
+            rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_SEARCHING);
+            break;
+          }
 
-        PHY_FIND_CELL_REQ (message_p).earfcn_start = 1;
-        PHY_FIND_CELL_REQ (message_p).earfcn_end = 1;
+          case RRC_STATE_CONNECTED:
+            /* should not happen */
+            LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
+            break;
 
-        itti_send_msg_to_task(TASK_PHY_UE, UE_MODULE_ID_TO_INSTANCE(ue_mod_id), message_p);
-        rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_SEARCHING);
+          default:
+            LOG_C(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+            break;
+        }
 
         break;
-      }
 
-      case RRC_STATE_CONNECTED:
-        /* should not happen */
-        LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
-        break;
+      case NAS_CONN_ESTABLI_REQ:
+        LOG_D(RRC, "[UE %d] Received %s: cause %d, type %d, s_tmsi (mme code %"PRIu8", m-tmsi %"PRIu32"), plmnID (%d%d%d.%d%d%d)\n", ue_mod_id, msg_name, NAS_CONN_ESTABLI_REQ (msg_p).cause,
+              NAS_CONN_ESTABLI_REQ (msg_p).type,
+              NAS_CONN_ESTABLI_REQ (msg_p).s_tmsi.MMEcode,
+              NAS_CONN_ESTABLI_REQ (msg_p).s_tmsi.m_tmsi,
+              NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MCCdigit1,
+              NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MCCdigit2,
+              NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MCCdigit3,
+              NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MNCdigit1,
+              NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MNCdigit2,
+              NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MNCdigit3);
+        //PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, 0, 0);
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, NOT_A_RNTI, 0, 0, 0);
+        UE_rrc_inst[ue_mod_id].initialNasMsg = NAS_CONN_ESTABLI_REQ (msg_p).initialNasMsg;
+
+        switch (rrc_get_state(ue_mod_id)) {
+          case RRC_STATE_IDLE: {
+            if (rrc_get_sub_state(ue_mod_id) == RRC_SUB_STATE_IDLE_SIB_COMPLETE) {
+              rrc_ue_generate_RRCConnectionRequest(&ctxt, 0);
+              LOG_D(RRC, "not sending connection request\n");
+              rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_CONNECTING);
+            }
 
-      default:
-        LOG_C(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
-        break;
-      }
+            break;
+          }
 
-      break;
+          case RRC_STATE_INACTIVE:
+          case RRC_STATE_CONNECTED:
+            /* should not happen */
+            LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
+            break;
 
-    case NAS_CONN_ESTABLI_REQ:
-      LOG_D(RRC, "[UE %d] Received %s: cause %d, type %d, s_tmsi (mme code %"PRIu8", m-tmsi %"PRIu32"), plmnID (%d%d%d.%d%d%d)\n", ue_mod_id, msg_name, NAS_CONN_ESTABLI_REQ (msg_p).cause,
-            NAS_CONN_ESTABLI_REQ (msg_p).type,
-            NAS_CONN_ESTABLI_REQ (msg_p).s_tmsi.MMEcode,
-            NAS_CONN_ESTABLI_REQ (msg_p).s_tmsi.m_tmsi,
-            NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MCCdigit1,
-            NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MCCdigit2,
-            NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MCCdigit3,
-            NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MNCdigit1,
-            NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MNCdigit2,
-            NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MNCdigit3);
-
-      //PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, 0, 0);
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, NOT_A_RNTI, 0, 0, 0);
-
-      UE_rrc_inst[ue_mod_id].initialNasMsg = NAS_CONN_ESTABLI_REQ (msg_p).initialNasMsg;
-
-      switch (rrc_get_state(ue_mod_id)) {
-      case RRC_STATE_IDLE: {
-        if (rrc_get_sub_state(ue_mod_id) == RRC_SUB_STATE_IDLE_SIB_COMPLETE) {
-          rrc_ue_generate_RRCConnectionRequest(&ctxt, 0);
-          LOG_D(RRC, "not sending connection request\n");
-
-          rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_CONNECTING);
+          default:
+            LOG_C(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+            break;
         }
 
         break;
-      }
 
-      case RRC_STATE_INACTIVE:
-      case RRC_STATE_CONNECTED:
-        /* should not happen */
-        LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
-        break;
+      case NAS_UPLINK_DATA_REQ: {
+        uint32_t length;
+        uint8_t *buffer;
+        LOG_D(RRC, "[UE %d] Received %s: UEid %d\n", ue_mod_id, msg_name, NAS_UPLINK_DATA_REQ (msg_p).UEid);
+        /* Create message for PDCP (ULInformationTransfer_t) */
+        length = do_ULInformationTransfer(&buffer, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.length, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.data);
+        /* Transfer data to PDCP */
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0,0);
+
+        // check if SRB2 is created, if yes request data_req on DCCH1 (SRB2)
+        if(UE_rrc_inst[ue_mod_id].SRB2_config[0] == NULL)
+        {
+          rrc_data_req_ue (&ctxt,
+                           DCCH,
+                           rrc_mui++,
+                           SDU_CONFIRM_NO,
+                           length, buffer,
+                           PDCP_TRANSMISSION_MODE_CONTROL);
+        }
+        else
+        {
+          rrc_data_req_ue (&ctxt,
+                           DCCH1,
+                           rrc_mui++,
+                           SDU_CONFIRM_NO,
+                           length, buffer,
+                           PDCP_TRANSMISSION_MODE_CONTROL);
+        }
 
-      default:
-        LOG_C(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
         break;
       }
 
-      break;
-
-    case NAS_UPLINK_DATA_REQ: {
-      uint32_t length;
-      uint8_t *buffer;
-
-      LOG_D(RRC, "[UE %d] Received %s: UEid %d\n", ue_mod_id, msg_name, NAS_UPLINK_DATA_REQ (msg_p).UEid);
-
-      /* Create message for PDCP (ULInformationTransfer_t) */
-      length = do_ULInformationTransfer(&buffer, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.length, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.data);
-
-      /* Transfer data to PDCP */
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0,0);
-
-      // check if SRB2 is created, if yes request data_req on DCCH1 (SRB2) 
-      if(UE_rrc_inst[ue_mod_id].SRB2_config[0] == NULL)
-      {
-          rrc_data_req_ue (&ctxt,
-                  DCCH,
-                  rrc_mui++,
-                  SDU_CONFIRM_NO,
-                  length, buffer,
-                  PDCP_TRANSMISSION_MODE_CONTROL);
-      }
-      else
-      {
-          rrc_data_req_ue (&ctxt,
-                  DCCH1,
-                  rrc_mui++,
-                  SDU_CONFIRM_NO,
-                  length, buffer,
-                  PDCP_TRANSMISSION_MODE_CONTROL);
-      }
-      break;
-    }
-      
 # endif
-
 # if ENABLE_RAL
 
-    case RRC_RAL_SCAN_REQ:
-      LOG_D(RRC, "[UE %d] Received %s: state %d\n", ue_mod_id, msg_name);
-
-      switch (rrc_get_state(ue_mod_id)) {
-      case RRC_STATE_INACTIVE: {
-        /* Need to first activate lower layers */
-        MessageDef *message_p;
-
-        message_p = itti_alloc_new_message(TASK_RRC_UE, ACTIVATE_MESSAGE);
-
-        itti_send_msg_to_task(TASK_L2L1, instance, message_p);
-
-        rrc_set_state (ue_mod_id, RRC_STATE_IDLE);
-        /* Fall through to next case */
-      }
-
-      case RRC_STATE_IDLE: {
-        if (rrc_get_sub_state(ue_mod_id) != RRC_SUB_STATE_IDLE_SEARCHING) {
-          /* Ask to layer 1 to find a cell matching the criterion */
-          MessageDef *message_p;
+      case RRC_RAL_SCAN_REQ:
+        LOG_D(RRC, "[UE %d] Received %s: state %d\n", ue_mod_id, msg_name);
+
+        switch (rrc_get_state(ue_mod_id)) {
+          case RRC_STATE_INACTIVE: {
+            /* Need to first activate lower layers */
+            MessageDef *message_p;
+            message_p = itti_alloc_new_message(TASK_RRC_UE, ACTIVATE_MESSAGE);
+            itti_send_msg_to_task(TASK_L2L1, instance, message_p);
+            rrc_set_state (ue_mod_id, RRC_STATE_IDLE);
+            /* Fall through to next case */
+          }
 
-          message_p = itti_alloc_new_message(TASK_RRC_UE, PHY_FIND_CELL_REQ);
+          case RRC_STATE_IDLE: {
+            if (rrc_get_sub_state(ue_mod_id) != RRC_SUB_STATE_IDLE_SEARCHING) {
+              /* Ask to layer 1 to find a cell matching the criterion */
+              MessageDef *message_p;
+              message_p = itti_alloc_new_message(TASK_RRC_UE, PHY_FIND_CELL_REQ);
+              rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_SEARCHING);
+              PHY_FIND_CELL_REQ (message_p).transaction_id = RRC_RAL_SCAN_REQ (msg_p).transaction_id;
+              PHY_FIND_CELL_REQ (message_p).earfcn_start   = 1;
+              PHY_FIND_CELL_REQ (message_p).earfcn_end     = 1; //44
+              itti_send_msg_to_task(TASK_PHY_UE, instance, message_p);
+            }
 
-          rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_SEARCHING);
+            break;
+          }
 
-          PHY_FIND_CELL_REQ (message_p).transaction_id = RRC_RAL_SCAN_REQ (msg_p).transaction_id;
-          PHY_FIND_CELL_REQ (message_p).earfcn_start   = 1;
-          PHY_FIND_CELL_REQ (message_p).earfcn_end     = 1; //44
+          case RRC_STATE_CONNECTED:
+            /* should not happen */
+            LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
+            break;
 
-          itti_send_msg_to_task(TASK_PHY_UE, instance, message_p);
+          default:
+            LOG_C(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+            break;
         }
 
         break;
-      }
-
-      case RRC_STATE_CONNECTED:
-        /* should not happen */
-        LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
-        break;
-
-      default:
-        LOG_C(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
-        break;
-      }
-
-      break;
-
-    case PHY_FIND_CELL_IND:
-      LOG_D(RRC, "[UE %d] Received %s: state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
 
-      switch (rrc_get_state(ue_mod_id)) {
-      case RRC_STATE_IDLE:
-        switch (rrc_get_sub_state(ue_mod_id)) {
-        case RRC_SUB_STATE_IDLE_SEARCHING: {
-          MessageDef *message_p;
-          int         i;
-
-          message_p = itti_alloc_new_message(TASK_RRC_UE, RRC_RAL_SCAN_CONF);
-
-          RRC_RAL_SCAN_CONF (message_p).transaction_id = PHY_FIND_CELL_IND(msg_p).transaction_id;
-          RRC_RAL_SCAN_CONF (message_p).num_scan_resp  = PHY_FIND_CELL_IND(msg_p).cell_nb;
+      case PHY_FIND_CELL_IND:
+        LOG_D(RRC, "[UE %d] Received %s: state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
+
+        switch (rrc_get_state(ue_mod_id)) {
+          case RRC_STATE_IDLE:
+            switch (rrc_get_sub_state(ue_mod_id)) {
+              case RRC_SUB_STATE_IDLE_SEARCHING: {
+                MessageDef *message_p;
+                int         i;
+                message_p = itti_alloc_new_message(TASK_RRC_UE, RRC_RAL_SCAN_CONF);
+                RRC_RAL_SCAN_CONF (message_p).transaction_id = PHY_FIND_CELL_IND(msg_p).transaction_id;
+                RRC_RAL_SCAN_CONF (message_p).num_scan_resp  = PHY_FIND_CELL_IND(msg_p).cell_nb;
+
+                for (i = 0 ; i < PHY_FIND_CELL_IND(msg_p).cell_nb; i++) {
+                  // TO DO
+                  memset(&RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].link_addr,  0, sizeof(ral_link_addr_t));
+                  // TO DO
+                  memset(&RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].network_id, 0, sizeof(ral_network_id_t));
+                  RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].sig_strength.choice     = RAL_SIG_STRENGTH_CHOICE_DBM;
+                  RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].sig_strength._union.dbm = PHY_FIND_CELL_IND(msg_p).cells[i].rsrp;
+                }
 
-          for (i = 0 ; i < PHY_FIND_CELL_IND(msg_p).cell_nb; i++) {
-            // TO DO
-            memset(&RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].link_addr,  0, sizeof(ral_link_addr_t));
-            // TO DO
-            memset(&RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].network_id, 0, sizeof(ral_network_id_t));
+                rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE);
+                itti_send_msg_to_task(TASK_RAL_UE, instance, message_p);
+                break;
+              }
 
-            RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].sig_strength.choice     = RAL_SIG_STRENGTH_CHOICE_DBM;
-            RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].sig_strength._union.dbm = PHY_FIND_CELL_IND(msg_p).cells[i].rsrp;
-          }
+              default:
+                LOG_C(RRC, "[UE %d] Invalid RRC state %d substate %d\n",
+                      ue_mod_id,
+                      rrc_get_state(ue_mod_id),
+                      rrc_get_sub_state(ue_mod_id));
+            }
 
-          rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE);
+            break;
 
-          itti_send_msg_to_task(TASK_RAL_UE, instance, message_p);
-          break;
-        }
+          case RRC_STATE_INACTIVE:
+          case RRC_STATE_CONNECTED:
+            /* should not happen */
+            LOG_E(RRC, "[UE %d] indication %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
+            break;
 
-        default:
-          LOG_C(RRC, "[UE %d] Invalid RRC state %d substate %d\n",
-                ue_mod_id,
-                rrc_get_state(ue_mod_id),
-                rrc_get_sub_state(ue_mod_id));
+          default:
+            LOG_C(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+            break;
         }
 
-        break;
+        break; // PHY_FIND_CELL_IND
 
-      case RRC_STATE_INACTIVE:
-      case RRC_STATE_CONNECTED:
-        /* should not happen */
-        LOG_E(RRC, "[UE %d] indication %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
-        break;
-
-      default:
-        LOG_C(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+      case PHY_MEAS_REPORT_IND: {
+        MessageDef *message_p;
+        message_p = itti_alloc_new_message(TASK_RRC_UE, RRC_RAL_MEASUREMENT_REPORT_IND);
+        memcpy(&RRC_RAL_MEASUREMENT_REPORT_IND (message_p).threshold,
+               &PHY_MEAS_REPORT_IND(msg_p).threshold,
+               sizeof(RRC_RAL_MEASUREMENT_REPORT_IND (message_p).threshold));
+        memcpy(&RRC_RAL_MEASUREMENT_REPORT_IND (message_p).link_param,
+               &PHY_MEAS_REPORT_IND(msg_p).link_param,
+               sizeof(RRC_RAL_MEASUREMENT_REPORT_IND (message_p).link_param));
+        LOG_D(RRC, "[UE %d] PHY_MEAS_REPORT_IN: sending msg %s to %s \n", ue_mod_id, "RRC_RAL_MEASUREMENT_REPORT_IND", "TASK_RAL_UE");
+        itti_send_msg_to_task(TASK_RAL_UE, instance, message_p);
         break;
       }
 
-      break; // PHY_FIND_CELL_IND
-
-    case PHY_MEAS_REPORT_IND: {
-      MessageDef *message_p;
-      message_p = itti_alloc_new_message(TASK_RRC_UE, RRC_RAL_MEASUREMENT_REPORT_IND);
-
-      memcpy(&RRC_RAL_MEASUREMENT_REPORT_IND (message_p).threshold,
-             &PHY_MEAS_REPORT_IND(msg_p).threshold,
-             sizeof(RRC_RAL_MEASUREMENT_REPORT_IND (message_p).threshold));
+      case RRC_RAL_CONFIGURE_THRESHOLD_REQ:
+        rrc_ue_ral_handle_configure_threshold_request(ue_mod_id, msg_p);
+        break;
 
-      memcpy(&RRC_RAL_MEASUREMENT_REPORT_IND (message_p).link_param,
-             &PHY_MEAS_REPORT_IND(msg_p).link_param,
-             sizeof(RRC_RAL_MEASUREMENT_REPORT_IND (message_p).link_param));
+      case RRC_RAL_CONNECTION_ESTABLISHMENT_REQ:
+        LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, msg_name);
 
-      LOG_D(RRC, "[UE %d] PHY_MEAS_REPORT_IN: sending msg %s to %s \n", ue_mod_id, "RRC_RAL_MEASUREMENT_REPORT_IND", "TASK_RAL_UE");
-      itti_send_msg_to_task(TASK_RAL_UE, instance, message_p);
-      break;
-    }
+        switch (rrc_get_state(ue_mod_id)) {
+          case RRC_STATE_IDLE: {
+            if (rrc_get_sub_state(ue_mod_id) == RRC_SUB_STATE_IDLE_SIB_COMPLETE) {
+              PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0, 0);
+              rrc_ue_generate_RRCConnectionRequest(&ctxt, 0);
+              LOG_D(RRC, "not sending connection request\n");
+              rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_CONNECTING);
+            }
 
-    case RRC_RAL_CONFIGURE_THRESHOLD_REQ:
-      rrc_ue_ral_handle_configure_threshold_request(ue_mod_id, msg_p);
-      break;
+            break;
+          }
 
-    case RRC_RAL_CONNECTION_ESTABLISHMENT_REQ:
-      LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, msg_name);
+          case RRC_STATE_INACTIVE:
+          case RRC_STATE_CONNECTED:
+            /* should not happen */
+            LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
+            break;
 
-      switch (rrc_get_state(ue_mod_id)) {
-      case RRC_STATE_IDLE: {
-        if (rrc_get_sub_state(ue_mod_id) == RRC_SUB_STATE_IDLE_SIB_COMPLETE) {
-          PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0, 0);
-          rrc_ue_generate_RRCConnectionRequest(&ctxt, 0);
-          LOG_D(RRC, "not sending connection request\n");
-          rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_CONNECTING);
+          default:
+            LOG_C(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+            break;
         }
 
         break;
-      }
 
-      case RRC_STATE_INACTIVE:
-      case RRC_STATE_CONNECTED:
-        /* should not happen */
-        LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
+      case RRC_RAL_CONNECTION_RELEASE_REQ:
+        LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, msg_name);
         break;
+#endif
 
       default:
-        LOG_C(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+        LOG_E(RRC, "[UE %d] Received unexpected message %s\n", ue_mod_id, msg_name);
         break;
-      }
-
-      break;
-
-    case RRC_RAL_CONNECTION_RELEASE_REQ:
-      LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, msg_name);
-      break;
-#endif
-
-    default:
-      LOG_E(RRC, "[UE %d] Received unexpected message %s\n", ue_mod_id, msg_name);
-      break;
     }
 
     result = itti_free (ITTI_MSG_ORIGIN_ID(msg_p), msg_p);
@@ -4774,28 +4532,24 @@ void *rrc_ue_task( void *args_p )
 /*------------------------------------------------------------------------------*/
 void
 openair_rrc_top_init_ue(
-			int eMBMS_active,
-			char* uecap_xer,
-			uint8_t cba_group_active,
-			uint8_t HO_active
+  int eMBMS_active,
+  char *uecap_xer,
+  uint8_t cba_group_active,
+  uint8_t HO_active
 )
 //-----------------------------------------------------------------------------
 {
-
   module_id_t         module_id;
   OAI_UECapability_t *UECap     = NULL;
   int                 CC_id;
-
   /* for no gcc warnings */
   (void)CC_id;
-
   LOG_D(RRC, "[OPENAIR][INIT] Init function start: NB_UE_INST=%d, NB_eNB_INST=%d\n", NB_UE_INST, NB_eNB_INST);
 
   if (NB_UE_INST > 0) {
-    UE_rrc_inst = (UE_RRC_INST*) malloc16(NB_UE_INST*sizeof(UE_RRC_INST));
+    UE_rrc_inst = (UE_RRC_INST *) malloc16(NB_UE_INST*sizeof(UE_RRC_INST));
     memset (UE_rrc_inst, 0, NB_UE_INST * sizeof(UE_RRC_INST));
     LOG_D(RRC, "ALLOCATE %d Bytes for UE_RRC_INST @ %p\n", (unsigned int)(NB_UE_INST*sizeof(UE_RRC_INST)), UE_rrc_inst);
-
     // fill UE capability
     UECap = fill_ue_capability (uecap_xer);
 
@@ -4816,7 +4570,6 @@ openair_rrc_top_init_ue(
   } else {
     UE_rrc_inst = NULL;
   }
-
 }
 
 //-----------------------------------------------------------------------------
@@ -4826,122 +4579,118 @@ rrc_top_cleanup_ue(
 )
 //-----------------------------------------------------------------------------
 {
-
   if (NB_UE_INST > 0) free (UE_rrc_inst);
-  
-
 }
 
 
 //-----------------------------------------------------------------------------
 RRC_status_t
 rrc_rx_tx_ue(
-  protocol_ctxt_t* const ctxt_pP,
+  protocol_ctxt_t *const ctxt_pP,
   const uint8_t      enb_indexP,
   const int          CC_id
 )
 //-----------------------------------------------------------------------------
 {
-
 #ifdef LOCALIZATION
   double                         estimated_distance;
   protocol_ctxt_t                ctxt;
 #endif
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_IN);
 
-    // check timers
-
-    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_active == 1) {
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt % 10) == 0)
-        LOG_D(RRC,
-              "[UE %d][RAPROC] Frame %d T300 Count %d ms\n", ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt);
-
-      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt
-          == T300[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.t300]) {
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_active = 0;
-        // ALLOW CCCH to be used
-        UE_rrc_inst[ctxt_pP->module_id].Srb0[enb_indexP].Tx_buffer.payload_size = 0;
-        rrc_ue_generate_RRCConnectionRequest (ctxt_pP, enb_indexP);
-        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
-        return (RRC_ConnSetup_failed);
-      }
+  // check timers
 
-      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt++;
-    }
+  if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_active == 1) {
+    if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt % 10) == 0)
+      LOG_D(RRC,
+            "[UE %d][RAPROC] Frame %d T300 Count %d ms\n", ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt);
 
-    if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].SIStatus&2)>0) {
-      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N310_cnt
-          == N310[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.n310]) {
-	LOG_I(RRC,"Activating T310\n");
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active = 1;
-      }
-    } else { // in case we have not received SIB2 yet
-      /*      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N310_cnt == 100) {
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N310_cnt = 0;
-
-	}*/
+    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt
+        == T300[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.t300]) {
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_active = 0;
+      // ALLOW CCCH to be used
+      UE_rrc_inst[ctxt_pP->module_id].Srb0[enb_indexP].Tx_buffer.payload_size = 0;
+      rrc_ue_generate_RRCConnectionRequest (ctxt_pP, enb_indexP);
       VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
-      return RRC_OK;
+      return (RRC_ConnSetup_failed);
     }
 
-    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active == 1) {
-      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N311_cnt
-          == N311[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.n311]) {
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active = 0;
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N311_cnt = 0;
-      }
-
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt % 10) == 0) {
-        LOG_D(RRC, "[UE %d] Frame %d T310 Count %d ms\n", ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt);
-      }
-
-      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt    == T310[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.t310]) {
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active = 0;
-        rrc_t310_expiration (ctxt_pP, enb_indexP);
-        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
-	LOG_I(RRC,"Returning RRC_PHY_RESYNCH: T310 expired\n"); 
-        return RRC_PHY_RESYNCH;
-      }
+    UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt++;
+  }
 
-      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt++;
+  if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].SIStatus&2)>0) {
+    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N310_cnt
+        == N310[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.n310]) {
+      LOG_I(RRC,"Activating T310\n");
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active = 1;
     }
+  } else { // in case we have not received SIB2 yet
+    /*      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N310_cnt == 100) {
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N310_cnt = 0;
 
-    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_active==1) {
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt % 10) == 0)
-        LOG_D(RRC,"[UE %d][RAPROC] Frame %d T304 Count %d ms\n",ctxt_pP->module_id,ctxt_pP->frame,
-              UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt);
+    }*/
+    VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
+    return RRC_OK;
+  }
 
-      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt == 0) {
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_active = 0;
-        UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag = 1;
-        LOG_E(RRC,"[UE %d] Handover failure..initiating connection re-establishment procedure... \n",
-              ctxt_pP->module_id);
-        //Implement 36.331, section 5.3.5.6 here
-        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
-        return(RRC_Handover_failed);
-      }
+  if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active == 1) {
+    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N311_cnt
+        == N311[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.n311]) {
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active = 0;
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N311_cnt = 0;
+    }
 
-      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt--;
+    if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt % 10) == 0) {
+      LOG_D(RRC, "[UE %d] Frame %d T310 Count %d ms\n", ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt);
     }
 
-    // Layer 3 filtering of RRC measurements
-    if (UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[0] != NULL) {
-      ue_meas_filtering(ctxt_pP,enb_indexP);
+    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt    == T310[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.t310]) {
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active = 0;
+      rrc_t310_expiration (ctxt_pP, enb_indexP);
+      VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
+      LOG_I(RRC,"Returning RRC_PHY_RESYNCH: T310 expired\n");
+      return RRC_PHY_RESYNCH;
     }
 
-    ue_measurement_report_triggering(ctxt_pP,enb_indexP);
+    UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt++;
+  }
 
-    if (UE_rrc_inst[ctxt_pP->module_id].Info[0].handoverTarget > 0) {
-      LOG_I(RRC,"[UE %d] Frame %d : RRC handover initiated\n", ctxt_pP->module_id, ctxt_pP->frame);
-    }
+  if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_active==1) {
+    if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt % 10) == 0)
+      LOG_D(RRC,"[UE %d][RAPROC] Frame %d T304 Count %d ms\n",ctxt_pP->module_id,ctxt_pP->frame,
+            UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt);
 
-    if((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].State == RRC_HO_EXECUTION)   &&
-        (UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId != 0xFF)) {
-      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].State= RRC_IDLE;
+    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt == 0) {
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_active = 0;
+      UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag = 1;
+      LOG_E(RRC,"[UE %d] Handover failure..initiating connection re-establishment procedure... \n",
+            ctxt_pP->module_id);
+      //Implement 36.331, section 5.3.5.6 here
       VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
-      return(RRC_HO_STARTED);
+      return(RRC_Handover_failed);
     }
 
+    UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt--;
+  }
+
+  // Layer 3 filtering of RRC measurements
+  if (UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[0] != NULL) {
+    ue_meas_filtering(ctxt_pP,enb_indexP);
+  }
+
+  ue_measurement_report_triggering(ctxt_pP,enb_indexP);
+
+  if (UE_rrc_inst[ctxt_pP->module_id].Info[0].handoverTarget > 0) {
+    LOG_I(RRC,"[UE %d] Frame %d : RRC handover initiated\n", ctxt_pP->module_id, ctxt_pP->frame);
+  }
+
+  if((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].State == RRC_HO_EXECUTION)   &&
+      (UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId != 0xFF)) {
+    UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].State= RRC_IDLE;
+    VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
+    return(RRC_HO_STARTED);
+  }
+
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
   return (RRC_OK);
 }
diff --git a/openair2/RRC/LITE/rrc_eNB.c b/openair2/RRC/LITE/rrc_eNB.c
index 9faa686ef6532afafa413a9c5f4ae633940dcff7..a22698654bb2dea939b2c3ce1f0b7b5ca14f8d54 100644
--- a/openair2/RRC/LITE/rrc_eNB.c
+++ b/openair2/RRC/LITE/rrc_eNB.c
@@ -105,7 +105,7 @@ extern EMULATION_VARS              *Emul_vars;
 extern eNB_MAC_INST                *eNB_mac_inst;
 extern UE_MAC_INST                 *UE_mac_inst;
 #ifdef BIGPHYSAREA
-extern void*                        bigphys_malloc(int);
+extern void                        *bigphys_malloc(int);
 #endif
 
 extern uint16_t                     two_tier_hexagonal_cellIds[7];
@@ -114,30 +114,30 @@ mui_t                               rrc_eNB_mui = 0;
 
 void
 openair_rrc_on(
-  const protocol_ctxt_t* const ctxt_pP
+  const protocol_ctxt_t *const ctxt_pP
 )
 //-----------------------------------------------------------------------------
 {
   int            CC_id;
+  LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" ENB:OPENAIR RRC IN....\n",
+        PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
 
-    LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" ENB:OPENAIR RRC IN....\n",
-          PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
-    for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
-      rrc_config_buffer (&RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SI, BCCH, 1);
-      RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SI.Active = 1;
-      rrc_config_buffer (&RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0, CCCH, 1);
-      RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Active = 1;
-    }
+  for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
+    rrc_config_buffer (&RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SI, BCCH, 1);
+    RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SI.Active = 1;
+    rrc_config_buffer (&RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0, CCCH, 1);
+    RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Active = 1;
+  }
 }
 
 //-----------------------------------------------------------------------------
 static void
 init_SI(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const int              CC_id
 #if defined(ENABLE_ITTI)
   ,
-  RrcConfigurationReq * configuration
+  RrcConfigurationReq *configuration
 #endif
 )
 //-----------------------------------------------------------------------------
@@ -145,14 +145,11 @@ init_SI(
 #if defined(Rel10) || defined(Rel14)
   int                                 i;
 #endif
-
 #ifdef Rel14
   SystemInformationBlockType1_v1310_IEs_t *sib1_v13ext=(SystemInformationBlockType1_v1310_IEs_t *)NULL;
 #endif
-
   LOG_D(RRC,"%s()\n\n\n\n",__FUNCTION__);
-
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].MIB = (uint8_t*) malloc16(4);
+  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].MIB = (uint8_t *) malloc16(4);
   // copy basic parameters
   RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId      = configuration->Nid_cell[CC_id];
   RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB           = configuration->nb_antenna_ports[CC_id];
@@ -162,84 +159,74 @@ init_SI(
 #ifdef Rel14
   RC.rrc[ctxt_pP->module_id]->carrier[CC_id].pbch_repetition = configuration->pbch_repetition[CC_id];
 #endif
-  LOG_I(RRC, "Configuring MIB (N_RB_DL %d,phich_Resource %d,phich_Duration %d)\n", 
-	(int)configuration->N_RB_DL[CC_id],
-	(int)configuration->phich_resource[CC_id],
-	(int)configuration->phich_duration[CC_id]);
+  LOG_I(RRC, "Configuring MIB (N_RB_DL %d,phich_Resource %d,phich_Duration %d)\n",
+        (int)configuration->N_RB_DL[CC_id],
+        (int)configuration->phich_resource[CC_id],
+        (int)configuration->phich_duration[CC_id]);
   do_MIB(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],
 #ifdef ENABLE_ITTI
-	 configuration->N_RB_DL[CC_id],
-	 configuration->phich_resource[CC_id],
-	 configuration->phich_duration[CC_id]
+         configuration->N_RB_DL[CC_id],
+         configuration->phich_resource[CC_id],
+         configuration->phich_duration[CC_id]
 #else
-	 50,0,0
+         50,0,0
 #endif
-	 ,0);
-  
-
+         ,0);
   RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 = 0;
   RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 = 0;
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB1 = (uint8_t*) malloc16(32);
-
+  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB1 = (uint8_t *) malloc16(32);
   AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB1!=NULL,PROTOCOL_RRC_CTXT_FMT" init_SI: FATAL, no memory for SIB1 allocated\n",
-	      PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
+              PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
   RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 = do_SIB1(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],ctxt_pP->module_id,CC_id
 #if defined(ENABLE_ITTI)
-								   , configuration
+      , configuration
 #endif
-								   );
-
+                                                                  );
   AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 != 255,"FATAL, RC.rrc[enb_mod_idP].carrier[CC_id].sizeof_SIB1 == 255");
-
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB23 = (uint8_t*) malloc16(64);
+  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB23 = (uint8_t *) malloc16(64);
   AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB23!=NULL,"cannot allocate memory for SIB");
   RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 = do_SIB23(
-								     ctxt_pP->module_id,
-								     
-								     CC_id
+        ctxt_pP->module_id,
+        CC_id
 #if defined(ENABLE_ITTI)
-								     , configuration
+        , configuration
 #endif
-								     );
-
+      );
   AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 != 255,"FATAL, RC.rrc[mod].carrier[CC_id].sizeof_SIB23 == 255");
-  
-
   LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" SIB2/3 Contents (partial)\n",
-	PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
+        PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
   LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.n_SB = %ld\n",
-	PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
-	pusch_ConfigBasic.n_SB);
+        PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+        RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
+        pusch_ConfigBasic.n_SB);
   LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.hoppingMode = %ld\n",
-	PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
-	pusch_ConfigBasic.hoppingMode);
+        PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+        RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
+        pusch_ConfigBasic.hoppingMode);
   LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.pusch_HoppingOffset = %ld\n",
-	PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
-	pusch_ConfigBasic.pusch_HoppingOffset);
+        PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+        RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
+        pusch_ConfigBasic.pusch_HoppingOffset);
   LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.enable64QAM = %d\n",
-	PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	(int)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
-	pusch_ConfigBasic.enable64QAM);
+        PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+        (int)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
+        pusch_ConfigBasic.enable64QAM);
   LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.groupHoppingEnabled = %d\n",
-	PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	(int)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
-	ul_ReferenceSignalsPUSCH.groupHoppingEnabled);
+        PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+        (int)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
+        ul_ReferenceSignalsPUSCH.groupHoppingEnabled);
   LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.groupAssignmentPUSCH = %ld\n",
-	PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
-	ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH);
+        PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+        RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
+        ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH);
   LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.sequenceHoppingEnabled = %d\n",
-	PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	(int)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
-	ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled);
+        PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+        (int)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
+        ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled);
   LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.cyclicShift  = %ld\n",
-	PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
-	ul_ReferenceSignalsPUSCH.cyclicShift);
-  
+        PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+        RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
+        ul_ReferenceSignalsPUSCH.cyclicShift);
 #if defined(Rel10) || defined(Rel14)
 
   if (RC.rrc[ctxt_pP->module_id]->carrier[CC_id].MBMS_flag > 0) {
@@ -247,105 +234,104 @@ init_SI(
       // SIB 2
       //   LOG_D(RRC, "[eNB %d] mbsfn_SubframeConfigList.list.count = %ld\n", enb_mod_idP, RC.rrc[enb_mod_idP].sib2->mbsfn_SubframeConfigList->list.count);
       LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" SIB13 contents for MBSFN subframe allocation %d/%d(partial)\n",
-	    PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	    i,
-	    RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.count);
+            PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+            i,
+            RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.count);
       LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" mbsfn_Subframe_pattern is  = %x\n",
-	    PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	    RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[0] >> 0);
+            PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+            RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[0] >> 0);
       LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" radioframe_allocation_period  = %ld (just index number, not the real value)\n",
-	    PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	    RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.array[i]->radioframeAllocationPeriod);   // need to display the real value, using array of char (like in dumping SIB2)
+            PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+            RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.array[i]->radioframeAllocationPeriod);   // need to display the real value, using array of char (like in dumping SIB2)
       LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" radioframe_allocation_offset  = %ld\n",
-	    PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	    RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.array[i]->radioframeAllocationOffset);
+            PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+            RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.array[i]->radioframeAllocationOffset);
     }
-    
+
     //   SIB13
     for (i = 0; i < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.count; i++) {
       LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" SIB13 contents for MBSFN sync area %d/%d (partial)\n",
-	    PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	    i,
-	    RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.count);
+            PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+            i,
+            RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.count);
       LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" MCCH Repetition Period: %ld (just index number, not real value)\n",
-	    PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	    RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.array[i]->mcch_Config_r9.mcch_RepetitionPeriod_r9);
+            PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+            RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.array[i]->mcch_Config_r9.mcch_RepetitionPeriod_r9);
       LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" MCCH Offset: %ld\n",
-	    PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
-	    RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.array[i]->mcch_Config_r9.mcch_Offset_r9);
+            PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
+            RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.array[i]->mcch_Config_r9.mcch_Offset_r9);
     }
   }
-  else memset((void*)&RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13,0,sizeof(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13));
-#endif
+  else memset((void *)&RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13,0,sizeof(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13));
 
+#endif
   LOG_D(RRC,
-	PROTOCOL_RRC_CTXT_FMT" RRC_UE --- MAC_CONFIG_REQ (SIB1.tdd & SIB2 params) ---> MAC_UE\n",
-	PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
-
+        PROTOCOL_RRC_CTXT_FMT" RRC_UE --- MAC_CONFIG_REQ (SIB1.tdd & SIB2 params) ---> MAC_UE\n",
+        PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
 #ifdef Rel14
-  if ((RC.rrc[ctxt_pP->module_id]->carrier[CC_id].mib.message.schedulingInfoSIB1_BR_r13>0) && 
+
+  if ((RC.rrc[ctxt_pP->module_id]->carrier[CC_id].mib.message.schedulingInfoSIB1_BR_r13>0) &&
       (RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR!=NULL)) {
-      AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension!=NULL,
-		  "sib2_br->nonCriticalExtension is null (v8.9)\n");
-      AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension!=NULL,
-		  "sib2_br->nonCriticalExtension is null (v9.2)\n");
-      AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL,
-		  "sib2_br->nonCriticalExtension is null (v11.3)\n");
-      AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL,
-		  "sib2_br->nonCriticalExtension is null (v12.5)\n");
-      AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL,
-		  "sib2_br->nonCriticalExtension is null (v13.10)\n");
-      sib1_v13ext = RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension;
+    AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension!=NULL,
+                "sib2_br->nonCriticalExtension is null (v8.9)\n");
+    AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension!=NULL,
+                "sib2_br->nonCriticalExtension is null (v9.2)\n");
+    AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL,
+                "sib2_br->nonCriticalExtension is null (v11.3)\n");
+    AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL,
+                "sib2_br->nonCriticalExtension is null (v12.5)\n");
+    AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL,
+                "sib2_br->nonCriticalExtension is null (v13.10)\n");
+    sib1_v13ext = RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension;
   }
-#endif
 
+#endif
   LOG_D(RRC, "About to call rrc_mac_config_req_eNB\n");
-
   rrc_mac_config_req_eNB(ctxt_pP->module_id, CC_id,
-			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId,
-			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB,
-			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Ncp,
-			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1->freqBandIndicator,
-			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].dl_CarrierFreq,
+                         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId,
+                         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB,
+                         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Ncp,
+                         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1->freqBandIndicator,
+                         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].dl_CarrierFreq,
 #ifdef Rel14
-			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].pbch_repetition,
+                         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].pbch_repetition,
 #endif
-			 0, // rnti
-			 (BCCH_BCH_Message_t *)
-			 &RC.rrc[ctxt_pP->module_id]->carrier[CC_id].mib,
-			 (RadioResourceConfigCommonSIB_t *) &
-			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon,
+                         0, // rnti
+                         (BCCH_BCH_Message_t *)
+                         &RC.rrc[ctxt_pP->module_id]->carrier[CC_id].mib,
+                         (RadioResourceConfigCommonSIB_t *) &
+                         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon,
 #if defined(Rel14)
-			 (RadioResourceConfigCommonSIB_t *) &
-			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2_BR->radioResourceConfigCommon,
+                         (RadioResourceConfigCommonSIB_t *) &
+                         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2_BR->radioResourceConfigCommon,
 #endif
-			 (struct PhysicalConfigDedicated *)NULL,
+                         (struct PhysicalConfigDedicated *)NULL,
 #if defined(Rel10) || defined(Rel14)
-			 (SCellToAddMod_r10_t *)NULL,
-			 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-			 (MeasObjectToAddMod_t **) NULL,
-			 (MAC_MainConfig_t *) NULL, 0,
-			 (struct LogicalChannelConfig *)NULL,
-			 (MeasGapConfig_t *) NULL,
-			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1->tdd_Config,
-			 NULL,
-			 &RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1->schedulingInfoList,
-			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].ul_CarrierFreq,
-			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->freqInfo.ul_Bandwidth,
-			 &RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->freqInfo.additionalSpectrumEmission,
-			 (MBSFN_SubframeConfigList_t*) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList
+                         (SCellToAddMod_r10_t *)NULL,
+                         //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+                         (MeasObjectToAddMod_t **) NULL,
+                         (MAC_MainConfig_t *) NULL, 0,
+                         (struct LogicalChannelConfig *)NULL,
+                         (MeasGapConfig_t *) NULL,
+                         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1->tdd_Config,
+                         NULL,
+                         &RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1->schedulingInfoList,
+                         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].ul_CarrierFreq,
+                         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->freqInfo.ul_Bandwidth,
+                         &RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->freqInfo.additionalSpectrumEmission,
+                         (MBSFN_SubframeConfigList_t *) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList
 #if defined(Rel10) || defined(Rel14)
-			 ,
-			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].MBMS_flag,
-			 (MBSFN_AreaInfoList_r9_t*) & RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9,
-			 (PMCH_InfoList_r9_t *) NULL
+                         ,
+                         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].MBMS_flag,
+                         (MBSFN_AreaInfoList_r9_t *) & RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9,
+                         (PMCH_InfoList_r9_t *) NULL
 #endif
 #ifdef Rel14
-			 , 
-			 sib1_v13ext
+                         ,
+                         sib1_v13ext
 #endif
-			 );
+                        );
 }
 
 #if defined(Rel10) || defined(Rel14)
@@ -357,92 +343,81 @@ init_MCCH(
 )
 //-----------------------------------------------------------------------------
 {
-
   int                                 sync_area = 0;
   // initialize RRC_eNB_INST MCCH entry
   RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE =
-    malloc(RC.rrc[enb_mod_idP]->carrier[CC_id].num_mbsfn_sync_area * sizeof(uint8_t*));
+    malloc(RC.rrc[enb_mod_idP]->carrier[CC_id].num_mbsfn_sync_area * sizeof(uint8_t *));
 
   for (sync_area = 0; sync_area < RC.rrc[enb_mod_idP]->carrier[CC_id].num_mbsfn_sync_area; sync_area++) {
-
     RC.rrc[enb_mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[sync_area] = 0;
     RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE[sync_area] = (uint8_t *) malloc16(32);
-
     AssertFatal(RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE[sync_area] != NULL,
-		"[eNB %d]init_MCCH: FATAL, no memory for MCCH MESSAGE allocated \n", enb_mod_idP);
+                "[eNB %d]init_MCCH: FATAL, no memory for MCCH MESSAGE allocated \n", enb_mod_idP);
     RC.rrc[enb_mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[sync_area] = do_MBSFNAreaConfig(enb_mod_idP,
-											    sync_area,
-											    (uint8_t *)RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE[sync_area],
-											    &RC.rrc[enb_mod_idP]->carrier[CC_id].mcch,
-											    &RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message);
-    
+        sync_area,
+        (uint8_t *)RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE[sync_area],
+        &RC.rrc[enb_mod_idP]->carrier[CC_id].mcch,
+        &RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message);
     LOG_I(RRC, "mcch message pointer %p for sync area %d \n",
-	  RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE[sync_area],
-	  sync_area);
+          RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE[sync_area],
+          sync_area);
     LOG_D(RRC, "[eNB %d] MCCH_MESSAGE  contents for Sync Area %d (partial)\n", enb_mod_idP, sync_area);
     LOG_D(RRC, "[eNB %d] CommonSF_AllocPeriod_r9 %ld\n", enb_mod_idP,
-	  RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->commonSF_AllocPeriod_r9);
+          RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->commonSF_AllocPeriod_r9);
     LOG_D(RRC,
-	  "[eNB %d] CommonSF_Alloc_r9.list.count (number of MBSFN Subframe Pattern) %d\n",
-	  enb_mod_idP, RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->commonSF_Alloc_r9.list.count);
+          "[eNB %d] CommonSF_Alloc_r9.list.count (number of MBSFN Subframe Pattern) %d\n",
+          enb_mod_idP, RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->commonSF_Alloc_r9.list.count);
     LOG_D(RRC, "[eNB %d] MBSFN Subframe Pattern: %02x (in hex)\n",
-	  enb_mod_idP,
-	  RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->commonSF_Alloc_r9.list.array[0]->subframeAllocation.
-	  choice.oneFrame.buf[0]);
-    
+          enb_mod_idP,
+          RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->commonSF_Alloc_r9.list.array[0]->subframeAllocation.
+          choice.oneFrame.buf[0]);
     AssertFatal(RC.rrc[enb_mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[sync_area] != 255,
-		"RC.rrc[enb_mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[sync_area] == 255");
+                "RC.rrc[enb_mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[sync_area] == 255");
     RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESS[sync_area].Active = 1;
   }
-  
 
   //Set the RC.rrc[enb_mod_idP]->MCCH_MESS.Active to 1 (allow to  transfer MCCH message RRC->MAC in function mac_rrc_data_req)
-
   // ??Configure MCCH logical channel
   // call mac_config_req with appropriate structure from ASN.1 description
-
-
   //  LOG_I(RRC, "DUY: serviceID is %d\n",RC.rrc[enb_mod_idP]->mcch_message->pmch_InfoList_r9.list.array[0]->mbms_SessionInfoList_r9.list.array[0]->tmgi_r9.serviceId_r9.buf[2]);
   //  LOG_I(RRC, "DUY: session ID is %d\n",RC.rrc[enb_mod_idP]->mcch_message->pmch_InfoList_r9.list.array[0]->mbms_SessionInfoList_r9.list.array[0]->sessionId_r9->buf[0]);
   rrc_mac_config_req_eNB(enb_mod_idP, CC_id,
-			 0,0,0,0,0,
-#ifdef Rel14 
-			 0,
+                         0,0,0,0,0,
+#ifdef Rel14
+                         0,
 #endif
-			 0,//rnti
-			 (BCCH_BCH_Message_t *)NULL,
-			 (RadioResourceConfigCommonSIB_t *) NULL,
+                         0,//rnti
+                         (BCCH_BCH_Message_t *)NULL,
+                         (RadioResourceConfigCommonSIB_t *) NULL,
 #ifdef Rel14
-			 (RadioResourceConfigCommonSIB_t *) NULL,
+                         (RadioResourceConfigCommonSIB_t *) NULL,
 #endif
-			 (struct PhysicalConfigDedicated *)NULL,
+                         (struct PhysicalConfigDedicated *)NULL,
 #if defined(Rel10) || defined(Rel14)
-			 (SCellToAddMod_r10_t *)NULL,
-			 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-			 (MeasObjectToAddMod_t **) NULL,
-			 (MAC_MainConfig_t *) NULL,
-			 0,
-			 (struct LogicalChannelConfig *)NULL,
-			 (MeasGapConfig_t *) NULL,
-			 (TDD_Config_t *) NULL,
-			 (MobilityControlInfo_t *)NULL, 
-			 (SchedulingInfoList_t *) NULL, 
-			 0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
+                         (SCellToAddMod_r10_t *)NULL,
+                         //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+                         (MeasObjectToAddMod_t **) NULL,
+                         (MAC_MainConfig_t *) NULL,
+                         0,
+                         (struct LogicalChannelConfig *)NULL,
+                         (MeasGapConfig_t *) NULL,
+                         (TDD_Config_t *) NULL,
+                         (MobilityControlInfo_t *)NULL,
+                         (SchedulingInfoList_t *) NULL,
+                         0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
 #if defined(Rel10) || defined(Rel14)
-			 ,
-			 0,
-			 (MBSFN_AreaInfoList_r9_t *) NULL,
-			 (PMCH_InfoList_r9_t *) & (RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9)
+                         ,
+                         0,
+                         (MBSFN_AreaInfoList_r9_t *) NULL,
+                         (PMCH_InfoList_r9_t *) & (RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9)
 #   endif
 #   ifdef Rel14
-			 ,
-			 (SystemInformationBlockType1_v1310_IEs_t *)NULL
+                         ,
+                         (SystemInformationBlockType1_v1310_IEs_t *)NULL
 #   endif
-			 );
-  
+                        );
   //LOG_I(RRC,"DUY: lcid after rrc_mac_config_req is %02d\n",RC.rrc[enb_mod_idP]->mcch_message->pmch_InfoList_r9.list.array[0]->mbms_SessionInfoList_r9.list.array[0]->logicalChannelIdentity_r9);
-
 }
 
 //-----------------------------------------------------------------------------
@@ -458,13 +433,11 @@ static void init_MBMS(
 
   if (RC.rrc[enb_mod_idP]->carrier[CC_id].MBMS_flag > 0) {
     PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, enb_mod_idP, ENB_FLAG_YES, NOT_A_RNTI, frameP, 0,enb_mod_idP);
-
     LOG_D(RRC, "[eNB %d] Frame %d : Radio Bearer config request for MBMS\n", enb_mod_idP, frameP);   //check the lcid
     // Configuring PDCP and RLC for MBMS Radio Bearer
-
     rrc_pdcp_config_asn1_req(&ctxt,
-                             (SRB_ToAddModList_t  *)NULL,  // SRB_ToAddModList
-                             (DRB_ToAddModList_t  *)NULL,  // DRB_ToAddModList
+                             (SRB_ToAddModList_t *)NULL,   // SRB_ToAddModList
+                             (DRB_ToAddModList_t *)NULL,   // DRB_ToAddModList
                              (DRB_ToReleaseList_t *)NULL,
                              0,     // security mode
                              NULL,  // key rrc encryption
@@ -474,13 +447,11 @@ static void init_MBMS(
                              , &(RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9)
 #   endif
                              ,NULL);
-
     rrc_rlc_config_asn1_req(&ctxt,
                             NULL, // SRB_ToAddModList
                             NULL,   // DRB_ToAddModList
                             NULL,   // DRB_ToReleaseList
                             &(RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9));
-
     //rrc_mac_config_req();
   }
 }
@@ -533,14 +504,14 @@ rrc_eNB_get_next_transaction_identifier(
 
 //-----------------------------------------------------------------------------
 // return the ue context if there is already an UE with ue_identityP, NULL otherwise
-static struct rrc_eNB_ue_context_s*
+static struct rrc_eNB_ue_context_s *
 rrc_eNB_ue_context_random_exist(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const uint64_t               ue_identityP
 )
 //-----------------------------------------------------------------------------
 {
-  struct rrc_eNB_ue_context_s*        ue_context_p = NULL;
+  struct rrc_eNB_ue_context_s        *ue_context_p = NULL;
   RB_FOREACH(ue_context_p, rrc_ue_tree_s, &(RC.rrc[ctxt_pP->module_id]->rrc_ue_head)) {
     if (ue_context_p->ue_context.random_ue_identity == ue_identityP)
       return ue_context_p;
@@ -549,47 +520,48 @@ rrc_eNB_ue_context_random_exist(
 }
 //-----------------------------------------------------------------------------
 // return the ue context if there is already an UE with the same S-TMSI(MMEC+M-TMSI), NULL otherwise
-static struct rrc_eNB_ue_context_s*
+static struct rrc_eNB_ue_context_s *
 rrc_eNB_ue_context_stmsi_exist(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const mme_code_t             mme_codeP,
   const m_tmsi_t               m_tmsiP
 )
 //-----------------------------------------------------------------------------
 {
-  struct rrc_eNB_ue_context_s*        ue_context_p = NULL;
+  struct rrc_eNB_ue_context_s        *ue_context_p = NULL;
   RB_FOREACH(ue_context_p, rrc_ue_tree_s, &(RC.rrc[ctxt_pP->module_id]->rrc_ue_head)) {
     LOG_I(RRC,"checking for UE S-TMSI %x, mme %x (%p): rnti %x",
-	  m_tmsiP, mme_codeP, ue_context_p, 
-	  ue_context_p->ue_context.rnti);
+          m_tmsiP, mme_codeP, ue_context_p,
+          ue_context_p->ue_context.rnti);
+
     if (ue_context_p->ue_context.Initialue_identity_s_TMSI.presence == TRUE) {
       printf("=> S-TMSI %x, MME %x\n",
-	    ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi,
-	    ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code);
+             ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi,
+             ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code);
+
       if (ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi == m_tmsiP)
         if (ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code == mme_codeP)
           return ue_context_p;
     }
     else
       printf("\n");
-
   }
   return NULL;
 }
 
 //-----------------------------------------------------------------------------
 // return a new ue context structure if ue_identityP, ctxt_pP->rnti not found in collection
-static struct rrc_eNB_ue_context_s*
+static struct rrc_eNB_ue_context_s *
 rrc_eNB_get_next_free_ue_context(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const uint64_t               ue_identityP
 )
 //-----------------------------------------------------------------------------
 {
-  struct rrc_eNB_ue_context_s*        ue_context_p = NULL;
+  struct rrc_eNB_ue_context_s        *ue_context_p = NULL;
   ue_context_p = rrc_eNB_get_ue_context(
-					RC.rrc[ctxt_pP->module_id],
-					ctxt_pP->rnti);
+                   RC.rrc[ctxt_pP->module_id],
+                   ctxt_pP->rnti);
 
   if (ue_context_p == NULL) {
 #if 0
@@ -622,7 +594,6 @@ rrc_eNB_get_next_free_ue_context(
           PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
           ue_context_p->local_uid);
     return ue_context_p;
-
   } else {
     LOG_E(RRC,
           PROTOCOL_RRC_CTXT_UE_FMT" Cannot create new UE context, already exist\n",
@@ -641,14 +612,15 @@ void rrc_eNB_emulation_notify_ue_module_id(
   const uint8_t     cell_identity_byte3P)
 {
   module_id_t                         enb_module_id;
-  struct rrc_eNB_ue_context_s*        ue_context_p = NULL;
+  struct rrc_eNB_ue_context_s        *ue_context_p = NULL;
   int                                 CC_id;
 
   // find enb_module_id
   for (enb_module_id = 0; enb_module_id < NUMBER_OF_eNB_MAX; enb_module_id++) {
-    if(enb_module_id>0){ /*FIX LATER*/
+    if(enb_module_id>0) { /*FIX LATER*/
       return;
     }
+
     for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
       if (&RC.rrc[enb_module_id]->carrier[CC_id].sib1 != NULL) {
         if (
@@ -670,6 +642,7 @@ void rrc_eNB_emulation_notify_ue_module_id(
         }
       }
     }
+
     oai_emulation.info.eNB_ue_module_id_to_rnti[enb_module_id][ue_module_idP] = rntiP;
   }
 
@@ -682,8 +655,8 @@ void rrc_eNB_emulation_notify_ue_module_id(
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_free_mem_UE_context(
-  const protocol_ctxt_t*               const ctxt_pP,
-  struct rrc_eNB_ue_context_s*         const ue_context_pP
+  const protocol_ctxt_t               *const ctxt_pP,
+  struct rrc_eNB_ue_context_s         *const ue_context_pP
 )
 //-----------------------------------------------------------------------------
 {
@@ -702,11 +675,11 @@ rrc_eNB_free_mem_UE_context(
     ue_context_pP->ue_context.SRB_configList = NULL;
   }
 
-  for(i = 0;i < RRC_TRANSACTION_IDENTIFIER_NUMBER;i++){
-      if (ue_context_pP->ue_context.SRB_configList2[i]) {
-          free(ue_context_pP->ue_context.SRB_configList2[i]);
-          ue_context_pP->ue_context.SRB_configList2[i] = NULL;
-      }
+  for(i = 0; i < RRC_TRANSACTION_IDENTIFIER_NUMBER; i++) {
+    if (ue_context_pP->ue_context.SRB_configList2[i]) {
+      free(ue_context_pP->ue_context.SRB_configList2[i]);
+      ue_context_pP->ue_context.SRB_configList2[i] = NULL;
+    }
   }
 
   if (ue_context_pP->ue_context.DRB_configList) {
@@ -714,15 +687,16 @@ rrc_eNB_free_mem_UE_context(
     ue_context_pP->ue_context.DRB_configList = NULL;
   }
 
-  for(i = 0;i < RRC_TRANSACTION_IDENTIFIER_NUMBER;i++){
-      if (ue_context_pP->ue_context.DRB_configList2[i]) {
-          free(ue_context_pP->ue_context.DRB_configList2[i]);
-          ue_context_pP->ue_context.DRB_configList2[i] = NULL;
-      }
-      if (ue_context_pP->ue_context.DRB_Release_configList2[i]) {
-          free(ue_context_pP->ue_context.DRB_Release_configList2[i]);
-          ue_context_pP->ue_context.DRB_Release_configList2[i] = NULL;
-      }
+  for(i = 0; i < RRC_TRANSACTION_IDENTIFIER_NUMBER; i++) {
+    if (ue_context_pP->ue_context.DRB_configList2[i]) {
+      free(ue_context_pP->ue_context.DRB_configList2[i]);
+      ue_context_pP->ue_context.DRB_configList2[i] = NULL;
+    }
+
+    if (ue_context_pP->ue_context.DRB_Release_configList2[i]) {
+      free(ue_context_pP->ue_context.DRB_Release_configList2[i]);
+      ue_context_pP->ue_context.DRB_Release_configList2[i] = NULL;
+    }
   }
 
   memset(ue_context_pP->ue_context.DRB_active, 0, sizeof(ue_context_pP->ue_context.DRB_active));
@@ -761,14 +735,14 @@ rrc_eNB_free_mem_UE_context(
     ue_context_pP->ue_context.mac_MainConfig = NULL;
   }
 
-/*  if (ue_context_pP->ue_context.measGapConfig) {
-    ASN_STRUCT_FREE(asn_DEF_MeasGapConfig, ue_context_pP->ue_context.measGapConfig);
-    ue_context_pP->ue_context.measGapConfig = NULL;
-  }*/
-    if (ue_context_pP->ue_context.handover_info) {
-      ASN_STRUCT_FREE(asn_DEF_Handover, ue_context_pP->ue_context.handover_info);
-      ue_context_pP->ue_context.handover_info = NULL;
-    }
+  /*  if (ue_context_pP->ue_context.measGapConfig) {
+      ASN_STRUCT_FREE(asn_DEF_MeasGapConfig, ue_context_pP->ue_context.measGapConfig);
+      ue_context_pP->ue_context.measGapConfig = NULL;
+    }*/
+  if (ue_context_pP->ue_context.handover_info) {
+    ASN_STRUCT_FREE(asn_DEF_Handover, ue_context_pP->ue_context.handover_info);
+    ue_context_pP->ue_context.handover_info = NULL;
+  }
 
   //SRB_INFO                           SI;
   //SRB_INFO                           Srb0;
@@ -811,11 +785,9 @@ rrc_eNB_free_mem_UE_context(
 //-----------------------------------------------------------------------------
 // should be called when UE is lost by eNB
 void
-rrc_eNB_free_UE(const module_id_t enb_mod_idP,const struct rrc_eNB_ue_context_s*        const ue_context_pP)
+rrc_eNB_free_UE(const module_id_t enb_mod_idP,const struct rrc_eNB_ue_context_s        *const ue_context_pP)
 //-----------------------------------------------------------------------------
 {
-
-
   protocol_ctxt_t                     ctxt;
 #if !defined(ENABLE_USE_MME)
   module_id_t                         ue_module_id;
@@ -823,14 +795,14 @@ rrc_eNB_free_UE(const module_id_t enb_mod_idP,const struct rrc_eNB_ue_context_s*
   (void)ue_module_id;
 #endif
   rnti_t rnti = ue_context_pP->ue_context.rnti;
-  int i, j , CC_id, pdu_number;
+  int i, j, CC_id, pdu_number;
   LTE_eNB_ULSCH_t *ulsch = NULL;
   LTE_eNB_DLSCH_t *dlsch = NULL;
   nfapi_ul_config_request_body_t *ul_req_tmp = NULL;
   PHY_VARS_eNB *eNB_PHY = NULL;
   eNB_MAC_INST *eNB_MAC = RC.mac[enb_mod_idP];
-
   AssertFatal(enb_mod_idP < NB_eNB_INST, "eNB inst invalid (%d/%d) for UE %x!", enb_mod_idP, NB_eNB_INST, rnti);
+
   /*  ue_context_p = rrc_eNB_get_ue_context(
                    &RC.rrc[enb_mod_idP],
                    rntiP
@@ -839,32 +811,38 @@ rrc_eNB_free_UE(const module_id_t enb_mod_idP,const struct rrc_eNB_ue_context_s*
   if (NULL != ue_context_pP) {
     PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, enb_mod_idP, ENB_FLAG_YES, rnti, 0, 0,enb_mod_idP);
     LOG_W(RRC, "[eNB %d] Removing UE RNTI %x\n", enb_mod_idP, rnti);
-
 #if defined(ENABLE_USE_MME)
-   if( ue_context_pP->ue_context.ul_failure_timer >= 8 ) {
-	LOG_I(RRC, "[eNB %d] S1AP_UE_CONTEXT_RELEASE_REQ RNTI %x\n", enb_mod_idP, rnti);
-    rrc_eNB_send_S1AP_UE_CONTEXT_RELEASE_REQ(enb_mod_idP, ue_context_pP, S1AP_CAUSE_RADIO_NETWORK, 21); // send cause 21: connection with ue lost
-    /* From 3GPP 36300v10 p129 : 19.2.2.2.2 S1 UE Context Release Request (eNB triggered)
-     * If the E-UTRAN internal reason is a radio link failure detected in the eNB, the eNB shall wait a sufficient time before
-     *  triggering the S1 UE Context Release Request procedure
-     *  in order to allow the UE to perform the NAS recovery
-     *  procedure, see TS 23.401 [17].
-     */
-     return;
+
+    if( ue_context_pP->ue_context.ul_failure_timer >= 8 ) {
+      LOG_I(RRC, "[eNB %d] S1AP_UE_CONTEXT_RELEASE_REQ RNTI %x\n", enb_mod_idP, rnti);
+      rrc_eNB_send_S1AP_UE_CONTEXT_RELEASE_REQ(enb_mod_idP, ue_context_pP, S1AP_CAUSE_RADIO_NETWORK, 21); // send cause 21: connection with ue lost
+      /* From 3GPP 36300v10 p129 : 19.2.2.2.2 S1 UE Context Release Request (eNB triggered)
+       * If the E-UTRAN internal reason is a radio link failure detected in the eNB, the eNB shall wait a sufficient time before
+       *  triggering the S1 UE Context Release Request procedure
+       *  in order to allow the UE to perform the NAS recovery
+       *  procedure, see TS 23.401 [17].
+       */
+      return;
     }
+
 #endif
+
     for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
       eNB_PHY = RC.eNB[enb_mod_idP][CC_id];
+
       for (i=0; i<NUMBER_OF_UE_MAX; i++) {
         ulsch = eNB_PHY->ulsch[i];
-        if((ulsch != NULL) && (ulsch->rnti == rnti)){
+
+        if((ulsch != NULL) && (ulsch->rnti == rnti)) {
           LOG_I(RRC, "clean_eNb_ulsch UE %x \n", rnti);
           clean_eNb_ulsch(ulsch);
         }
       }
+
       for (i=0; i<NUMBER_OF_UE_MAX; i++) {
         dlsch = eNB_PHY->dlsch[i][0];
-        if((dlsch != NULL) && (dlsch->rnti == rnti)){
+
+        if((dlsch != NULL) && (dlsch->rnti == rnti)) {
           LOG_I(RRC, "clean_eNb_dlsch UE %x \n", rnti);
           clean_eNb_dlsch(dlsch);
         }
@@ -872,53 +850,55 @@ rrc_eNB_free_UE(const module_id_t enb_mod_idP,const struct rrc_eNB_ue_context_s*
 
       if (rrc_agent_registered[enb_mod_idP]) {
         agent_rrc_xface[enb_mod_idP]->flexran_agent_notify_ue_state_change(enb_mod_idP,
-                              rnti, PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_DEACTIVATED);
+            rnti, PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_DEACTIVATED);
       }
 
-      for(j = 0; j < 10; j++){
+      for(j = 0; j < 10; j++) {
         ul_req_tmp = &eNB_MAC->UL_req_tmp[CC_id][j].ul_config_request_body;
-        if(ul_req_tmp){
+
+        if(ul_req_tmp) {
           pdu_number = ul_req_tmp->number_of_pdus;
-          for(int pdu_index = pdu_number-1; pdu_index >= 0; pdu_index--){
-            if(ul_req_tmp->ul_config_pdu_list[pdu_index].ulsch_pdu.ulsch_pdu_rel8.rnti == rnti){
+
+          for(int pdu_index = pdu_number-1; pdu_index >= 0; pdu_index--) {
+            if(ul_req_tmp->ul_config_pdu_list[pdu_index].ulsch_pdu.ulsch_pdu_rel8.rnti == rnti) {
               LOG_I(RRC, "remove UE %x from ul_config_pdu_list %d/%d\n", rnti, pdu_index, pdu_number);
-              if(pdu_index < pdu_number -1){
+
+              if(pdu_index < pdu_number -1) {
                 memcpy(&ul_req_tmp->ul_config_pdu_list[pdu_index], &ul_req_tmp->ul_config_pdu_list[pdu_index+1], (pdu_number-1-pdu_index) * sizeof(nfapi_ul_config_request_pdu_t));
               }
+
               ul_req_tmp->number_of_pdus--;
             }
           }
         }
       }
     }
+
     rrc_mac_remove_ue(enb_mod_idP,rnti);
     rrc_rlc_remove_ue(&ctxt);
     pdcp_remove_UE(&ctxt);
-
     rrc_eNB_remove_ue_context(
       &ctxt,
       RC.rrc[enb_mod_idP],
-      (struct rrc_eNB_ue_context_s*) ue_context_pP);
+      (struct rrc_eNB_ue_context_s *) ue_context_pP);
   }
 }
 
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_process_RRCConnectionSetupComplete(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*         ue_context_pP,
-  RRCConnectionSetupComplete_r8_IEs_t * rrcConnectionSetupComplete
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t         *ue_context_pP,
+  RRCConnectionSetupComplete_r8_IEs_t *rrcConnectionSetupComplete
 )
 //-----------------------------------------------------------------------------
 {
   LOG_I(RRC,
         PROTOCOL_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel UL-DCCH, " "processing RRCConnectionSetupComplete from UE (SRB1 Active)\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-
-  ue_context_pP->ue_context.Srb1.Active=1;  
+  ue_context_pP->ue_context.Srb1.Active=1;
   T(T_ENB_RRC_CONNECTION_SETUP_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
 #if defined(ENABLE_USE_MME)
 
   if (EPC_MODE_ENABLED == 1) {
@@ -941,47 +921,41 @@ rrc_eNB_process_RRCConnectionSetupComplete(
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_generate_SecurityModeCommand(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*          const ue_context_pP
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t          *const ue_context_pP
 )
 //-----------------------------------------------------------------------------
 {
   uint8_t                             buffer[100];
   uint8_t                             size;
-
   T(T_ENB_RRC_SECURITY_MODE_COMMAND, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
   size = do_SecurityModeCommand(
            ctxt_pP,
            buffer,
            rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id),
            ue_context_pP->ue_context.ciphering_algorithm,
            ue_context_pP->ue_context.integrity_algorithm);
-
 #ifdef RRC_MSG_PRINT
   uint16_t i=0;
   LOG_F(RRC,"[MSG] RRC Security Mode Command\n");
 
   for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
+    LOG_F(RRC,"%02x ", ((uint8_t *)buffer)[i]);
   }
 
   LOG_F(RRC,"\n");
 #endif
-
   LOG_I(RRC,
         PROTOCOL_RRC_CTXT_UE_FMT" Logical Channel DL-DCCH, Generate SecurityModeCommand (bytes %d)\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
         size);
-
   LOG_D(RRC,
         PROTOCOL_RRC_CTXT_UE_FMT" --- PDCP_DATA_REQ/%d Bytes (securityModeCommand to UE MUI %d) --->[PDCP][RB %02d]\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
         size,
         rrc_eNB_mui,
         DCCH);
-
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
     MSC_RRC_UE,
@@ -992,50 +966,42 @@ rrc_eNB_generate_SecurityModeCommand(
     ue_context_pP->ue_context.rnti,
     rrc_eNB_mui,
     size);
-
   rrc_data_req(
-	       ctxt_pP,
-	       DCCH,
-	       rrc_eNB_mui++,
-	       SDU_CONFIRM_NO,
-	       size,
-	       buffer,
-	       PDCP_TRANSMISSION_MODE_CONTROL);
-
+    ctxt_pP,
+    DCCH,
+    rrc_eNB_mui++,
+    SDU_CONFIRM_NO,
+    size,
+    buffer,
+    PDCP_TRANSMISSION_MODE_CONTROL);
 }
 
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_generate_UECapabilityEnquiry(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*          const ue_context_pP
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t          *const ue_context_pP
 )
 //-----------------------------------------------------------------------------
 {
-
   uint8_t                             buffer[100];
   uint8_t                             size;
-
   T(T_ENB_RRC_UE_CAPABILITY_ENQUIRY, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
   size = do_UECapabilityEnquiry(
            ctxt_pP,
            buffer,
            rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id));
-
   LOG_I(RRC,
         PROTOCOL_RRC_CTXT_UE_FMT" Logical Channel DL-DCCH, Generate UECapabilityEnquiry (bytes %d)\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
         size);
-
   LOG_D(RRC,
         PROTOCOL_RRC_CTXT_UE_FMT" --- PDCP_DATA_REQ/%d Bytes (UECapabilityEnquiry MUI %d) --->[PDCP][RB %02d]\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
         size,
         rrc_eNB_mui,
         DCCH);
-
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
     MSC_RRC_UE,
@@ -1046,23 +1012,21 @@ rrc_eNB_generate_UECapabilityEnquiry(
     ue_context_pP->ue_context.rnti,
     rrc_eNB_mui,
     size);
-
   rrc_data_req(
-	       ctxt_pP,
-	       DCCH,
-	       rrc_eNB_mui++,
-	       SDU_CONFIRM_NO,
-	       size,
-	       buffer,
-	       PDCP_TRANSMISSION_MODE_CONTROL);
-
+    ctxt_pP,
+    DCCH,
+    rrc_eNB_mui++,
+    SDU_CONFIRM_NO,
+    size,
+    buffer,
+    PDCP_TRANSMISSION_MODE_CONTROL);
 }
 
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_generate_RRCConnectionReject(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*          const ue_context_pP,
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t          *const ue_context_pP,
   const int                    CC_id
 )
 //-----------------------------------------------------------------------------
@@ -1070,24 +1034,20 @@ rrc_eNB_generate_RRCConnectionReject(
 #ifdef RRC_MSG_PRINT
   int                                 cnt;
 #endif
-
   T(T_ENB_RRC_CONNECTION_REJECT, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
   RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size =
     do_RRCConnectionReject(ctxt_pP->module_id,
-                          (uint8_t*) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload);
-
+                           (uint8_t *) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload);
 #ifdef RRC_MSG_PRINT
   LOG_F(RRC,"[MSG] RRCConnectionReject\n");
 
   for (cnt = 0; cnt < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size; cnt++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)RC.rrc[ctxt_pP->module_id]->Srb0.Tx_buffer.Payload)[cnt]);
+    LOG_F(RRC,"%02x ", ((uint8_t *)RC.rrc[ctxt_pP->module_id]->Srb0.Tx_buffer.Payload)[cnt]);
   }
 
   LOG_F(RRC,"\n");
 #endif
-
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
     MSC_RRC_UE,
@@ -1097,7 +1057,6 @@ rrc_eNB_generate_RRCConnectionReject(
     MSC_AS_TIME_ARGS(ctxt_pP),
     ue_context_pP == NULL ? -1 : ue_context_pP->ue_context.rnti,
     RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size);
-
   LOG_I(RRC,
         PROTOCOL_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating RRCConnectionReject (bytes %d)\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
@@ -1107,8 +1066,8 @@ rrc_eNB_generate_RRCConnectionReject(
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_generate_RRCConnectionReestablishment(
-  const protocol_ctxt_t*         const ctxt_pP,
-  rrc_eNB_ue_context_t*          const ue_context_pP,
+  const protocol_ctxt_t         *const ctxt_pP,
+  rrc_eNB_ue_context_t          *const ue_context_pP,
   const int                            CC_id
 )
 //-----------------------------------------------------------------------------
@@ -1117,26 +1076,23 @@ rrc_eNB_generate_RRCConnectionReestablishment(
   SRB_ToAddModList_t                 **SRB_configList;
   SRB_ToAddMod_t                     *SRB1_config;
   int                                 cnt;
-
   T(T_ENB_RRC_CONNECTION_REESTABLISHMENT, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
   SRB_configList = &ue_context_pP->ue_context.SRB_configList;
   RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size =
     do_RRCConnectionReestablishment(ctxt_pP,
                                     ue_context_pP,
                                     CC_id,
-                                    (uint8_t*) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload,
+                                    (uint8_t *) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload,
                                     (uint8_t) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB, //at this point we do not have the UE capability information, so it can only be TM1 or TM2
                                     rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id),
                                     SRB_configList,
                                     &ue_context_pP->ue_context.physicalConfigDedicated);
-
 #ifdef RRC_MSG_PRINT
   LOG_F(RRC,"[MSG] RRCConnectionReestablishment\n");
 
   for (cnt = 0; cnt < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size; cnt++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload)[cnt]);
+    LOG_F(RRC,"%02x ", ((uint8_t *)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload)[cnt]);
   }
 
   LOG_F(RRC,"\n");
@@ -1164,38 +1120,38 @@ rrc_eNB_generate_RRCConnectionReestablishment(
               PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ  (SRB1) ---> MAC_eNB\n",
               PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
         rrc_mac_config_req_eNB(ctxt_pP->module_id,
-                           ue_context_pP->ue_context.primaryCC_id,
-                           0,0,0,0,0,
-#ifdef Rel14 
-			 0,
-#endif
-                           ctxt_pP->rnti,
-                           (BCCH_BCH_Message_t *) NULL, 
-                           (RadioResourceConfigCommonSIB_t *) NULL,
+                               ue_context_pP->ue_context.primaryCC_id,
+                               0,0,0,0,0,
+#ifdef Rel14
+                               0,
+#endif
+                               ctxt_pP->rnti,
+                               (BCCH_BCH_Message_t *) NULL,
+                               (RadioResourceConfigCommonSIB_t *) NULL,
 #ifdef Rel14
-                           (RadioResourceConfigCommonSIB_t *) NULL,
+                               (RadioResourceConfigCommonSIB_t *) NULL,
 #endif
-                           (struct PhysicalConfigDedicated* ) ue_context_pP->ue_context.physicalConfigDedicated,
+                               (struct PhysicalConfigDedicated * ) ue_context_pP->ue_context.physicalConfigDedicated,
 #if defined(Rel10) || defined(Rel14)
-                           (SCellToAddMod_r10_t *)NULL,
-                           //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-                           (MeasObjectToAddMod_t **) NULL,
-                           ue_context_pP->ue_context.mac_MainConfig,
-                           1,
-                           SRB1_logicalChannelConfig,
-                           ue_context_pP->ue_context.measGapConfig,
-                           (TDD_Config_t *) NULL,
-                           NULL,
-                           (SchedulingInfoList_t *) NULL,
-                           0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
+                               (SCellToAddMod_r10_t *)NULL,
+                               //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+                               (MeasObjectToAddMod_t **) NULL,
+                               ue_context_pP->ue_context.mac_MainConfig,
+                               1,
+                               SRB1_logicalChannelConfig,
+                               ue_context_pP->ue_context.measGapConfig,
+                               (TDD_Config_t *) NULL,
+                               NULL,
+                               (SchedulingInfoList_t *) NULL,
+                               0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
 #if defined(Rel10) || defined(Rel14)
-                           , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
+                               , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
 #endif
 #ifdef Rel14
-                           ,(SystemInformationBlockType1_v1310_IEs_t *)NULL 
+                               ,(SystemInformationBlockType1_v1310_IEs_t *)NULL
 #endif
-        );
+                              );
         break;
       }
     }
@@ -1209,18 +1165,15 @@ rrc_eNB_generate_RRCConnectionReestablishment(
                      MSC_AS_TIME_ARGS(ctxt_pP),
                      ue_context_pP->ue_context.rnti,
                      RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size);
-
-
   LOG_I(RRC,
         PROTOCOL_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating RRCConnectionReestablishment (bytes %d)\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size);
-
   // activate release timer, if RRCComplete not received after 10 frames, remove UE
   //ue_context_pP->ue_context.ue_release_timer = 1;
   // remove UE after 10 frames after RRCConnectionReestablishmentRelease is triggered
   //ue_context_pP->ue_context.ue_release_timer_thres = 100;
-    // activate release timer, if RRCComplete not received after 100 frames, remove UE
+  // activate release timer, if RRCComplete not received after 100 frames, remove UE
   int UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti);
   RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer = 1;
   // remove UE after 100 frames after RRCConnectionReestablishmentRelease is triggered
@@ -1230,25 +1183,23 @@ rrc_eNB_generate_RRCConnectionReestablishment(
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_process_RRCConnectionReestablishmentComplete(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const rnti_t reestablish_rnti,
-  rrc_eNB_ue_context_t*         ue_context_pP,
+  rrc_eNB_ue_context_t         *ue_context_pP,
   const uint8_t xid,
-  RRCConnectionReestablishmentComplete_r8_IEs_t * rrcConnectionReestablishmentComplete
+  RRCConnectionReestablishmentComplete_r8_IEs_t *rrcConnectionReestablishmentComplete
 )
 //-----------------------------------------------------------------------------
 {
   LOG_I(RRC,
         PROTOCOL_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel UL-DCCH, processing RRCConnectionReestablishmentComplete from UE (SRB1 Active)\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-
   T(T_ENB_RRC_CONNECTION_REESTABLISHMENT_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
-  DRB_ToAddModList_t*                 DRB_configList = ue_context_pP->ue_context.DRB_configList;
-  SRB_ToAddModList_t*                 SRB_configList = ue_context_pP->ue_context.SRB_configList;
-  SRB_ToAddModList_t**                SRB_configList2 = NULL;
-  DRB_ToAddModList_t**                DRB_configList2 = NULL;
+  DRB_ToAddModList_t                 *DRB_configList = ue_context_pP->ue_context.DRB_configList;
+  SRB_ToAddModList_t                 *SRB_configList = ue_context_pP->ue_context.SRB_configList;
+  SRB_ToAddModList_t                **SRB_configList2 = NULL;
+  DRB_ToAddModList_t                **DRB_configList2 = NULL;
   struct SRB_ToAddMod                *SRB2_config = NULL;
   struct DRB_ToAddMod                *DRB_config = NULL;
   int i = 0;
@@ -1276,22 +1227,23 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
   (void)dedicatedInfoNas;
   C_RNTI_t                           *cba_RNTI                         = NULL;
   uint8_t next_xid = rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id);
-
   ue_context_pP->ue_context.Status = RRC_CONNECTED;
-
   SRB_configList2 = &ue_context_pP->ue_context.SRB_configList2[xid];
+
   // get old configuration of SRB2
   if (*SRB_configList2 != NULL) {
     LOG_D(RRC, "SRB_configList2(%p) count is %d\n           SRB_configList2->list.array[0] addr is %p",
           SRB_configList2, (*SRB_configList2)->list.count,  (*SRB_configList2)->list.array[0]);
+
     for (i = 0; (i < (*SRB_configList2)->list.count) && (i < 3); i++) {
-      if ((*SRB_configList2)->list.array[i]->srb_Identity == 2 ){
+      if ((*SRB_configList2)->list.array[i]->srb_Identity == 2 ) {
         LOG_D(RRC, "get SRB2_config from (ue_context_pP->ue_context.SRB_configList2[%d])\n", xid);
         SRB2_config = (*SRB_configList2)->list.array[i];
         break;
       }
     }
   }
+
   SRB_configList2 = &ue_context_pP->ue_context.SRB_configList2[next_xid];
   DRB_configList2 = &ue_context_pP->ue_context.DRB_configList2[next_xid];
 
@@ -1299,70 +1251,71 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
     free(*SRB_configList2);
     LOG_D(RRC, "free(ue_context_pP->ue_context.SRB_configList2[%d])\n", next_xid);
   }
+
   *SRB_configList2 = CALLOC(1, sizeof(**SRB_configList2));
+
   if (SRB2_config != NULL) {
     // Add SRB2 to SRB configuration list
-
     ASN_SEQUENCE_ADD(&SRB_configList->list, SRB2_config);
     ASN_SEQUENCE_ADD(&(*SRB_configList2)->list, SRB2_config);
-
     LOG_D(RRC, "Add SRB2_config (srb_Identity:%ld) to ue_context_pP->ue_context.SRB_configList\n",
-            SRB2_config->srb_Identity);
+          SRB2_config->srb_Identity);
     LOG_D(RRC, "Add SRB2_config (srb_Identity:%ld) to ue_context_pP->ue_context.SRB_configList2[%d]\n",
-                SRB2_config->srb_Identity, next_xid);
+          SRB2_config->srb_Identity, next_xid);
   } else {
     // SRB configuration list only contains SRB1.
     LOG_W(RRC,"SRB2 configuration does not exist in SRB configuration list\n");
   }
 
-
-
   if (*DRB_configList2) {
     free(*DRB_configList2);
     LOG_D(RRC, "free(ue_context_pP->ue_context.DRB_configList2[%d])\n", next_xid);
   }
+
   *DRB_configList2 = CALLOC(1, sizeof(**DRB_configList2));
 
   if (DRB_configList != NULL) {
     LOG_D(RRC, "get DRB_config from (ue_context_pP->ue_context.DRB_configList)\n");
+
     for (i = 0; (i < DRB_configList->list.count) && (i < 3); i++) {
       DRB_config = DRB_configList->list.array[i];
-
       // Add DRB to DRB configuration list, for RRCConnectionReconfigurationComplete
       ASN_SEQUENCE_ADD(&(*DRB_configList2)->list, DRB_config);
     }
   }
+
   ue_context_pP->ue_context.Srb1.Active = 1;
   //ue_context_pP->ue_context.Srb2.Srb_info.Srb_id = 2;
-
 # if defined(ENABLE_USE_MME)
-  rrc_ue_s1ap_ids_t* rrc_ue_s1ap_ids_p = NULL;
+  rrc_ue_s1ap_ids_t *rrc_ue_s1ap_ids_p = NULL;
   uint16_t ue_initial_id = ue_context_pP->ue_context.ue_initial_id;
   uint32_t eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
   eNB_RRC_INST *rrc_instance_p = RC.rrc[ENB_INSTANCE_TO_MODULE_ID(ctxt_pP->instance)];
+
   if (eNB_ue_s1ap_id > 0) {
-    h_rc = hashtable_get(rrc_instance_p->s1ap_id2_s1ap_ids, (hash_key_t)eNB_ue_s1ap_id, (void**)&rrc_ue_s1ap_ids_p);
+    h_rc = hashtable_get(rrc_instance_p->s1ap_id2_s1ap_ids, (hash_key_t)eNB_ue_s1ap_id, (void **)&rrc_ue_s1ap_ids_p);
+
     if  (h_rc == HASH_TABLE_OK) {
       rrc_ue_s1ap_ids_p->ue_rnti = ctxt_pP->rnti;
     }
   }
+
   if (ue_initial_id != 0) {
-    h_rc = hashtable_get(rrc_instance_p->initial_id2_s1ap_ids, (hash_key_t)ue_initial_id, (void**)&rrc_ue_s1ap_ids_p);
+    h_rc = hashtable_get(rrc_instance_p->initial_id2_s1ap_ids, (hash_key_t)ue_initial_id, (void **)&rrc_ue_s1ap_ids_p);
+
     if  (h_rc == HASH_TABLE_OK) {
       rrc_ue_s1ap_ids_p->ue_rnti = ctxt_pP->rnti;
     }
   }
 
   gtpv1u_enb_create_tunnel_req_t  create_tunnel_req;
-
   /* Save e RAB information for later */
-  memset(&create_tunnel_req, 0 , sizeof(create_tunnel_req));
+  memset(&create_tunnel_req, 0, sizeof(create_tunnel_req));
 
   for (j = 0, i = 0; i < NB_RB_MAX; i++) {
     if (ue_context_pP->ue_context.e_rab[i].status == E_RAB_STATUS_ESTABLISHED) {
       create_tunnel_req.eps_bearer_id[j]       = ue_context_pP->ue_context.e_rab[i].param.e_rab_id;
       create_tunnel_req.sgw_S1u_teid[j]        = ue_context_pP->ue_context.e_rab[i].param.gtp_teid;
-
       memcpy(&create_tunnel_req.sgw_addr[j],
              &ue_context_pP->ue_context.e_rab[i].param.sgw_addr,
              sizeof(transport_layer_addr_t));
@@ -1372,11 +1325,10 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
 
   create_tunnel_req.rnti       = ctxt_pP->rnti; // warning put zero above
   create_tunnel_req.num_tunnels    = j;
-
   gtpv1u_update_s1u_tunnel(
-            ctxt_pP->instance,
-            &create_tunnel_req,
-            reestablish_rnti);
+    ctxt_pP->instance,
+    &create_tunnel_req,
+    reestablish_rnti);
 #endif
   /* Update RNTI in ue_context */
   ue_context_pP->ue_id_rnti                    = ctxt_pP->rnti; // here ue_id_rnti is just a key, may be something else
@@ -1384,62 +1336,51 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
 # if defined(ENABLE_USE_MME)
   uint8_t send_security_mode_command = FALSE;
   rrc_pdcp_config_security(
-      ctxt_pP,
-      ue_context_pP,
-      send_security_mode_command);
+    ctxt_pP,
+    ue_context_pP,
+    send_security_mode_command);
   LOG_D(RRC, "set security successfully \n");
 #endif
   // Measurement ID list
   MeasId_list = CALLOC(1, sizeof(*MeasId_list));
   memset((void *)MeasId_list, 0, sizeof(*MeasId_list));
-
   MeasId0 = CALLOC(1, sizeof(*MeasId0));
   MeasId0->measId = 1;
   MeasId0->measObjectId = 1;
   MeasId0->reportConfigId = 1;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId0);
-
   MeasId1 = CALLOC(1, sizeof(*MeasId1));
   MeasId1->measId = 2;
   MeasId1->measObjectId = 1;
   MeasId1->reportConfigId = 2;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId1);
-
   MeasId2 = CALLOC(1, sizeof(*MeasId2));
   MeasId2->measId = 3;
   MeasId2->measObjectId = 1;
   MeasId2->reportConfigId = 3;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId2);
-
   MeasId3 = CALLOC(1, sizeof(*MeasId3));
   MeasId3->measId = 4;
   MeasId3->measObjectId = 1;
   MeasId3->reportConfigId = 4;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId3);
-
   MeasId4 = CALLOC(1, sizeof(*MeasId4));
   MeasId4->measId = 5;
   MeasId4->measObjectId = 1;
   MeasId4->reportConfigId = 5;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId4);
-
   MeasId5 = CALLOC(1, sizeof(*MeasId5));
   MeasId5->measId = 6;
   MeasId5->measObjectId = 1;
   MeasId5->reportConfigId = 6;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId5);
-
   //  rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->measIdToAddModList = MeasId_list;
-
   // Add one EUTRA Measurement Object
   MeasObj_list = CALLOC(1, sizeof(*MeasObj_list));
   memset((void *)MeasObj_list, 0, sizeof(*MeasObj_list));
-
   // Configure MeasObject
-
   MeasObj = CALLOC(1, sizeof(*MeasObj));
   memset((void *)MeasObj, 0, sizeof(*MeasObj));
-
   MeasObj->measObjectId = 1;
   MeasObj->measObject.present = MeasObjectToAddMod__measObject_PR_measObjectEUTRA;
   MeasObj->measObject.choice.measObjectEUTRA.carrierFreq = 3350; //band 7, 2.68GHz
@@ -1451,10 +1392,8 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
   MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.size = 1;
   MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.bits_unused = 6;
   MeasObj->measObject.choice.measObjectEUTRA.offsetFreq = NULL;   // Default is 15 or 0dB
-
   MeasObj->measObject.choice.measObjectEUTRA.cellsToAddModList =
     (CellsToAddModList_t *) CALLOC(1, sizeof(*CellsToAddModList));
-
   CellsToAddModList = MeasObj->measObject.choice.measObjectEUTRA.cellsToAddModList;
 
   // Add adjacent cell lists (6 per eNB)
@@ -1463,28 +1402,19 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
     CellToAdd->cellIndex = i + 1;
     CellToAdd->physCellId = get_adjacent_cell_id(ctxt_pP->module_id, i);
     CellToAdd->cellIndividualOffset = Q_OffsetRange_dB0;
-
     ASN_SEQUENCE_ADD(&CellsToAddModList->list, CellToAdd);
   }
 
   ASN_SEQUENCE_ADD(&MeasObj_list->list, MeasObj);
   //  rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->measObjectToAddModList = MeasObj_list;
-
   // Report Configurations for periodical, A1-A5 events
   ReportConfig_list = CALLOC(1, sizeof(*ReportConfig_list));
-
   ReportConfig_per = CALLOC(1, sizeof(*ReportConfig_per));
-
   ReportConfig_A1 = CALLOC(1, sizeof(*ReportConfig_A1));
-
   ReportConfig_A2 = CALLOC(1, sizeof(*ReportConfig_A2));
-
   ReportConfig_A3 = CALLOC(1, sizeof(*ReportConfig_A3));
-
   ReportConfig_A4 = CALLOC(1, sizeof(*ReportConfig_A4));
-
   ReportConfig_A5 = CALLOC(1, sizeof(*ReportConfig_A5));
-
   ReportConfig_per->reportConfigId = 1;
   ReportConfig_per->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -1496,9 +1426,7 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
   ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_per);
-
   ReportConfig_A1->reportConfigId = 2;
   ReportConfig_A1->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -1509,13 +1437,11 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
   a1_Threshold.present = ThresholdEUTRA_PR_threshold_RSRP;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA1.
   a1_Threshold.choice.threshold_RSRP = 10;
-
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerQuantity = ReportConfigEUTRA__triggerQuantity_rsrp;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
   ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A1);
 
   if (RC.rrc[ctxt_pP->module_id]->HO_flag == 1 /*HO_MEASURMENT */ ) {
@@ -1531,39 +1457,32 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
     eventA2.a2_Threshold.present = ThresholdEUTRA_PR_threshold_RSRP;
     ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
     eventA2.a2_Threshold.choice.threshold_RSRP = 10;
-
     ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
       ReportConfigEUTRA__triggerQuantity_rsrp;
     ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
     ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
     ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
     ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
     ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A2);
-
     ReportConfig_A3->reportConfigId = 4;
     ReportConfig_A3->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.present =
       ReportConfigEUTRA__triggerType_PR_event;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.present =
       ReportConfigEUTRA__triggerType__event__eventId_PR_eventA3;
-
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA3.a3_Offset = 1;   //10;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
     eventA3.reportOnLeave = 1;
-
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
       ReportConfigEUTRA__triggerQuantity_rsrp;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.hysteresis = 0.5; // FIXME ...hysteresis is of type long!
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.timeToTrigger =
       TimeToTrigger_ms40;
     ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A3);
-
     ReportConfig_A4->reportConfigId = 5;
     ReportConfig_A4->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -1574,16 +1493,13 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
     eventA4.a4_Threshold.present = ThresholdEUTRA_PR_threshold_RSRP;
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
     eventA4.a4_Threshold.choice.threshold_RSRP = 10;
-
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
       ReportConfigEUTRA__triggerQuantity_rsrp;
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
     ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A4);
-
     ReportConfig_A5->reportConfigId = 6;
     ReportConfig_A5->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -1598,20 +1514,16 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
     eventA5.a5_Threshold1.choice.threshold_RSRP = 10;
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
     eventA5.a5_Threshold2.choice.threshold_RSRP = 10;
-
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
       ReportConfigEUTRA__triggerQuantity_rsrp;
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
     ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A5);
     //  rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->reportConfigToAddModList = ReportConfig_list;
-
     rsrp = CALLOC(1, sizeof(RSRP_Range_t));
     *rsrp = 20;
-
     Sparams = CALLOC(1, sizeof(*Sparams));
     Sparams->present = MeasConfig__speedStatePars_PR_setup;
     Sparams->choice.setup.timeToTrigger_SF.sf_High = SpeedStateScaleFactors__sf_Medium_oDot75;
@@ -1620,7 +1532,6 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
     Sparams->choice.setup.mobilityStateParameters.n_CellChangeMedium = 5;
     Sparams->choice.setup.mobilityStateParameters.t_Evaluation = MobilityStateParameters__t_Evaluation_s60;
     Sparams->choice.setup.mobilityStateParameters.t_HystNormal = MobilityStateParameters__t_HystNormal_s120;
-
     quantityConfig = CALLOC(1, sizeof(*quantityConfig));
     memset((void *)quantityConfig, 0, sizeof(*quantityConfig));
     quantityConfig->quantityConfigEUTRA = CALLOC(1, sizeof(struct QuantityConfigEUTRA));
@@ -1634,7 +1545,6 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
       CALLOC(1, sizeof(*(quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ)));
     *quantityConfig->quantityConfigEUTRA->filterCoefficientRSRP = FilterCoefficient_fc4;
     *quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ = FilterCoefficient_fc4;
-
     LOG_I(RRC,
           "[eNB %d] Frame %d: potential handover preparation: store the information in an intermediate structure in case of failure\n",
           ctxt_pP->module_id, ctxt_pP->frame);
@@ -1648,15 +1558,14 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
     ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.drb_ToReleaseList = NULL;
     ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.mac_MainConfig =
       CALLOC(1, sizeof(*ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.mac_MainConfig));
-    memcpy((void*)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.mac_MainConfig,
+    memcpy((void *)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.mac_MainConfig,
            (void *)ue_context_pP->ue_context.mac_MainConfig, sizeof(MAC_MainConfig_t));
     ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.physicalConfigDedicated =
       CALLOC(1, sizeof(PhysicalConfigDedicated_t));
-    memcpy((void*)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.physicalConfigDedicated,
-           (void*)ue_context_pP->ue_context.physicalConfigDedicated, sizeof(PhysicalConfigDedicated_t));
+    memcpy((void *)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.physicalConfigDedicated,
+           (void *)ue_context_pP->ue_context.physicalConfigDedicated, sizeof(PhysicalConfigDedicated_t));
     ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.sps_Config = NULL;
     //memcpy((void *)rrc_inst->handover_info[ue_mod_idP]->as_config.sourceRadioResourceConfig.sps_Config,(void *)rrc_inst->sps_Config[ue_mod_idP],sizeof(SPS_Config_t));
-
   }
 
 #ifdef CBA
@@ -1684,7 +1593,6 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
   }
 
 #endif
-
 #if defined(ENABLE_ITTI)
   /* Initialize NAS list */
   dedicatedInfoNASList = CALLOC(1, sizeof(struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList));
@@ -1695,7 +1603,7 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
       dedicatedInfoNas = CALLOC(1, sizeof(DedicatedInfoNAS_t));
       memset(dedicatedInfoNas, 0, sizeof(OCTET_STRING_t));
       OCTET_STRING_fromBuf(dedicatedInfoNas,
-         (char*)ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer,
+                           (char *)ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer,
                            ue_context_pP->ue_context.e_rab[i].param.nas_pdu.length);
       LOG_D(RRC, "Add dedicatedInfoNas(%d) to dedicatedInfoNASList\n", i);
       ASN_SEQUENCE_ADD(&dedicatedInfoNASList->list, dedicatedInfoNas);
@@ -1707,11 +1615,10 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
       //      ue_context_pP->ue_context.e_rab[i].param.sgw_addr;
       //      ue_context_pP->ue_context.e_rab[i].param.gtp_teid;
     }
-
     /* TODO should test if e RAB are Ok before! */
     ue_context_pP->ue_context.e_rab[i].status = E_RAB_STATUS_DONE;
     LOG_D(RRC, "setting the status for the default DRB (index %d) to (%d,%s)\n",
-    i, ue_context_pP->ue_context.e_rab[i].status, "E_RAB_STATUS_DONE");
+          i, ue_context_pP->ue_context.e_rab[i].status, "E_RAB_STATUS_DONE");
   }
 
   /* If list is empty free the list and reset the address */
@@ -1721,47 +1628,45 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
   }
 
 #endif
-
   // send RRCConnectionReconfiguration
   memset(buffer, 0, RRC_BUF_SIZE);
-
   size = do_RRCConnectionReconfiguration(ctxt_pP,
                                          buffer,
                                          next_xid,   //Transaction_id,
-                                         (SRB_ToAddModList_t*)*SRB_configList2, // SRB_configList
-                                         (DRB_ToAddModList_t*)DRB_configList,
-                                         (DRB_ToReleaseList_t*)NULL,  // DRB2_list,
-                                         (struct SPS_Config*)NULL,    // maybe ue_context_pP->ue_context.sps_Config,
-                                         (struct PhysicalConfigDedicated*)ue_context_pP->ue_context.physicalConfigDedicated,
+                                         (SRB_ToAddModList_t *)*SRB_configList2, // SRB_configList
+                                         (DRB_ToAddModList_t *)DRB_configList,
+                                         (DRB_ToReleaseList_t *)NULL, // DRB2_list,
+                                         (struct SPS_Config *)NULL,   // maybe ue_context_pP->ue_context.sps_Config,
+                                         (struct PhysicalConfigDedicated *)ue_context_pP->ue_context.physicalConfigDedicated,
 #ifdef EXMIMO_IOT
                                          NULL, NULL, NULL,NULL,
 #else
-                                         (MeasObjectToAddModList_t*)MeasObj_list,  // MeasObj_list,
-                                         (ReportConfigToAddModList_t*)ReportConfig_list,  // ReportConfig_list,
-                                         (QuantityConfig_t*)quantityConfig,  //quantityConfig,
-                                         (MeasIdToAddModList_t*)NULL,
-#endif
-                                         (MAC_MainConfig_t*)ue_context_pP->ue_context.mac_MainConfig,
-                                         (MeasGapConfig_t*)NULL,
-                                         (MobilityControlInfo_t*)NULL,
-                                         (struct MeasConfig__speedStatePars*)Sparams, // Sparams,
-                                         (RSRP_Range_t*)rsrp, // rsrp,
-                                         (C_RNTI_t*)cba_RNTI,  // cba_RNTI
-                                         (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList*)dedicatedInfoNASList //dedicatedInfoNASList
+                                         (MeasObjectToAddModList_t *)MeasObj_list, // MeasObj_list,
+                                         (ReportConfigToAddModList_t *)ReportConfig_list, // ReportConfig_list,
+                                         (QuantityConfig_t *)quantityConfig, //quantityConfig,
+                                         (MeasIdToAddModList_t *)NULL,
+#endif
+                                         (MAC_MainConfig_t *)ue_context_pP->ue_context.mac_MainConfig,
+                                         (MeasGapConfig_t *)NULL,
+                                         (MobilityControlInfo_t *)NULL,
+                                         (struct MeasConfig__speedStatePars *)Sparams, // Sparams,
+                                         (RSRP_Range_t *)rsrp, // rsrp,
+                                         (C_RNTI_t *)cba_RNTI, // cba_RNTI
+                                         (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *)dedicatedInfoNASList //dedicatedInfoNASList
 #if defined(Rel10) || defined(Rel14)
-                                         , (SCellToAddMod_r10_t*)NULL
+                                         , (SCellToAddMod_r10_t *)NULL
 #endif
                                         );
-
 #ifdef RRC_MSG_PRINT
   LOG_F(RRC,"[MSG] RRC Connection Reconfiguration\n");
+
   for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
+    LOG_F(RRC,"%02x ", ((uint8_t *)buffer)[i]);
   }
+
   LOG_F(RRC,"\n");
   ////////////////////////////////////////
 #endif
-
 #if defined(ENABLE_ITTI)
 
   /* Free all NAS PDUs */
@@ -1774,15 +1679,12 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
   }
 
 #endif
-
   LOG_I(RRC,
         "[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration (bytes %d, UE id %x)\n",
         ctxt_pP->module_id, ctxt_pP->frame, size, ue_context_pP->ue_context.rnti);
-
   LOG_D(RRC,
         "[FRAME %05d][RRC_eNB][MOD %u][][--- PDCP_DATA_REQ/%d Bytes (rrcConnectionReconfiguration 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_eNB_mui, ctxt_pP->module_id, DCCH);
-
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
     MSC_RRC_UE,
@@ -1793,51 +1695,56 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
     ue_context_pP->ue_context.rnti,
     rrc_eNB_mui,
     size);
-
   rrc_data_req(
-         ctxt_pP,
-         DCCH,
-         rrc_eNB_mui++,
-         SDU_CONFIRM_NO,
-         size,
-         buffer,
-         PDCP_TRANSMISSION_MODE_CONTROL);
-
+    ctxt_pP,
+    DCCH,
+    rrc_eNB_mui++,
+    SDU_CONFIRM_NO,
+    size,
+    buffer,
+    PDCP_TRANSMISSION_MODE_CONTROL);
   // delete UE data of prior RNTI.  UE use current RNTI.
   protocol_ctxt_t ctxt_prior = *ctxt_pP;
   ctxt_prior.rnti = reestablish_rnti;
-
   LTE_eNB_ULSCH_t *ulsch = NULL;
   nfapi_ul_config_request_body_t *ul_req_tmp = NULL;
   PHY_VARS_eNB *eNB_PHY = NULL;
   eNB_MAC_INST *eNB_MAC = RC.mac[ctxt_prior.module_id];
+
   for (int CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
     eNB_PHY = RC.eNB[ctxt_prior.module_id][CC_id];
+
     for (int i=0; i<NUMBER_OF_UE_MAX; i++) {
       ulsch = eNB_PHY->ulsch[i];
-      if((ulsch != NULL) && (ulsch->rnti == ctxt_prior.rnti)){
+
+      if((ulsch != NULL) && (ulsch->rnti == ctxt_prior.rnti)) {
         LOG_I(RRC, "clean_eNb_ulsch UE %x \n", ctxt_prior.rnti);
         clean_eNb_ulsch(ulsch);
         break;
       }
     }
 
-    for(int j = 0; j < 10; j++){
+    for(int j = 0; j < 10; j++) {
       ul_req_tmp = &eNB_MAC->UL_req_tmp[CC_id][j].ul_config_request_body;
-      if(ul_req_tmp){
+
+      if(ul_req_tmp) {
         int pdu_number = ul_req_tmp->number_of_pdus;
-        for(int pdu_index = pdu_number-1; pdu_index >= 0; pdu_index--){
-          if(ul_req_tmp->ul_config_pdu_list[pdu_index].ulsch_pdu.ulsch_pdu_rel8.rnti == ctxt_prior.rnti){
+
+        for(int pdu_index = pdu_number-1; pdu_index >= 0; pdu_index--) {
+          if(ul_req_tmp->ul_config_pdu_list[pdu_index].ulsch_pdu.ulsch_pdu_rel8.rnti == ctxt_prior.rnti) {
             LOG_I(RRC, "remove UE %x from ul_config_pdu_list %d/%d\n", ctxt_prior.rnti, pdu_index, pdu_number);
-            if(pdu_index < pdu_number -1){
-               memcpy(&ul_req_tmp->ul_config_pdu_list[pdu_index], &ul_req_tmp->ul_config_pdu_list[pdu_index+1], (pdu_number-1-pdu_index) * sizeof(nfapi_ul_config_request_pdu_t));
+
+            if(pdu_index < pdu_number -1) {
+              memcpy(&ul_req_tmp->ul_config_pdu_list[pdu_index], &ul_req_tmp->ul_config_pdu_list[pdu_index+1], (pdu_number-1-pdu_index) * sizeof(nfapi_ul_config_request_pdu_t));
             }
+
             ul_req_tmp->number_of_pdus--;
           }
         }
       }
     }
   }
+
   rrc_mac_remove_ue(ctxt_prior.module_id, ctxt_prior.rnti);
   rrc_rlc_remove_ue(&ctxt_prior);
   pdcp_remove_UE(&ctxt_prior);
@@ -1846,8 +1753,8 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_generate_RRCConnectionReestablishmentReject(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*          const ue_context_pP,
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t          *const ue_context_pP,
   const int                    CC_id
 )
 //-----------------------------------------------------------------------------
@@ -1858,24 +1765,20 @@ rrc_eNB_generate_RRCConnectionReestablishmentReject(
   int UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti);
   RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer = 1;
   RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer_thres = 20;
-
   T(T_ENB_RRC_CONNECTION_REESTABLISHMENT_REJECT, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
   RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size =
     do_RRCConnectionReestablishmentReject(ctxt_pP->module_id,
-                          (uint8_t*) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload);
-
+                                          (uint8_t *) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload);
 #ifdef RRC_MSG_PRINT
   LOG_F(RRC,"[MSG] RRCConnectionReestablishmentReject\n");
 
   for (cnt = 0; cnt < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size; cnt++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload)[cnt]);
+    LOG_F(RRC,"%02x ", ((uint8_t *)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload)[cnt]);
   }
 
   LOG_F(RRC,"\n");
 #endif
-
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
     MSC_RRC_UE,
@@ -1885,7 +1788,6 @@ rrc_eNB_generate_RRCConnectionReestablishmentReject(
     MSC_AS_TIME_ARGS(ctxt_pP),
     ue_context_pP == NULL ? -1 : ue_context_pP->ue_context.rnti,
     RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size);
-
   LOG_I(RRC,
         PROTOCOL_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating RRCConnectionReestablishmentReject (bytes %d)\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
@@ -1895,26 +1797,22 @@ rrc_eNB_generate_RRCConnectionReestablishmentReject(
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_generate_RRCConnectionRelease(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*          const ue_context_pP
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t          *const ue_context_pP
 )
 //-----------------------------------------------------------------------------
 {
-
   uint8_t                             buffer[RRC_BUF_SIZE];
   uint16_t                            size;
-
   T(T_ENB_RRC_CONNECTION_RELEASE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
   memset(buffer, 0, RRC_BUF_SIZE);
-
   size = do_RRCConnectionRelease(ctxt_pP->module_id, buffer,rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id));
   // set release timer
   //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=100;
-    // set release timer
+  // set release timer
   ue_context_pP->ue_context.ue_release_timer_rrc = 1;
   // remove UE after 10 frames after RRCConnectionRelease is triggered
   ue_context_pP->ue_context.ue_release_timer_thres_rrc = 100;
@@ -1925,14 +1823,12 @@ rrc_eNB_generate_RRCConnectionRelease(
         PROTOCOL_RRC_CTXT_UE_FMT" Logical Channel DL-DCCH, Generate RRCConnectionRelease (bytes %d)\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
         size);
-
   LOG_D(RRC,
         PROTOCOL_RRC_CTXT_UE_FMT" --- PDCP_DATA_REQ/%d Bytes (rrcConnectionRelease MUI %d) --->[PDCP][RB %u]\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
         size,
         rrc_eNB_mui,
         DCCH);
-
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
     MSC_RRC_UE,
@@ -1943,34 +1839,31 @@ rrc_eNB_generate_RRCConnectionRelease(
     ue_context_pP->ue_context.rnti,
     rrc_eNB_mui,
     size);
-
   rrc_data_req(
-	       ctxt_pP,
-	       DCCH,
-	       rrc_eNB_mui++,
-	       SDU_CONFIRM_NO,
-	       size,
-	       buffer,
-	       PDCP_TRANSMISSION_MODE_CONTROL);
+    ctxt_pP,
+    DCCH,
+    rrc_eNB_mui++,
+    SDU_CONFIRM_NO,
+    size,
+    buffer,
+    PDCP_TRANSMISSION_MODE_CONTROL);
 }
 
-uint8_t qci_to_priority[9]={2,4,3,5,1,6,7,8,9};
+uint8_t qci_to_priority[9]= {2,4,3,5,1,6,7,8,9};
 
 // TBD: this directive can be remived if we create a similar e_rab_param_t structure in RRC context
-#if defined(ENABLE_ITTI) 
+#if defined(ENABLE_ITTI)
 //-----------------------------------------------------------------------------
 void
-rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* const ctxt_pP,
-						     rrc_eNB_ue_context_t*          const ue_context_pP,
-						     const uint8_t                ho_state
-						     )
+rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t *const ctxt_pP,
+    rrc_eNB_ue_context_t          *const ue_context_pP,
+    const uint8_t                ho_state
+                                                      )
 //-----------------------------------------------------------------------------
 {
-  
   uint8_t                             buffer[RRC_BUF_SIZE];
   uint16_t                            size;
   int i;
-  
   struct DRB_ToAddMod                *DRB_config                       = NULL;
   struct RLC_Config                  *DRB_rlc_config                   = NULL;
   struct PDCP_Config                 *DRB_pdcp_config                  = NULL;
@@ -1979,61 +1872,53 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
   struct LogicalChannelConfig        *DRB_lchan_config                 = NULL;
   struct LogicalChannelConfig__ul_SpecificParameters
     *DRB_ul_SpecificParameters        = NULL;
-  //  DRB_ToAddModList_t**                DRB_configList=&ue_context_pP->ue_context.DRB_configList; 
-  DRB_ToAddModList_t*                DRB_configList=ue_context_pP->ue_context.DRB_configList; 
-  DRB_ToAddModList_t**                DRB_configList2=NULL;
+  //  DRB_ToAddModList_t**                DRB_configList=&ue_context_pP->ue_context.DRB_configList;
+  DRB_ToAddModList_t                *DRB_configList=ue_context_pP->ue_context.DRB_configList;
+  DRB_ToAddModList_t                **DRB_configList2=NULL;
   //DRB_ToAddModList_t**                RRC_DRB_configList=&ue_context_pP->ue_context.DRB_configList;
-
   struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *dedicatedInfoNASList = NULL;
   DedicatedInfoNAS_t                 *dedicatedInfoNas                 = NULL;
   /* for no gcc warnings */
   (void)dedicatedInfoNas;
-
   long  *logicalchannelgroup_drb;
-//  int drb_identity_index=0;
-
+  //  int drb_identity_index=0;
   uint8_t xid = rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id);   //Transaction_id,
   DRB_configList2=&ue_context_pP->ue_context.DRB_configList2[xid];
+
   if (*DRB_configList2) {
     free(*DRB_configList2);
   }
+
   //*DRB_configList = CALLOC(1, sizeof(*DRB_configList));
-  *DRB_configList2 = CALLOC(1, sizeof(**DRB_configList2)); 
+  *DRB_configList2 = CALLOC(1, sizeof(**DRB_configList2));
   /* Initialize NAS list */
   dedicatedInfoNASList = CALLOC(1, sizeof(struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList));
-
   int e_rab_done=0;
-  
-  for ( i = 0  ;
-	i < ue_context_pP->ue_context.setup_e_rabs ;
-	i++){
 
-    if (e_rab_done >= ue_context_pP->ue_context.nb_of_e_rabs){
-        break;
+  for ( i = 0  ;
+        i < ue_context_pP->ue_context.setup_e_rabs ;
+        i++) {
+    if (e_rab_done >= ue_context_pP->ue_context.nb_of_e_rabs) {
+      break;
     }
-    
+
     // bypass the new and already configured erabs
     if (ue_context_pP->ue_context.e_rab[i].status >= E_RAB_STATUS_DONE) {
-//      drb_identity_index++;
+      //      drb_identity_index++;
       continue;
     }
-        
-    DRB_config = CALLOC(1, sizeof(*DRB_config));
 
+    DRB_config = CALLOC(1, sizeof(*DRB_config));
     DRB_config->eps_BearerIdentity = CALLOC(1, sizeof(long));
     // allowed value 5..15, value : x+4
-    *(DRB_config->eps_BearerIdentity) = ue_context_pP->ue_context.e_rab[i].param.e_rab_id;//+ 4; // especial case generation  
-
- //   DRB_config->drb_Identity =  1 + drb_identity_index + e_rab_done;// + i ;// (DRB_Identity_t) ue_context_pP->ue_context.e_rab[i].param.e_rab_id;
-    // 1 + drb_identiy_index;  
+    *(DRB_config->eps_BearerIdentity) = ue_context_pP->ue_context.e_rab[i].param.e_rab_id;//+ 4; // especial case generation
+    //   DRB_config->drb_Identity =  1 + drb_identity_index + e_rab_done;// + i ;// (DRB_Identity_t) ue_context_pP->ue_context.e_rab[i].param.e_rab_id;
+    // 1 + drb_identiy_index;
     DRB_config->drb_Identity = i+1;
-
     DRB_config->logicalChannelIdentity = CALLOC(1, sizeof(long));
     *(DRB_config->logicalChannelIdentity) = DRB_config->drb_Identity + 2; //(long) (ue_context_pP->ue_context.e_rab[i].param.e_rab_id + 2); // value : x+2
-    
     DRB_rlc_config = CALLOC(1, sizeof(*DRB_rlc_config));
     DRB_config->rlc_Config = DRB_rlc_config;
-
     DRB_pdcp_config = CALLOC(1, sizeof(*DRB_pdcp_config));
     DRB_config->pdcp_Config = DRB_pdcp_config;
     DRB_pdcp_config->discardTimer = CALLOC(1, sizeof(long));
@@ -2041,123 +1926,115 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
     DRB_pdcp_config->rlc_AM = NULL;
     DRB_pdcp_config->rlc_UM = NULL;
 
-
-    switch (ue_context_pP->ue_context.e_rab[i].param.qos.qci){
+    switch (ue_context_pP->ue_context.e_rab[i].param.qos.qci) {
       /*
        * type: realtime data with medium packer error rate
        * action: swtich to RLC UM
        */
-    case 1: // 100ms, 10^-2, p2, GBR
-    case 2: // 150ms, 10^-3, p4, GBR
-    case 3: // 50ms, 10^-3, p3, GBR
-    case 4:  // 300ms, 10^-6, p5 
-    case 7: // 100ms, 10^-3, p7, GBR
-    case 9: // 300ms, 10^-6, p9
-    case 65: // 75ms, 10^-2, p0.7, mission critical voice, GBR
-    case 66: // 100ms, 10^-2, p2, non-mission critical  voice , GBR
-      // RLC 
-      DRB_rlc_config->present = RLC_Config_PR_um_Bi_Directional;
-      DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
-      DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
-      DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = T_Reordering_ms35;
-      // PDCP
-      PDCP_rlc_UM = CALLOC(1, sizeof(*PDCP_rlc_UM));
-      DRB_pdcp_config->rlc_UM = PDCP_rlc_UM;
-      PDCP_rlc_UM->pdcp_SN_Size = PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
-      break;
-      
+      case 1: // 100ms, 10^-2, p2, GBR
+      case 2: // 150ms, 10^-3, p4, GBR
+      case 3: // 50ms, 10^-3, p3, GBR
+      case 4:  // 300ms, 10^-6, p5
+      case 7: // 100ms, 10^-3, p7, GBR
+      case 9: // 300ms, 10^-6, p9
+      case 65: // 75ms, 10^-2, p0.7, mission critical voice, GBR
+      case 66: // 100ms, 10^-2, p2, non-mission critical  voice , GBR
+        // RLC
+        DRB_rlc_config->present = RLC_Config_PR_um_Bi_Directional;
+        DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
+        DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
+        DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = T_Reordering_ms35;
+        // PDCP
+        PDCP_rlc_UM = CALLOC(1, sizeof(*PDCP_rlc_UM));
+        DRB_pdcp_config->rlc_UM = PDCP_rlc_UM;
+        PDCP_rlc_UM->pdcp_SN_Size = PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
+        break;
+
       /*
        * type: non-realtime data with low packer error rate
        * action: swtich to RLC AM
        */
-    case 5:  // 100ms, 10^-6, p1 , IMS signaling 
-    case 6:  // 300ms, 10^-6, p6 
-    case 8: // 300ms, 10^-6, p8 
-    case 69: // 60ms, 10^-6, p0.5, mission critical delay sensitive data, Lowest Priority 
-    case 70: // 200ms, 10^-6, p5.5, mision critical data 
-      // RLC
-       DRB_rlc_config->present = RLC_Config_PR_am;
-       DRB_rlc_config->choice.am.ul_AM_RLC.t_PollRetransmit = T_PollRetransmit_ms50;
-       DRB_rlc_config->choice.am.ul_AM_RLC.pollPDU = PollPDU_p16;
-       DRB_rlc_config->choice.am.ul_AM_RLC.pollByte = PollByte_kBinfinity;
-       DRB_rlc_config->choice.am.ul_AM_RLC.maxRetxThreshold = UL_AM_RLC__maxRetxThreshold_t8;
-       DRB_rlc_config->choice.am.dl_AM_RLC.t_Reordering = T_Reordering_ms35;
-       DRB_rlc_config->choice.am.dl_AM_RLC.t_StatusProhibit = T_StatusProhibit_ms25;
-
-       // PDCP
-       PDCP_rlc_AM = CALLOC(1, sizeof(*PDCP_rlc_AM));
-       DRB_pdcp_config->rlc_AM = PDCP_rlc_AM;
-       PDCP_rlc_AM->statusReportRequired = FALSE;
-       
-       break;
-    default :
-      LOG_E(RRC,"not supported qci %d\n", ue_context_pP->ue_context.e_rab[i].param.qos.qci);
-      ue_context_pP->ue_context.e_rab[i].status = E_RAB_STATUS_FAILED; 
-      ue_context_pP->ue_context.e_rab[i].xid = xid;
-      e_rab_done++;
-      continue;
+      case 5:  // 100ms, 10^-6, p1 , IMS signaling
+      case 6:  // 300ms, 10^-6, p6
+      case 8: // 300ms, 10^-6, p8
+      case 69: // 60ms, 10^-6, p0.5, mission critical delay sensitive data, Lowest Priority
+      case 70: // 200ms, 10^-6, p5.5, mision critical data
+        // RLC
+        DRB_rlc_config->present = RLC_Config_PR_am;
+        DRB_rlc_config->choice.am.ul_AM_RLC.t_PollRetransmit = T_PollRetransmit_ms50;
+        DRB_rlc_config->choice.am.ul_AM_RLC.pollPDU = PollPDU_p16;
+        DRB_rlc_config->choice.am.ul_AM_RLC.pollByte = PollByte_kBinfinity;
+        DRB_rlc_config->choice.am.ul_AM_RLC.maxRetxThreshold = UL_AM_RLC__maxRetxThreshold_t8;
+        DRB_rlc_config->choice.am.dl_AM_RLC.t_Reordering = T_Reordering_ms35;
+        DRB_rlc_config->choice.am.dl_AM_RLC.t_StatusProhibit = T_StatusProhibit_ms25;
+        // PDCP
+        PDCP_rlc_AM = CALLOC(1, sizeof(*PDCP_rlc_AM));
+        DRB_pdcp_config->rlc_AM = PDCP_rlc_AM;
+        PDCP_rlc_AM->statusReportRequired = FALSE;
+        break;
+
+      default :
+        LOG_E(RRC,"not supported qci %d\n", ue_context_pP->ue_context.e_rab[i].param.qos.qci);
+        ue_context_pP->ue_context.e_rab[i].status = E_RAB_STATUS_FAILED;
+        ue_context_pP->ue_context.e_rab[i].xid = xid;
+        e_rab_done++;
+        continue;
     }
 
     DRB_pdcp_config->headerCompression.present = PDCP_Config__headerCompression_PR_notUsed;
-    
     DRB_lchan_config = CALLOC(1, sizeof(*DRB_lchan_config));
     DRB_config->logicalChannelConfig = DRB_lchan_config;
     DRB_ul_SpecificParameters = CALLOC(1, sizeof(*DRB_ul_SpecificParameters));
     DRB_lchan_config->ul_SpecificParameters = DRB_ul_SpecificParameters;
 
     if (ue_context_pP->ue_context.e_rab[i].param.qos.qci < 9 )
-      DRB_ul_SpecificParameters->priority = qci_to_priority[ue_context_pP->ue_context.e_rab[i].param.qos.qci-1] + 3; 
+      DRB_ul_SpecificParameters->priority = qci_to_priority[ue_context_pP->ue_context.e_rab[i].param.qos.qci-1] + 3;
     // ue_context_pP->ue_context.e_rab[i].param.qos.allocation_retention_priority.priority_level;
-    else 
+    else
       DRB_ul_SpecificParameters->priority= 4;
 
     DRB_ul_SpecificParameters->prioritisedBitRate = LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8;
-      //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
+    //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
     DRB_ul_SpecificParameters->bucketSizeDuration =
       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-    
     logicalchannelgroup_drb = CALLOC(1, sizeof(long));
     *logicalchannelgroup_drb = 1;//(i+1) % 3;
     DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb;
-
     ASN_SEQUENCE_ADD(&DRB_configList->list, DRB_config);
     ASN_SEQUENCE_ADD(&(*DRB_configList2)->list, DRB_config);
     //ue_context_pP->ue_context.DRB_configList2[drb_identity_index] = &(*DRB_configList);
-    
     LOG_I(RRC,"EPS ID %ld, DRB ID %ld (index %d), QCI %d, priority %ld, LCID %ld LCGID %ld \n",
-	  *DRB_config->eps_BearerIdentity,
-	  DRB_config->drb_Identity, i,
-	  ue_context_pP->ue_context.e_rab[i].param.qos.qci,
-	  DRB_ul_SpecificParameters->priority,
-	  *(DRB_config->logicalChannelIdentity),
-	  *DRB_ul_SpecificParameters->logicalChannelGroup	  
-	  );
-
+          *DRB_config->eps_BearerIdentity,
+          DRB_config->drb_Identity, i,
+          ue_context_pP->ue_context.e_rab[i].param.qos.qci,
+          DRB_ul_SpecificParameters->priority,
+          *(DRB_config->logicalChannelIdentity),
+          *DRB_ul_SpecificParameters->logicalChannelGroup
+         );
     e_rab_done++;
-    ue_context_pP->ue_context.e_rab[i].status = E_RAB_STATUS_DONE; 
+    ue_context_pP->ue_context.e_rab[i].status = E_RAB_STATUS_DONE;
     ue_context_pP->ue_context.e_rab[i].xid = xid;
-    
     {
       if (ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer != NULL) {
-	dedicatedInfoNas = CALLOC(1, sizeof(DedicatedInfoNAS_t));
-	memset(dedicatedInfoNas, 0, sizeof(OCTET_STRING_t));
-	OCTET_STRING_fromBuf(dedicatedInfoNas, 
-			     (char*)ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer,
-			     ue_context_pP->ue_context.e_rab[i].param.nas_pdu.length);
-	ASN_SEQUENCE_ADD(&dedicatedInfoNASList->list, dedicatedInfoNas);
-	LOG_I(RRC,"add NAS info with size %d (rab id %d)\n",ue_context_pP->ue_context.e_rab[i].param.nas_pdu.length, i);
-      } 
+        dedicatedInfoNas = CALLOC(1, sizeof(DedicatedInfoNAS_t));
+        memset(dedicatedInfoNas, 0, sizeof(OCTET_STRING_t));
+        OCTET_STRING_fromBuf(dedicatedInfoNas,
+                             (char *)ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer,
+                             ue_context_pP->ue_context.e_rab[i].param.nas_pdu.length);
+        ASN_SEQUENCE_ADD(&dedicatedInfoNASList->list, dedicatedInfoNas);
+        LOG_I(RRC,"add NAS info with size %d (rab id %d)\n",ue_context_pP->ue_context.e_rab[i].param.nas_pdu.length, i);
+      }
       else {
-	LOG_W(RRC,"Not received activate dedicated EPS bearer context request\n");
+        LOG_W(RRC,"Not received activate dedicated EPS bearer context request\n");
       }
+
       /* TODO parameters yet to process ... */
       {
-	//      ue_context_pP->ue_context.e_rab[i].param.qos;
-	//      ue_context_pP->ue_context.e_rab[i].param.sgw_addr;
-	//      ue_context_pP->ue_context.e_rab[i].param.gtp_teid;
+        //      ue_context_pP->ue_context.e_rab[i].param.qos;
+        //      ue_context_pP->ue_context.e_rab[i].param.sgw_addr;
+        //      ue_context_pP->ue_context.e_rab[i].param.gtp_teid;
       }
     }
-    
   }
 
   /* If list is empty free the list and reset the address */
@@ -2166,38 +2043,36 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
       free(dedicatedInfoNASList);
       dedicatedInfoNASList = NULL;
       LOG_W(RRC,"dedlicated NAS list is empty, free the list and reset the address\n");
-    }				
+    }
   } else {
     LOG_W(RRC,"dedlicated NAS list is empty\n");
   }
 
   memset(buffer, 0, RRC_BUF_SIZE);
-
-   size = do_RRCConnectionReconfiguration(ctxt_pP,
-					  buffer,
-					  xid,
-					  (SRB_ToAddModList_t*)NULL, 
-					  (DRB_ToAddModList_t*)*DRB_configList2,
-					  (DRB_ToReleaseList_t*)NULL,  // DRB2_list,
-                                         (struct SPS_Config*)NULL,    // *sps_Config,
-					  NULL, NULL, NULL, NULL,NULL,
-					  NULL, NULL,  NULL, NULL, NULL, NULL, 
-					  (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList*)dedicatedInfoNASList
+  size = do_RRCConnectionReconfiguration(ctxt_pP,
+                                         buffer,
+                                         xid,
+                                         (SRB_ToAddModList_t *)NULL,
+                                         (DRB_ToAddModList_t *)*DRB_configList2,
+                                         (DRB_ToReleaseList_t *)NULL, // DRB2_list,
+                                         (struct SPS_Config *)NULL,   // *sps_Config,
+                                         NULL, NULL, NULL, NULL,NULL,
+                                         NULL, NULL,  NULL, NULL, NULL, NULL,
+                                         (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *)dedicatedInfoNASList
 #if defined(Rel10) || defined(Rel14)
-                                         , (SCellToAddMod_r10_t*)NULL
+                                         , (SCellToAddMod_r10_t *)NULL
 #endif
                                         );
- 
-
 #ifdef RRC_MSG_PRINT
   LOG_F(RRC,"[MSG] RRC Connection Reconfiguration\n");
+
   for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
+    LOG_F(RRC,"%02x ", ((uint8_t *)buffer)[i]);
   }
+
   LOG_F(RRC,"\n");
   ////////////////////////////////////////
 #endif
-
 #if defined(ENABLE_ITTI)
 
   /* Free all NAS PDUs */
@@ -2208,16 +2083,14 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
       ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer = NULL;
     }
   }
-#endif
 
- LOG_I(RRC,
+#endif
+  LOG_I(RRC,
         "[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration (bytes %d, UE RNTI %x)\n",
         ctxt_pP->module_id, ctxt_pP->frame, size, ue_context_pP->ue_context.rnti);
-
   LOG_D(RRC,
         "[FRAME %05d][RRC_eNB][MOD %u][][--- PDCP_DATA_REQ/%d Bytes (rrcConnectionReconfiguration 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_eNB_mui, ctxt_pP->module_id, DCCH);
-
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
     MSC_RRC_UE,
@@ -2228,7 +2101,6 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
     ue_context_pP->ue_context.rnti,
     rrc_eNB_mui,
     size);
-
   rrc_data_req(
     ctxt_pP,
     DCCH,
@@ -2237,20 +2109,17 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
     size,
     buffer,
     PDCP_TRANSMISSION_MODE_CONTROL);
-
-
 }
 int
-rrc_eNB_modify_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* const ctxt_pP,
-                             rrc_eNB_ue_context_t*          const ue_context_pP,
-                             const uint8_t                ho_state
-                             )
+rrc_eNB_modify_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t *const ctxt_pP,
+    rrc_eNB_ue_context_t          *const ue_context_pP,
+    const uint8_t                ho_state
+                                                    )
 //-----------------------------------------------------------------------------
 {
   uint8_t                             buffer[RRC_BUF_SIZE];
   uint16_t                            size;
   int i, j;
-
   struct DRB_ToAddMod                *DRB_config                       = NULL;
   struct RLC_Config                  *DRB_rlc_config                   = NULL;
   struct PDCP_Config                 *DRB_pdcp_config                  = NULL;
@@ -2258,15 +2127,13 @@ rrc_eNB_modify_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   struct PDCP_Config__rlc_UM         *PDCP_rlc_UM                      = NULL;
   struct LogicalChannelConfig        *DRB_lchan_config                 = NULL;
   struct LogicalChannelConfig__ul_SpecificParameters
-  *DRB_ul_SpecificParameters        = NULL;
-  DRB_ToAddModList_t*                 DRB_configList = ue_context_pP->ue_context.DRB_configList;
-  DRB_ToAddModList_t*                DRB_configList2 = NULL;
-
+    *DRB_ul_SpecificParameters        = NULL;
+  DRB_ToAddModList_t                 *DRB_configList = ue_context_pP->ue_context.DRB_configList;
+  DRB_ToAddModList_t                *DRB_configList2 = NULL;
   struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *dedicatedInfoNASList = NULL;
   DedicatedInfoNAS_t                 *dedicatedInfoNas                 = NULL;
   /* for no gcc warnings */
   (void)dedicatedInfoNas;
-
   uint8_t xid = rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id);   // Transaction_id,
   DRB_configList2 = CALLOC(1, sizeof(*DRB_configList2));
   /* Initialize NAS list */
@@ -2287,6 +2154,7 @@ rrc_eNB_modify_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* cons
     }
 
     DRB_config = NULL;
+
     // search exist DRB_config
     for (j = 0; j < DRB_configList->list.count; j++) {
       if((uint8_t)*(DRB_configList->list.array[j]->eps_BearerIdentity) == ue_context_pP->ue_context.modify_e_rab[i].param.e_rab_id) {
@@ -2294,6 +2162,7 @@ rrc_eNB_modify_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* cons
         break;
       }
     }
+
     if (NULL == DRB_config) {
       ue_context_pP->ue_context.modify_e_rab[i].xid = xid;
       ue_context_pP->ue_context.modify_e_rab[i].status = E_RAB_STATUS_FAILED;
@@ -2305,85 +2174,89 @@ rrc_eNB_modify_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* cons
     }
 
     DRB_rlc_config = DRB_config->rlc_Config;
-
     DRB_pdcp_config = DRB_config->pdcp_Config;
     *DRB_pdcp_config->discardTimer = PDCP_Config__discardTimer_infinity;
+
     switch (ue_context_pP->ue_context.modify_e_rab[i].param.qos.qci) {
-    /*
-     * type: realtime data with medium packer error rate
-     * action: swtich to RLC UM
-     */
-    case 1: // 100ms, 10^-2, p2, GBR
-    case 2: // 150ms, 10^-3, p4, GBR
-    case 3: // 50ms, 10^-3, p3, GBR
-    case 4:  // 300ms, 10^-6, p5
-    case 7: // 100ms, 10^-3, p7, GBR
-    case 9: // 300ms, 10^-6, p9
-    case 65: // 75ms, 10^-2, p0.7, mission critical voice, GBR
-    case 66: // 100ms, 10^-2, p2, non-mission critical  voice , GBR
-      // RLC
-      DRB_rlc_config->present = RLC_Config_PR_um_Bi_Directional;
-      DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
-      DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
-      DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = T_Reordering_ms35;
-      // PDCP
-      if (DRB_pdcp_config->rlc_AM) {
-        free(DRB_pdcp_config->rlc_AM);
-        DRB_pdcp_config->rlc_AM = NULL;
-      }
-      if (DRB_pdcp_config->rlc_UM) {
-        free(DRB_pdcp_config->rlc_UM);
-        DRB_pdcp_config->rlc_UM = NULL;
-      }
-      PDCP_rlc_UM = CALLOC(1, sizeof(*PDCP_rlc_UM));
-      DRB_pdcp_config->rlc_UM = PDCP_rlc_UM;
-      PDCP_rlc_UM->pdcp_SN_Size = PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
-      break;
+      /*
+       * type: realtime data with medium packer error rate
+       * action: swtich to RLC UM
+       */
+      case 1: // 100ms, 10^-2, p2, GBR
+      case 2: // 150ms, 10^-3, p4, GBR
+      case 3: // 50ms, 10^-3, p3, GBR
+      case 4:  // 300ms, 10^-6, p5
+      case 7: // 100ms, 10^-3, p7, GBR
+      case 9: // 300ms, 10^-6, p9
+      case 65: // 75ms, 10^-2, p0.7, mission critical voice, GBR
+      case 66: // 100ms, 10^-2, p2, non-mission critical  voice , GBR
+        // RLC
+        DRB_rlc_config->present = RLC_Config_PR_um_Bi_Directional;
+        DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
+        DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
+        DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = T_Reordering_ms35;
+
+        // PDCP
+        if (DRB_pdcp_config->rlc_AM) {
+          free(DRB_pdcp_config->rlc_AM);
+          DRB_pdcp_config->rlc_AM = NULL;
+        }
 
-    /*
-     * type: non-realtime data with low packer error rate
-     * action: swtich to RLC AM
-     */
-    case 5:  // 100ms, 10^-6, p1 , IMS signaling
-    case 6:  // 300ms, 10^-6, p6
-    case 8: // 300ms, 10^-6, p8
-    case 69: // 60ms, 10^-6, p0.5, mission critical delay sensitive data, Lowest Priority
-    case 70: // 200ms, 10^-6, p5.5, mision critical data
-       // RLC
-       DRB_rlc_config->present = RLC_Config_PR_am;
-       DRB_rlc_config->choice.am.ul_AM_RLC.t_PollRetransmit = T_PollRetransmit_ms50;
-       DRB_rlc_config->choice.am.ul_AM_RLC.pollPDU = PollPDU_p16;
-       DRB_rlc_config->choice.am.ul_AM_RLC.pollByte = PollByte_kBinfinity;
-       DRB_rlc_config->choice.am.ul_AM_RLC.maxRetxThreshold = UL_AM_RLC__maxRetxThreshold_t8;
-       DRB_rlc_config->choice.am.dl_AM_RLC.t_Reordering = T_Reordering_ms35;
-       DRB_rlc_config->choice.am.dl_AM_RLC.t_StatusProhibit = T_StatusProhibit_ms25;
-
-       // PDCP
-       if (DRB_pdcp_config->rlc_AM) {
-         free(DRB_pdcp_config->rlc_AM);
-         DRB_pdcp_config->rlc_AM = NULL;
-       }
-       if (DRB_pdcp_config->rlc_UM) {
-         free(DRB_pdcp_config->rlc_UM);
-         DRB_pdcp_config->rlc_UM = NULL;
-       }
-       PDCP_rlc_AM = CALLOC(1, sizeof(*PDCP_rlc_AM));
-       DRB_pdcp_config->rlc_AM = PDCP_rlc_AM;
-       PDCP_rlc_AM->statusReportRequired = FALSE;
-
-       break;
-    default :
-      LOG_E(RRC, "not supported qci %d\n", ue_context_pP->ue_context.modify_e_rab[i].param.qos.qci);
-      ue_context_pP->ue_context.modify_e_rab[i].status = E_RAB_STATUS_FAILED;
-      ue_context_pP->ue_context.modify_e_rab[i].xid = xid;
-      ue_context_pP->ue_context.modify_e_rab[i].cause = S1AP_CAUSE_RADIO_NETWORK;
-      ue_context_pP->ue_context.modify_e_rab[i].cause_value = 37;//S1ap_CauseRadioNetwork_not_supported_QCI_value;
-      ue_context_pP->ue_context.nb_of_failed_e_rabs++;
-      continue;
+        if (DRB_pdcp_config->rlc_UM) {
+          free(DRB_pdcp_config->rlc_UM);
+          DRB_pdcp_config->rlc_UM = NULL;
+        }
+
+        PDCP_rlc_UM = CALLOC(1, sizeof(*PDCP_rlc_UM));
+        DRB_pdcp_config->rlc_UM = PDCP_rlc_UM;
+        PDCP_rlc_UM->pdcp_SN_Size = PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
+        break;
+
+      /*
+       * type: non-realtime data with low packer error rate
+       * action: swtich to RLC AM
+       */
+      case 5:  // 100ms, 10^-6, p1 , IMS signaling
+      case 6:  // 300ms, 10^-6, p6
+      case 8: // 300ms, 10^-6, p8
+      case 69: // 60ms, 10^-6, p0.5, mission critical delay sensitive data, Lowest Priority
+      case 70: // 200ms, 10^-6, p5.5, mision critical data
+        // RLC
+        DRB_rlc_config->present = RLC_Config_PR_am;
+        DRB_rlc_config->choice.am.ul_AM_RLC.t_PollRetransmit = T_PollRetransmit_ms50;
+        DRB_rlc_config->choice.am.ul_AM_RLC.pollPDU = PollPDU_p16;
+        DRB_rlc_config->choice.am.ul_AM_RLC.pollByte = PollByte_kBinfinity;
+        DRB_rlc_config->choice.am.ul_AM_RLC.maxRetxThreshold = UL_AM_RLC__maxRetxThreshold_t8;
+        DRB_rlc_config->choice.am.dl_AM_RLC.t_Reordering = T_Reordering_ms35;
+        DRB_rlc_config->choice.am.dl_AM_RLC.t_StatusProhibit = T_StatusProhibit_ms25;
+
+        // PDCP
+        if (DRB_pdcp_config->rlc_AM) {
+          free(DRB_pdcp_config->rlc_AM);
+          DRB_pdcp_config->rlc_AM = NULL;
+        }
+
+        if (DRB_pdcp_config->rlc_UM) {
+          free(DRB_pdcp_config->rlc_UM);
+          DRB_pdcp_config->rlc_UM = NULL;
+        }
+
+        PDCP_rlc_AM = CALLOC(1, sizeof(*PDCP_rlc_AM));
+        DRB_pdcp_config->rlc_AM = PDCP_rlc_AM;
+        PDCP_rlc_AM->statusReportRequired = FALSE;
+        break;
+
+      default :
+        LOG_E(RRC, "not supported qci %d\n", ue_context_pP->ue_context.modify_e_rab[i].param.qos.qci);
+        ue_context_pP->ue_context.modify_e_rab[i].status = E_RAB_STATUS_FAILED;
+        ue_context_pP->ue_context.modify_e_rab[i].xid = xid;
+        ue_context_pP->ue_context.modify_e_rab[i].cause = S1AP_CAUSE_RADIO_NETWORK;
+        ue_context_pP->ue_context.modify_e_rab[i].cause_value = 37;//S1ap_CauseRadioNetwork_not_supported_QCI_value;
+        ue_context_pP->ue_context.nb_of_failed_e_rabs++;
+        continue;
     }
 
     DRB_pdcp_config->headerCompression.present = PDCP_Config__headerCompression_PR_notUsed;
-
     DRB_lchan_config = DRB_config->logicalChannelConfig;
     DRB_ul_SpecificParameters = DRB_lchan_config->ul_SpecificParameters;
 
@@ -2393,32 +2266,27 @@ rrc_eNB_modify_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* cons
       DRB_ul_SpecificParameters->priority= 4;
 
     DRB_ul_SpecificParameters->prioritisedBitRate = LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8;
-
     DRB_ul_SpecificParameters->bucketSizeDuration =
       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
     ASN_SEQUENCE_ADD(&(DRB_configList2)->list, DRB_config);
-
     LOG_I(RRC, "EPS ID %ld, DRB ID %ld (index %d), QCI %d, priority %ld, LCID %ld LCGID %ld \n",
-      *DRB_config->eps_BearerIdentity,
-      DRB_config->drb_Identity, i,
-      ue_context_pP->ue_context.modify_e_rab[i].param.qos.qci,
-      DRB_ul_SpecificParameters->priority,
-      *(DRB_config->logicalChannelIdentity),
-      *DRB_ul_SpecificParameters->logicalChannelGroup
-      );
-
+          *DRB_config->eps_BearerIdentity,
+          DRB_config->drb_Identity, i,
+          ue_context_pP->ue_context.modify_e_rab[i].param.qos.qci,
+          DRB_ul_SpecificParameters->priority,
+          *(DRB_config->logicalChannelIdentity),
+          *DRB_ul_SpecificParameters->logicalChannelGroup
+         );
     //e_rab_done++;
     ue_context_pP->ue_context.modify_e_rab[i].status = E_RAB_STATUS_DONE;
     ue_context_pP->ue_context.modify_e_rab[i].xid = xid;
-
     {
       if (ue_context_pP->ue_context.modify_e_rab[i].param.nas_pdu.buffer != NULL) {
         dedicatedInfoNas = CALLOC(1, sizeof(DedicatedInfoNAS_t));
         memset(dedicatedInfoNas, 0, sizeof(OCTET_STRING_t));
         OCTET_STRING_fromBuf(dedicatedInfoNas,
-                 (char*)ue_context_pP->ue_context.modify_e_rab[i].param.nas_pdu.buffer,
-                 ue_context_pP->ue_context.modify_e_rab[i].param.nas_pdu.length);
+                             (char *)ue_context_pP->ue_context.modify_e_rab[i].param.nas_pdu.buffer,
+                             ue_context_pP->ue_context.modify_e_rab[i].param.nas_pdu.length);
         ASN_SEQUENCE_ADD(&dedicatedInfoNASList->list, dedicatedInfoNas);
         LOG_I(RRC, "add NAS info with size %d (rab id %d)\n",ue_context_pP->ue_context.modify_e_rab[i].param.nas_pdu.length, i);
       }
@@ -2440,32 +2308,30 @@ rrc_eNB_modify_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   }
 
   memset(buffer, 0, RRC_BUF_SIZE);
-
   size = do_RRCConnectionReconfiguration(ctxt_pP,
-                                          buffer,
-                                          xid,
-                                          (SRB_ToAddModList_t*)NULL,
-                                          (DRB_ToAddModList_t*)DRB_configList2,
-                                          (DRB_ToReleaseList_t*)NULL,  // DRB2_list,
-                                          (struct SPS_Config*)NULL,    // *sps_Config,
-                                          NULL, NULL, NULL, NULL,NULL,
-                                          NULL, NULL,  NULL, NULL, NULL, NULL,
-                                          (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList*)dedicatedInfoNASList
+                                         buffer,
+                                         xid,
+                                         (SRB_ToAddModList_t *)NULL,
+                                         (DRB_ToAddModList_t *)DRB_configList2,
+                                         (DRB_ToReleaseList_t *)NULL, // DRB2_list,
+                                         (struct SPS_Config *)NULL,   // *sps_Config,
+                                         NULL, NULL, NULL, NULL,NULL,
+                                         NULL, NULL,  NULL, NULL, NULL, NULL,
+                                         (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *)dedicatedInfoNASList
 #if defined(Rel10) || defined(Rel14)
-                                          , (SCellToAddMod_r10_t*)NULL
+                                         , (SCellToAddMod_r10_t *)NULL
 #endif
-                                          );
-
-
+                                        );
 #ifdef RRC_MSG_PRINT
   LOG_F(RRC,"[MSG] RRC Connection Reconfiguration\n");
+
   for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
+    LOG_F(RRC,"%02x ", ((uint8_t *)buffer)[i]);
   }
+
   LOG_F(RRC,"\n");
   ////////////////////////////////////////
 #endif
-
 #if defined(ENABLE_ITTI)
 
   /* Free all NAS PDUs */
@@ -2476,16 +2342,14 @@ rrc_eNB_modify_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* cons
       ue_context_pP->ue_context.modify_e_rab[i].param.nas_pdu.buffer = NULL;
     }
   }
-#endif
 
- LOG_I(RRC,
+#endif
+  LOG_I(RRC,
         "[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration (bytes %d, UE RNTI %x)\n",
         ctxt_pP->module_id, ctxt_pP->frame, size, ue_context_pP->ue_context.rnti);
-
   LOG_D(RRC,
         "[FRAME %05d][RRC_eNB][MOD %u][][--- PDCP_DATA_REQ/%d Bytes (rrcConnectionReconfiguration 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_eNB_mui, ctxt_pP->module_id, DCCH);
-
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
     MSC_RRC_UE,
@@ -2496,7 +2360,6 @@ rrc_eNB_modify_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* cons
     ue_context_pP->ue_context.rnti,
     rrc_eNB_mui,
     size);
-
   rrc_data_req(
     ctxt_pP,
     DCCH,
@@ -2510,101 +2373,101 @@ rrc_eNB_modify_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* cons
 
 //-----------------------------------------------------------------------------
 void
-rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_release(  const protocol_ctxt_t*   const ctxt_pP,
-        rrc_eNB_ue_context_t*    const ue_context_pP,
-        uint8_t                  xid,
-        uint32_t                 nas_length,
-        uint8_t*                 nas_buffer)
+rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_release(  const protocol_ctxt_t   *const ctxt_pP,
+    rrc_eNB_ue_context_t    *const ue_context_pP,
+    uint8_t                  xid,
+    uint32_t                 nas_length,
+    uint8_t                 *nas_buffer)
 //-----------------------------------------------------------------------------
 {
-    uint8_t                             buffer[RRC_BUF_SIZE];
-    int                                 i;
-    uint16_t                            size  = 0;
-    DRB_ToReleaseList_t**                DRB_Release_configList2=NULL;
-    DRB_Identity_t* DRB_release;
-    struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *dedicatedInfoNASList = NULL;
-
-    DRB_Release_configList2=&ue_context_pP->ue_context.DRB_Release_configList2[xid];
-    if (*DRB_Release_configList2) {
-      free(*DRB_Release_configList2);
-    }
-    *DRB_Release_configList2 = CALLOC(1, sizeof(**DRB_Release_configList2));
-
-    for(i = 0; i < NB_RB_MAX; i++){
-        if((ue_context_pP->ue_context.e_rab[i].status == E_RAB_STATUS_TORELEASE) && ue_context_pP->ue_context.e_rab[i].xid == xid){
-            DRB_release = CALLOC(1, sizeof(DRB_Identity_t));
-            *DRB_release = i+1;
-            ASN_SEQUENCE_ADD(&(*DRB_Release_configList2)->list, DRB_release);
-            //free(DRB_release);
-        }
-    }
+  uint8_t                             buffer[RRC_BUF_SIZE];
+  int                                 i;
+  uint16_t                            size  = 0;
+  DRB_ToReleaseList_t                **DRB_Release_configList2=NULL;
+  DRB_Identity_t *DRB_release;
+  struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *dedicatedInfoNASList = NULL;
+  DRB_Release_configList2=&ue_context_pP->ue_context.DRB_Release_configList2[xid];
 
-    /* If list is empty free the list and reset the address */
-    if (nas_length > 0) {
-        DedicatedInfoNAS_t                 *dedicatedInfoNas                 = NULL;
-        dedicatedInfoNASList = CALLOC(1, sizeof(struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList));
-        dedicatedInfoNas = CALLOC(1, sizeof(DedicatedInfoNAS_t));
-        memset(dedicatedInfoNas, 0, sizeof(OCTET_STRING_t));
-                       OCTET_STRING_fromBuf(dedicatedInfoNas,
-                              (char*)nas_buffer,
-                              nas_length);
-        ASN_SEQUENCE_ADD(&dedicatedInfoNASList->list, dedicatedInfoNas);
-        LOG_I(RRC,"add NAS info with size %d\n",nas_length);
-    } else {
-      LOG_W(RRC,"dedlicated NAS list is empty\n");
+  if (*DRB_Release_configList2) {
+    free(*DRB_Release_configList2);
+  }
+
+  *DRB_Release_configList2 = CALLOC(1, sizeof(**DRB_Release_configList2));
+
+  for(i = 0; i < NB_RB_MAX; i++) {
+    if((ue_context_pP->ue_context.e_rab[i].status == E_RAB_STATUS_TORELEASE) && ue_context_pP->ue_context.e_rab[i].xid == xid) {
+      DRB_release = CALLOC(1, sizeof(DRB_Identity_t));
+      *DRB_release = i+1;
+      ASN_SEQUENCE_ADD(&(*DRB_Release_configList2)->list, DRB_release);
+      //free(DRB_release);
     }
+  }
+
+  /* If list is empty free the list and reset the address */
+  if (nas_length > 0) {
+    DedicatedInfoNAS_t                 *dedicatedInfoNas                 = NULL;
+    dedicatedInfoNASList = CALLOC(1, sizeof(struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList));
+    dedicatedInfoNas = CALLOC(1, sizeof(DedicatedInfoNAS_t));
+    memset(dedicatedInfoNas, 0, sizeof(OCTET_STRING_t));
+    OCTET_STRING_fromBuf(dedicatedInfoNas,
+                         (char *)nas_buffer,
+                         nas_length);
+    ASN_SEQUENCE_ADD(&dedicatedInfoNASList->list, dedicatedInfoNas);
+    LOG_I(RRC,"add NAS info with size %d\n",nas_length);
+  } else {
+    LOG_W(RRC,"dedlicated NAS list is empty\n");
+  }
 
-    memset(buffer, 0, RRC_BUF_SIZE);
-    size = do_RRCConnectionReconfiguration(ctxt_pP,
-                                    buffer,
-                                    xid,
-                                    NULL,
-                                    NULL,
-                                    (DRB_ToReleaseList_t*)*DRB_Release_configList2,
-                                    NULL,
-                                    NULL,
-                                    NULL,
-                                    NULL,
-                                    NULL,
-                                    NULL,
-                                    NULL,
-                                    NULL,
-                                    NULL,
-                                    NULL,
-                                    NULL,
-                                    NULL,
-                                    (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList*)dedicatedInfoNASList
+  memset(buffer, 0, RRC_BUF_SIZE);
+  size = do_RRCConnectionReconfiguration(ctxt_pP,
+                                         buffer,
+                                         xid,
+                                         NULL,
+                                         NULL,
+                                         (DRB_ToReleaseList_t *)*DRB_Release_configList2,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *)dedicatedInfoNASList
 #if defined(Rel10) || defined(Rel14)
-                                    , (SCellToAddMod_r10_t*)NULL
+                                         , (SCellToAddMod_r10_t *)NULL
 #endif
-                                   );
-    ue_context_pP->ue_context.e_rab_release_command_flag = 1;
-
+                                        );
+  ue_context_pP->ue_context.e_rab_release_command_flag = 1;
 #ifdef RRC_MSG_PRINT
   LOG_F(RRC,"[MSG] RRC Connection Reconfiguration\n");
+
   for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
+    LOG_F(RRC,"%02x ", ((uint8_t *)buffer)[i]);
   }
+
   LOG_F(RRC,"\n");
   ////////////////////////////////////////
 #endif
-
 #if defined(ENABLE_ITTI)
+
   /* Free all NAS PDUs */
   if (nas_length > 0) {
-      /* Free the NAS PDU buffer and invalidate it */
-      free(nas_buffer);
+    /* Free the NAS PDU buffer and invalidate it */
+    free(nas_buffer);
   }
-#endif
 
+#endif
   LOG_I(RRC,
         "[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration (bytes %d, UE RNTI %x)\n",
         ctxt_pP->module_id, ctxt_pP->frame, size, ue_context_pP->ue_context.rnti);
-
   LOG_D(RRC,
         "[FRAME %05d][RRC_eNB][MOD %u][][--- PDCP_DATA_REQ/%d Bytes (rrcConnectionReconfiguration 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_eNB_mui, ctxt_pP->module_id, DCCH);
-
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
     MSC_RRC_UE,
@@ -2615,7 +2478,6 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_release(  const protocol_
     ue_context_pP->ue_context.rnti,
     rrc_eNB_mui,
     size);
-
   rrc_data_req(
     ctxt_pP,
     DCCH,
@@ -2624,33 +2486,29 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_release(  const protocol_
     size,
     buffer,
     PDCP_TRANSMISSION_MODE_CONTROL);
-
 }
-#endif 
+#endif
 //-----------------------------------------------------------------------------
 void
-rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* const ctxt_pP,
-						     rrc_eNB_ue_context_t*          const ue_context_pP,
-						     const uint8_t                ho_state
-						     )
+rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *const ctxt_pP,
+    rrc_eNB_ue_context_t          *const ue_context_pP,
+    const uint8_t                ho_state
+                                                    )
 //-----------------------------------------------------------------------------
 {
   uint8_t                             buffer[RRC_BUF_SIZE];
   uint16_t                            size;
   int                                 i;
-
   // configure SRB1/SRB2, PhysicalConfigDedicated, MAC_MainConfig for UE
-  eNB_RRC_INST*                       rrc_inst = RC.rrc[ctxt_pP->module_id];
-  struct PhysicalConfigDedicated**    physicalConfigDedicated = &ue_context_pP->ue_context.physicalConfigDedicated;
-
+  eNB_RRC_INST                       *rrc_inst = RC.rrc[ctxt_pP->module_id];
+  struct PhysicalConfigDedicated    **physicalConfigDedicated = &ue_context_pP->ue_context.physicalConfigDedicated;
   struct SRB_ToAddMod                *SRB2_config                      = NULL;
   struct SRB_ToAddMod__rlc_Config    *SRB2_rlc_config                  = NULL;
   struct SRB_ToAddMod__logicalChannelConfig *SRB2_lchan_config         = NULL;
   struct LogicalChannelConfig__ul_SpecificParameters
-      *SRB2_ul_SpecificParameters       = NULL;
-  SRB_ToAddModList_t*                 SRB_configList = ue_context_pP->ue_context.SRB_configList;
+    *SRB2_ul_SpecificParameters       = NULL;
+  SRB_ToAddModList_t                 *SRB_configList = ue_context_pP->ue_context.SRB_configList;
   SRB_ToAddModList_t                 **SRB_configList2                  = NULL;
-
   struct DRB_ToAddMod                *DRB_config                       = NULL;
   struct RLC_Config                  *DRB_rlc_config                   = NULL;
   struct PDCP_Config                 *DRB_pdcp_config                  = NULL;
@@ -2658,10 +2516,10 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   struct PDCP_Config__rlc_UM         *PDCP_rlc_UM                      = NULL;
   struct LogicalChannelConfig        *DRB_lchan_config                 = NULL;
   struct LogicalChannelConfig__ul_SpecificParameters
-      *DRB_ul_SpecificParameters        = NULL;
-  DRB_ToAddModList_t**                DRB_configList = &ue_context_pP->ue_context.DRB_configList;
-  DRB_ToAddModList_t**                DRB_configList2 = NULL;
-   MAC_MainConfig_t                   *mac_MainConfig                   = NULL;
+    *DRB_ul_SpecificParameters        = NULL;
+  DRB_ToAddModList_t                **DRB_configList = &ue_context_pP->ue_context.DRB_configList;
+  DRB_ToAddModList_t                **DRB_configList2 = NULL;
+  MAC_MainConfig_t                   *mac_MainConfig                   = NULL;
   MeasObjectToAddModList_t           *MeasObj_list                     = NULL;
   MeasObjectToAddMod_t               *MeasObj                          = NULL;
   ReportConfigToAddModList_t         *ReportConfig_list                = NULL;
@@ -2674,10 +2532,8 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   //     uint8_t sCellIndexToAdd = rrc_find_free_SCell_index(enb_mod_idP, ue_mod_idP, 1);
   //uint8_t                            sCellIndexToAdd = 0;
 #endif
-
   long                               *logicalchannelgroup, *logicalchannelgroup_drb;
   long                               *maxHARQ_Tx, *periodicBSR_Timer;
-
   RSRP_Range_t                       *rsrp                             = NULL;
   struct MeasConfig__speedStatePars  *Sparams                          = NULL;
   QuantityConfig_t                   *quantityConfig                   = NULL;
@@ -2687,11 +2543,8 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   DedicatedInfoNAS_t                 *dedicatedInfoNas                 = NULL;
   /* for no gcc warnings */
   (void)dedicatedInfoNas;
-
   C_RNTI_t                           *cba_RNTI                         = NULL;
-
   uint8_t xid = rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id);   //Transaction_id,
-
 #ifdef CBA
   //struct PUSCH_CBAConfigDedicated_vlola  *pusch_CBAConfigDedicated_vlola;
   uint8_t                            *cba_RNTI_buf;
@@ -2717,24 +2570,22 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   }
 
 #endif
-
   T(T_ENB_RRC_CONNECTION_RECONFIGURATION, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
   // Configure SRB2
   /// SRB2
   SRB_configList2=&ue_context_pP->ue_context.SRB_configList2[xid];
+
   if (*SRB_configList2) {
     free(*SRB_configList2);
   }
+
   *SRB_configList2 = CALLOC(1, sizeof(**SRB_configList2));
   memset(*SRB_configList2, 0, sizeof(**SRB_configList2));
   SRB2_config = CALLOC(1, sizeof(*SRB2_config));
-
   SRB2_config->srb_Identity = 2;
   SRB2_rlc_config = CALLOC(1, sizeof(*SRB2_rlc_config));
   SRB2_config->rlc_Config = SRB2_rlc_config;
-
   SRB2_rlc_config->present = SRB_ToAddMod__rlc_Config_PR_explicitValue;
   SRB2_rlc_config->choice.explicitValue.present = RLC_Config_PR_am;
   SRB2_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.t_PollRetransmit = T_PollRetransmit_ms15;
@@ -2743,26 +2594,19 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   SRB2_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.maxRetxThreshold = UL_AM_RLC__maxRetxThreshold_t32;
   SRB2_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_Reordering = T_Reordering_ms35;
   SRB2_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_StatusProhibit = T_StatusProhibit_ms10;
-
   SRB2_lchan_config = CALLOC(1, sizeof(*SRB2_lchan_config));
   SRB2_config->logicalChannelConfig = SRB2_lchan_config;
-
   SRB2_lchan_config->present = SRB_ToAddMod__logicalChannelConfig_PR_explicitValue;
-
   SRB2_ul_SpecificParameters = CALLOC(1, sizeof(*SRB2_ul_SpecificParameters));
-
   SRB2_ul_SpecificParameters->priority = 3; // let some priority for SRB1 and dedicated DRBs
   SRB2_ul_SpecificParameters->prioritisedBitRate =
     LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
   SRB2_ul_SpecificParameters->bucketSizeDuration =
     LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
   // LCG for CCCH and DCCH is 0 as defined in 36331
   logicalchannelgroup = CALLOC(1, sizeof(long));
   *logicalchannelgroup = 0;
-
   SRB2_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup;
-
   SRB2_lchan_config->choice.explicitValue.ul_SpecificParameters = SRB2_ul_SpecificParameters;
   // this list has the configuration for SRB1 and SRB2
   ASN_SEQUENCE_ADD(&SRB_configList->list, SRB2_config);
@@ -2775,21 +2619,20 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   if (*DRB_configList) {
     free(*DRB_configList);
   }
+
   *DRB_configList = CALLOC(1, sizeof(**DRB_configList));
   memset(*DRB_configList, 0, sizeof(**DRB_configList));
-
   // list for the configured DRB for a this xid
   DRB_configList2=&ue_context_pP->ue_context.DRB_configList2[xid];
+
   if (*DRB_configList2) {
     free(*DRB_configList2);
   }
+
   *DRB_configList2 = CALLOC(1, sizeof(**DRB_configList2));
   memset(*DRB_configList2, 0, sizeof(**DRB_configList2));
-
-
   /// DRB
   DRB_config = CALLOC(1, sizeof(*DRB_config));
-
   DRB_config->eps_BearerIdentity = CALLOC(1, sizeof(long));
   *(DRB_config->eps_BearerIdentity) = 5L; // LW set to first value, allowed value 5..15, value : x+4
   // DRB_config->drb_Identity = (DRB_Identity_t) 1; //allowed values 1..32
@@ -2799,7 +2642,6 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   *(DRB_config->logicalChannelIdentity) = (long)3; // value : x+2
   DRB_rlc_config = CALLOC(1, sizeof(*DRB_rlc_config));
   DRB_config->rlc_Config = DRB_rlc_config;
-
 #ifdef RRC_DEFAULT_RAB_IS_AM
   DRB_rlc_config->present = RLC_Config_PR_am;
   DRB_rlc_config->choice.am.ul_AM_RLC.t_PollRetransmit = T_PollRetransmit_ms50;
@@ -2818,18 +2660,15 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = T_Reordering_ms35;
 #endif
 #endif
-
   DRB_pdcp_config = CALLOC(1, sizeof(*DRB_pdcp_config));
   DRB_config->pdcp_Config = DRB_pdcp_config;
   DRB_pdcp_config->discardTimer = CALLOC(1, sizeof(long));
   *DRB_pdcp_config->discardTimer = PDCP_Config__discardTimer_infinity;
   DRB_pdcp_config->rlc_AM = NULL;
   DRB_pdcp_config->rlc_UM = NULL;
-
   /* avoid gcc warnings */
   (void)PDCP_rlc_AM;
   (void)PDCP_rlc_UM;
-
 #ifdef RRC_DEFAULT_RAB_IS_AM // EXMIMO_IOT
   PDCP_rlc_AM = CALLOC(1, sizeof(*PDCP_rlc_AM));
   DRB_pdcp_config->rlc_AM = PDCP_rlc_AM;
@@ -2840,33 +2679,25 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   PDCP_rlc_UM->pdcp_SN_Size = PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
 #endif
   DRB_pdcp_config->headerCompression.present = PDCP_Config__headerCompression_PR_notUsed;
-
   DRB_lchan_config = CALLOC(1, sizeof(*DRB_lchan_config));
   DRB_config->logicalChannelConfig = DRB_lchan_config;
   DRB_ul_SpecificParameters = CALLOC(1, sizeof(*DRB_ul_SpecificParameters));
   DRB_lchan_config->ul_SpecificParameters = DRB_ul_SpecificParameters;
-
   DRB_ul_SpecificParameters->priority = 12;    // lower priority than srb1, srb2 and other dedicated bearer
   DRB_ul_SpecificParameters->prioritisedBitRate =LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8 ;
-    //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
+  //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
   DRB_ul_SpecificParameters->bucketSizeDuration =
     LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
   // LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
   logicalchannelgroup_drb = CALLOC(1, sizeof(long));
   *logicalchannelgroup_drb = 1;
   DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb;
-
   ASN_SEQUENCE_ADD(&(*DRB_configList)->list, DRB_config);
   ASN_SEQUENCE_ADD(&(*DRB_configList2)->list, DRB_config);
-
   //ue_context_pP->ue_context.DRB_configList2[0] = &(*DRB_configList);
-
   mac_MainConfig = CALLOC(1, sizeof(*mac_MainConfig));
   ue_context_pP->ue_context.mac_MainConfig = mac_MainConfig;
-
   mac_MainConfig->ul_SCH_Config = CALLOC(1, sizeof(*mac_MainConfig->ul_SCH_Config));
-
   maxHARQ_Tx = CALLOC(1, sizeof(long));
   *maxHARQ_Tx = MAC_MainConfig__ul_SCH_Config__maxHARQ_Tx_n5;
   mac_MainConfig->ul_SCH_Config->maxHARQ_Tx = maxHARQ_Tx;
@@ -2875,20 +2706,13 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   mac_MainConfig->ul_SCH_Config->periodicBSR_Timer = periodicBSR_Timer;
   mac_MainConfig->ul_SCH_Config->retxBSR_Timer = RetxBSR_Timer_r12_sf320;
   mac_MainConfig->ul_SCH_Config->ttiBundling = 0; // FALSE
-
   mac_MainConfig->timeAlignmentTimerDedicated = TimeAlignmentTimer_infinity;
-
   mac_MainConfig->drx_Config = NULL;
-
   mac_MainConfig->phr_Config = CALLOC(1, sizeof(*mac_MainConfig->phr_Config));
-
   mac_MainConfig->phr_Config->present = MAC_MainConfig__phr_Config_PR_setup;
   mac_MainConfig->phr_Config->choice.setup.periodicPHR_Timer = MAC_MainConfig__phr_Config__setup__periodicPHR_Timer_sf20; // sf20 = 20 subframes
-
   mac_MainConfig->phr_Config->choice.setup.prohibitPHR_Timer = MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf20; // sf20 = 20 subframes
-
   mac_MainConfig->phr_Config->choice.setup.dl_PathlossChange = MAC_MainConfig__phr_Config__setup__dl_PathlossChange_dB1;  // Value dB1 =1 dB, dB3 = 3 dB
-
 #if defined(Rel10) || defined(Rel14)
   sr_ProhibitTimer_r9 = CALLOC(1, sizeof(long));
   *sr_ProhibitTimer_r9 = 0;   // SR tx on PUCCH, Value in number of SR period(s). Value 0 = no timer for SR, Value 2= 2*SR
@@ -2904,62 +2728,63 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
     if ((*physicalConfigDedicated)->antennaInfo) {
       (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.transmissionMode = rrc_inst->configuration.ue_TransmissionMode[0];
       LOG_D(RRC,"Setting transmission mode to %ld+1\n",rrc_inst->configuration.ue_TransmissionMode[0]);
+
       if (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm3) {
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=     
-	  CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
-	  AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm3;
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf= MALLOC(1);
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf[0] = 0xc0;
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.size=1;
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.bits_unused=6;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=
+          CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
+          AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm3;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf= MALLOC(1);
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf[0] = 0xc0;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.size=1;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.bits_unused=6;
       }
       else if (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm4) {
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=     
-	  CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
-	  AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm4;
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.buf= MALLOC(1);
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.buf[0] = 0xfc;
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.size=1;
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.bits_unused=2;
-
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=
+          CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
+          AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm4;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.buf= MALLOC(1);
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.buf[0] = 0xfc;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.size=1;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.bits_unused=2;
       }
       else if (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm5) {
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=     
-	  CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
-	  AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm5;
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.buf= MALLOC(1);
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.buf[0] = 0xf0;
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.size=1;
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.bits_unused=4;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=
+          CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
+          AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm5;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.buf= MALLOC(1);
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.buf[0] = 0xf0;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.size=1;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.bits_unused=4;
       }
       else if (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm6) {
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=     
-	  CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
-	  AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm6;
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.buf= MALLOC(1);
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.buf[0] = 0xf0;
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.size=1;
-	(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.bits_unused=4;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=
+          CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
+          AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm6;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.buf= MALLOC(1);
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.buf[0] = 0xf0;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.size=1;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.bits_unused=4;
       }
     }
     else {
       LOG_E(RRC,"antenna_info not present in physical_config_dedicated. Not reconfiguring!\n");
     }
+
     if ((*physicalConfigDedicated)->cqi_ReportConfig) {
       if ((rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm4) ||
-	  (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm5) ||
-	  (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm6)) {
-	//feedback mode needs to be set as well
-	//TODO: I think this is taken into account in the PHY automatically based on the transmission mode variable
-	printf("setting cqi reporting mode to rm31\n");
+          (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm5) ||
+          (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm6)) {
+        //feedback mode needs to be set as well
+        //TODO: I think this is taken into account in the PHY automatically based on the transmission mode variable
+        printf("setting cqi reporting mode to rm31\n");
 #if defined(Rel10) || defined(Rel14)
-	*((*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportModeAperiodic)=CQI_ReportModeAperiodic_rm31;
+        *((*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportModeAperiodic)=CQI_ReportModeAperiodic_rm31;
 #else
-	*((*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportModeAperiodic)=CQI_ReportConfig__cqi_ReportModeAperiodic_rm31; // HLC CQI, no PMI
+        *((*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportModeAperiodic)=CQI_ReportConfig__cqi_ReportModeAperiodic_rm31; // HLC CQI, no PMI
 #endif
       }
     }
@@ -2974,54 +2799,43 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   // Measurement ID list
   MeasId_list = CALLOC(1, sizeof(*MeasId_list));
   memset((void *)MeasId_list, 0, sizeof(*MeasId_list));
-
   MeasId0 = CALLOC(1, sizeof(*MeasId0));
   MeasId0->measId = 1;
   MeasId0->measObjectId = 1;
   MeasId0->reportConfigId = 1;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId0);
-
   MeasId1 = CALLOC(1, sizeof(*MeasId1));
   MeasId1->measId = 2;
   MeasId1->measObjectId = 1;
   MeasId1->reportConfigId = 2;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId1);
-
   MeasId2 = CALLOC(1, sizeof(*MeasId2));
   MeasId2->measId = 3;
   MeasId2->measObjectId = 1;
   MeasId2->reportConfigId = 3;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId2);
-
   MeasId3 = CALLOC(1, sizeof(*MeasId3));
   MeasId3->measId = 4;
   MeasId3->measObjectId = 1;
   MeasId3->reportConfigId = 4;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId3);
-
   MeasId4 = CALLOC(1, sizeof(*MeasId4));
   MeasId4->measId = 5;
   MeasId4->measObjectId = 1;
   MeasId4->reportConfigId = 5;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId4);
-
   MeasId5 = CALLOC(1, sizeof(*MeasId5));
   MeasId5->measId = 6;
   MeasId5->measObjectId = 1;
   MeasId5->reportConfigId = 6;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId5);
-
   //  rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->measIdToAddModList = MeasId_list;
-
   // Add one EUTRA Measurement Object
   MeasObj_list = CALLOC(1, sizeof(*MeasObj_list));
   memset((void *)MeasObj_list, 0, sizeof(*MeasObj_list));
-
   // Configure MeasObject
-
   MeasObj = CALLOC(1, sizeof(*MeasObj));
   memset((void *)MeasObj, 0, sizeof(*MeasObj));
-
   MeasObj->measObjectId = 1;
   MeasObj->measObject.present = MeasObjectToAddMod__measObject_PR_measObjectEUTRA;
   MeasObj->measObject.choice.measObjectEUTRA.carrierFreq = 3350; //band 7, 2.68GHz
@@ -3033,10 +2847,8 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.size = 1;
   MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.bits_unused = 6;
   MeasObj->measObject.choice.measObjectEUTRA.offsetFreq = NULL;   // Default is 15 or 0dB
-
   MeasObj->measObject.choice.measObjectEUTRA.cellsToAddModList =
     (CellsToAddModList_t *) CALLOC(1, sizeof(*CellsToAddModList));
-
   CellsToAddModList = MeasObj->measObject.choice.measObjectEUTRA.cellsToAddModList;
 
   // Add adjacent cell lists (6 per eNB)
@@ -3045,28 +2857,19 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
     CellToAdd->cellIndex = i + 1;
     CellToAdd->physCellId = get_adjacent_cell_id(ctxt_pP->module_id, i);
     CellToAdd->cellIndividualOffset = Q_OffsetRange_dB0;
-
     ASN_SEQUENCE_ADD(&CellsToAddModList->list, CellToAdd);
   }
 
   ASN_SEQUENCE_ADD(&MeasObj_list->list, MeasObj);
   //  rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->measObjectToAddModList = MeasObj_list;
-
   // Report Configurations for periodical, A1-A5 events
   ReportConfig_list = CALLOC(1, sizeof(*ReportConfig_list));
-
   ReportConfig_per = CALLOC(1, sizeof(*ReportConfig_per));
-
   ReportConfig_A1 = CALLOC(1, sizeof(*ReportConfig_A1));
-
   ReportConfig_A2 = CALLOC(1, sizeof(*ReportConfig_A2));
-
   ReportConfig_A3 = CALLOC(1, sizeof(*ReportConfig_A3));
-
   ReportConfig_A4 = CALLOC(1, sizeof(*ReportConfig_A4));
-
   ReportConfig_A5 = CALLOC(1, sizeof(*ReportConfig_A5));
-
   ReportConfig_per->reportConfigId = 1;
   ReportConfig_per->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -3078,9 +2881,7 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
   ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_per);
-
   ReportConfig_A1->reportConfigId = 2;
   ReportConfig_A1->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -3091,15 +2892,13 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   a1_Threshold.present = ThresholdEUTRA_PR_threshold_RSRP;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA1.
   a1_Threshold.choice.threshold_RSRP = 10;
-
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerQuantity = ReportConfigEUTRA__triggerQuantity_rsrp;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
   ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A1);
-  
+
   if (ho_state == 1 /*HO_MEASURMENT */ ) {
     LOG_I(RRC, "[eNB %d] frame %d: requesting A2, A3, A4, A5, and A6 event reporting\n",
           ctxt_pP->module_id, ctxt_pP->frame);
@@ -3113,39 +2912,32 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
     eventA2.a2_Threshold.present = ThresholdEUTRA_PR_threshold_RSRP;
     ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
     eventA2.a2_Threshold.choice.threshold_RSRP = 10;
-
     ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
       ReportConfigEUTRA__triggerQuantity_rsrp;
     ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
     ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
     ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
     ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
     ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A2);
-
     ReportConfig_A3->reportConfigId = 4;
     ReportConfig_A3->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.present =
       ReportConfigEUTRA__triggerType_PR_event;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.present =
       ReportConfigEUTRA__triggerType__event__eventId_PR_eventA3;
-
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA3.a3_Offset = 1;   //10;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
     eventA3.reportOnLeave = 1;
-
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
       ReportConfigEUTRA__triggerQuantity_rsrp;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.hysteresis = 0.5; // FIXME ...hysteresis is of type long!
     ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.timeToTrigger =
       TimeToTrigger_ms40;
     ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A3);
-
     ReportConfig_A4->reportConfigId = 5;
     ReportConfig_A4->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -3156,16 +2948,13 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
     eventA4.a4_Threshold.present = ThresholdEUTRA_PR_threshold_RSRP;
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
     eventA4.a4_Threshold.choice.threshold_RSRP = 10;
-
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
       ReportConfigEUTRA__triggerQuantity_rsrp;
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
     ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
     ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A4);
-
     ReportConfig_A5->reportConfigId = 6;
     ReportConfig_A5->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -3180,20 +2969,16 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
     eventA5.a5_Threshold1.choice.threshold_RSRP = 10;
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
     eventA5.a5_Threshold2.choice.threshold_RSRP = 10;
-
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
       ReportConfigEUTRA__triggerQuantity_rsrp;
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
     ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
     ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A5);
     //  rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->reportConfigToAddModList = ReportConfig_list;
-
     rsrp = CALLOC(1, sizeof(RSRP_Range_t));
     *rsrp = 20;
-
     Sparams = CALLOC(1, sizeof(*Sparams));
     Sparams->present = MeasConfig__speedStatePars_PR_setup;
     Sparams->choice.setup.timeToTrigger_SF.sf_High = SpeedStateScaleFactors__sf_Medium_oDot75;
@@ -3202,7 +2987,6 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
     Sparams->choice.setup.mobilityStateParameters.n_CellChangeMedium = 5;
     Sparams->choice.setup.mobilityStateParameters.t_Evaluation = MobilityStateParameters__t_Evaluation_s60;
     Sparams->choice.setup.mobilityStateParameters.t_HystNormal = MobilityStateParameters__t_HystNormal_s120;
-
     quantityConfig = CALLOC(1, sizeof(*quantityConfig));
     memset((void *)quantityConfig, 0, sizeof(*quantityConfig));
     quantityConfig->quantityConfigEUTRA = CALLOC(1, sizeof(struct QuantityConfigEUTRA));
@@ -3216,7 +3000,6 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
       CALLOC(1, sizeof(*(quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ)));
     *quantityConfig->quantityConfigEUTRA->filterCoefficientRSRP = FilterCoefficient_fc4;
     *quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ = FilterCoefficient_fc4;
-
     LOG_I(RRC,
           "[eNB %d] Frame %d: potential handover preparation: store the information in an intermediate structure in case of failure\n",
           ctxt_pP->module_id, ctxt_pP->frame);
@@ -3230,15 +3013,14 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
     ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.drb_ToReleaseList = NULL;
     ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.mac_MainConfig =
       CALLOC(1, sizeof(*ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.mac_MainConfig));
-    memcpy((void*)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.mac_MainConfig,
+    memcpy((void *)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.mac_MainConfig,
            (void *)mac_MainConfig, sizeof(MAC_MainConfig_t));
     ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.physicalConfigDedicated =
       CALLOC(1, sizeof(PhysicalConfigDedicated_t));
-    memcpy((void*)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.physicalConfigDedicated,
-           (void*)ue_context_pP->ue_context.physicalConfigDedicated, sizeof(PhysicalConfigDedicated_t));
+    memcpy((void *)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.physicalConfigDedicated,
+           (void *)ue_context_pP->ue_context.physicalConfigDedicated, sizeof(PhysicalConfigDedicated_t));
     ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.sps_Config = NULL;
     //memcpy((void *)rrc_inst->handover_info[ue_mod_idP]->as_config.sourceRadioResourceConfig.sps_Config,(void *)rrc_inst->sps_Config[ue_mod_idP],sizeof(SPS_Config_t));
-
   }
 
 #if defined(ENABLE_ITTI)
@@ -3250,8 +3032,8 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
     if (ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer != NULL) {
       dedicatedInfoNas = CALLOC(1, sizeof(DedicatedInfoNAS_t));
       memset(dedicatedInfoNas, 0, sizeof(OCTET_STRING_t));
-      OCTET_STRING_fromBuf(dedicatedInfoNas, 
-			   (char*)ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer,
+      OCTET_STRING_fromBuf(dedicatedInfoNas,
+                           (char *)ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer,
                            ue_context_pP->ue_context.e_rab[i].param.nas_pdu.length);
       ASN_SEQUENCE_ADD(&dedicatedInfoNASList->list, dedicatedInfoNas);
     }
@@ -3262,11 +3044,10 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
       //      ue_context_pP->ue_context.e_rab[i].param.sgw_addr;
       //      ue_context_pP->ue_context.e_rab[i].param.gtp_teid;
     }
-
     /* TODO should test if e RAB are Ok before! */
     ue_context_pP->ue_context.e_rab[i].status = E_RAB_STATUS_DONE;
-    LOG_D(RRC, "setting the status for the default DRB (index %d) to (%d,%s)\n", 
-	  i, ue_context_pP->ue_context.e_rab[i].status, "E_RAB_STATUS_DONE");
+    LOG_D(RRC, "setting the status for the default DRB (index %d) to (%d,%s)\n",
+          i, ue_context_pP->ue_context.e_rab[i].status, "E_RAB_STATUS_DONE");
   }
 
   /* If list is empty free the list and reset the address */
@@ -3276,46 +3057,44 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   }
 
 #endif
-
   memset(buffer, 0, RRC_BUF_SIZE);
-
   size = do_RRCConnectionReconfiguration(ctxt_pP,
                                          buffer,
                                          xid,   //Transaction_id,
-                                         (SRB_ToAddModList_t*)*SRB_configList2, // SRB_configList
-                                         (DRB_ToAddModList_t*)*DRB_configList,
-                                         (DRB_ToReleaseList_t*)NULL,  // DRB2_list,
-                                         (struct SPS_Config*)NULL,    // *sps_Config,
-                                         (struct PhysicalConfigDedicated*)*physicalConfigDedicated,
+                                         (SRB_ToAddModList_t *)*SRB_configList2, // SRB_configList
+                                         (DRB_ToAddModList_t *)*DRB_configList,
+                                         (DRB_ToReleaseList_t *)NULL, // DRB2_list,
+                                         (struct SPS_Config *)NULL,   // *sps_Config,
+                                         (struct PhysicalConfigDedicated *)*physicalConfigDedicated,
 #ifdef EXMIMO_IOT
                                          NULL, NULL, NULL,NULL,
 #else
-                                         (MeasObjectToAddModList_t*)MeasObj_list,
-                                         (ReportConfigToAddModList_t*)ReportConfig_list,
-                                         (QuantityConfig_t*)quantityConfig,
-                                         (MeasIdToAddModList_t*)MeasId_list,
-#endif
-                                         (MAC_MainConfig_t*)mac_MainConfig,
-                                         (MeasGapConfig_t*)NULL,
-                                         (MobilityControlInfo_t*)NULL,
-                                         (struct MeasConfig__speedStatePars*)Sparams,
-                                         (RSRP_Range_t*)rsrp,
-                                         (C_RNTI_t*)cba_RNTI,
-                                         (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList*)dedicatedInfoNASList
+                                         (MeasObjectToAddModList_t *)MeasObj_list,
+                                         (ReportConfigToAddModList_t *)ReportConfig_list,
+                                         (QuantityConfig_t *)quantityConfig,
+                                         (MeasIdToAddModList_t *)MeasId_list,
+#endif
+                                         (MAC_MainConfig_t *)mac_MainConfig,
+                                         (MeasGapConfig_t *)NULL,
+                                         (MobilityControlInfo_t *)NULL,
+                                         (struct MeasConfig__speedStatePars *)Sparams,
+                                         (RSRP_Range_t *)rsrp,
+                                         (C_RNTI_t *)cba_RNTI,
+                                         (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *)dedicatedInfoNASList
 #if defined(Rel10) || defined(Rel14)
-                                         , (SCellToAddMod_r10_t*)NULL
+                                         , (SCellToAddMod_r10_t *)NULL
 #endif
                                         );
-
 #ifdef RRC_MSG_PRINT
   LOG_F(RRC,"[MSG] RRC Connection Reconfiguration\n");
+
   for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
+    LOG_F(RRC,"%02x ", ((uint8_t *)buffer)[i]);
   }
+
   LOG_F(RRC,"\n");
   ////////////////////////////////////////
 #endif
-
 #if defined(ENABLE_ITTI)
 
   /* Free all NAS PDUs */
@@ -3328,15 +3107,12 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
   }
 
 #endif
-
   LOG_I(RRC,
         "[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration (bytes %d, UE id %x)\n",
         ctxt_pP->module_id, ctxt_pP->frame, size, ue_context_pP->ue_context.rnti);
-
   LOG_D(RRC,
         "[FRAME %05d][RRC_eNB][MOD %u][][--- PDCP_DATA_REQ/%d Bytes (rrcConnectionReconfiguration 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_eNB_mui, ctxt_pP->module_id, DCCH);
-
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
     MSC_RRC_UE,
@@ -3347,42 +3123,38 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
     ue_context_pP->ue_context.rnti,
     rrc_eNB_mui,
     size);
-
   rrc_data_req(
-	       ctxt_pP,
-	       DCCH,
-	       rrc_eNB_mui++,
-	       SDU_CONFIRM_NO,
-	       size,
-	       buffer,
-	       PDCP_TRANSMISSION_MODE_CONTROL);
+    ctxt_pP,
+    DCCH,
+    rrc_eNB_mui++,
+    SDU_CONFIRM_NO,
+    size,
+    buffer,
+    PDCP_TRANSMISSION_MODE_CONTROL);
 }
 
 //-----------------------------------------------------------------------------
 void
-flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* const ctxt_pP,
-                 rrc_eNB_ue_context_t*          const ue_context_pP,
-                 const uint8_t                ho_state,
-                 agent_reconf_rrc * trig_param
-                 )
+flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *const ctxt_pP,
+    rrc_eNB_ue_context_t          *const ue_context_pP,
+    const uint8_t                ho_state,
+    agent_reconf_rrc *trig_param
+                                                            )
 //-----------------------------------------------------------------------------
 {
   uint8_t                             buffer[RRC_BUF_SIZE];
   uint16_t                            size;
   int                                 i;
- 
   // configure SRB1/SRB2, PhysicalConfigDedicated, MAC_MainConfig for UE
-  eNB_RRC_INST*                       rrc_inst = RC.rrc[ctxt_pP->module_id];
-  struct PhysicalConfigDedicated**    physicalConfigDedicated = &ue_context_pP->ue_context.physicalConfigDedicated;
-
+  eNB_RRC_INST                       *rrc_inst = RC.rrc[ctxt_pP->module_id];
+  struct PhysicalConfigDedicated    **physicalConfigDedicated = &ue_context_pP->ue_context.physicalConfigDedicated;
   struct SRB_ToAddMod                *SRB2_config                      = NULL;
   struct SRB_ToAddMod__rlc_Config    *SRB2_rlc_config                  = NULL;
   struct SRB_ToAddMod__logicalChannelConfig *SRB2_lchan_config         = NULL;
   struct LogicalChannelConfig__ul_SpecificParameters
-      *SRB2_ul_SpecificParameters       = NULL;
-  SRB_ToAddModList_t*                 SRB_configList = ue_context_pP->ue_context.SRB_configList;
+    *SRB2_ul_SpecificParameters       = NULL;
+  SRB_ToAddModList_t                 *SRB_configList = ue_context_pP->ue_context.SRB_configList;
   SRB_ToAddModList_t                 **SRB_configList2                  = NULL;
-
   struct DRB_ToAddMod                *DRB_config                       = NULL;
   struct RLC_Config                  *DRB_rlc_config                   = NULL;
   struct PDCP_Config                 *DRB_pdcp_config                  = NULL;
@@ -3390,15 +3162,15 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   struct PDCP_Config__rlc_UM         *PDCP_rlc_UM                      = NULL;
   struct LogicalChannelConfig        *DRB_lchan_config                 = NULL;
   struct LogicalChannelConfig__ul_SpecificParameters
-      *DRB_ul_SpecificParameters        = NULL;
-  DRB_ToAddModList_t**                DRB_configList = &ue_context_pP->ue_context.DRB_configList;
-  DRB_ToAddModList_t**                DRB_configList2 = NULL;
-   MAC_MainConfig_t                   *mac_MainConfig                   = NULL;
+    *DRB_ul_SpecificParameters        = NULL;
+  DRB_ToAddModList_t                **DRB_configList = &ue_context_pP->ue_context.DRB_configList;
+  DRB_ToAddModList_t                **DRB_configList2 = NULL;
+  MAC_MainConfig_t                   *mac_MainConfig                   = NULL;
   MeasObjectToAddModList_t           *MeasObj_list                     = NULL;
   MeasObjectToAddMod_t               *MeasObj                          = NULL;
   ReportConfigToAddModList_t         *ReportConfig_list                = NULL;
   ReportConfigToAddMod_t             *ReportConfig_per;//, *ReportConfig_A1,
-                                     // *ReportConfig_A2, *ReportConfig_A3, *ReportConfig_A4, *ReportConfig_A5;
+  // *ReportConfig_A2, *ReportConfig_A3, *ReportConfig_A4, *ReportConfig_A5;
   MeasIdToAddModList_t               *MeasId_list                      = NULL;
   MeasIdToAddMod_t                   *MeasId0; //, *MeasId1, *MeasId2, *MeasId3, *MeasId4, *MeasId5;
 #if Rel10
@@ -3406,10 +3178,8 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   //     uint8_t sCellIndexToAdd = rrc_find_free_SCell_index(enb_mod_idP, ue_mod_idP, 1);
   //uint8_t                            sCellIndexToAdd = 0;
 #endif
-
   long                               *logicalchannelgroup, *logicalchannelgroup_drb;
   long                               *maxHARQ_Tx, *periodicBSR_Timer;
-
   RSRP_Range_t                       *rsrp                             = NULL;
   struct MeasConfig__speedStatePars  *Sparams                          = NULL;
   QuantityConfig_t                   *quantityConfig                   = NULL;
@@ -3419,11 +3189,8 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   DedicatedInfoNAS_t                 *dedicatedInfoNas                 = NULL;
   /* for no gcc warnings */
   (void)dedicatedInfoNas;
-
   C_RNTI_t                           *cba_RNTI                         = NULL;
-
   uint8_t xid = rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id);   //Transaction_id,
-
 #ifdef CBA
   //struct PUSCH_CBAConfigDedicated_vlola  *pusch_CBAConfigDedicated_vlola;
   uint8_t                            *cba_RNTI_buf;
@@ -3449,24 +3216,22 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   }
 
 #endif
-
   T(T_ENB_RRC_CONNECTION_RECONFIGURATION, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
   // Configure SRB2
   /// SRB2
   SRB_configList2=&ue_context_pP->ue_context.SRB_configList2[xid];
+
   if (*SRB_configList2) {
     free(*SRB_configList2);
   }
+
   *SRB_configList2 = CALLOC(1, sizeof(**SRB_configList2));
   memset(*SRB_configList2, 0, sizeof(**SRB_configList2));
   SRB2_config = CALLOC(1, sizeof(*SRB2_config));
-
   SRB2_config->srb_Identity = 2;
   SRB2_rlc_config = CALLOC(1, sizeof(*SRB2_rlc_config));
   SRB2_config->rlc_Config = SRB2_rlc_config;
-
   SRB2_rlc_config->present = SRB_ToAddMod__rlc_Config_PR_explicitValue;
   SRB2_rlc_config->choice.explicitValue.present = RLC_Config_PR_am;
   SRB2_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.t_PollRetransmit = T_PollRetransmit_ms15;
@@ -3475,26 +3240,19 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   SRB2_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.maxRetxThreshold = UL_AM_RLC__maxRetxThreshold_t32;
   SRB2_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_Reordering = T_Reordering_ms35;
   SRB2_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_StatusProhibit = T_StatusProhibit_ms10;
-
   SRB2_lchan_config = CALLOC(1, sizeof(*SRB2_lchan_config));
   SRB2_config->logicalChannelConfig = SRB2_lchan_config;
-
   SRB2_lchan_config->present = SRB_ToAddMod__logicalChannelConfig_PR_explicitValue;
-
   SRB2_ul_SpecificParameters = CALLOC(1, sizeof(*SRB2_ul_SpecificParameters));
-
   SRB2_ul_SpecificParameters->priority = 3; // let some priority for SRB1 and dedicated DRBs
   SRB2_ul_SpecificParameters->prioritisedBitRate =
     LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
   SRB2_ul_SpecificParameters->bucketSizeDuration =
     LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
   // LCG for CCCH and DCCH is 0 as defined in 36331
   logicalchannelgroup = CALLOC(1, sizeof(long));
   *logicalchannelgroup = 0;
-
   SRB2_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup;
-
   SRB2_lchan_config->choice.explicitValue.ul_SpecificParameters = SRB2_ul_SpecificParameters;
   // this list has the configuration for SRB1 and SRB2
   ASN_SEQUENCE_ADD(&SRB_configList->list, SRB2_config);
@@ -3507,21 +3265,20 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   if (*DRB_configList) {
     free(*DRB_configList);
   }
+
   *DRB_configList = CALLOC(1, sizeof(**DRB_configList));
   memset(*DRB_configList, 0, sizeof(**DRB_configList));
-
   // list for the configured DRB for a this xid
   DRB_configList2=&ue_context_pP->ue_context.DRB_configList2[xid];
+
   if (*DRB_configList2) {
     free(*DRB_configList2);
   }
+
   *DRB_configList2 = CALLOC(1, sizeof(**DRB_configList2));
   memset(*DRB_configList2, 0, sizeof(**DRB_configList2));
-
-
   /// DRB
   DRB_config = CALLOC(1, sizeof(*DRB_config));
-
   DRB_config->eps_BearerIdentity = CALLOC(1, sizeof(long));
   *(DRB_config->eps_BearerIdentity) = 5L; // LW set to first value, allowed value 5..15, value : x+4
   // DRB_config->drb_Identity = (DRB_Identity_t) 1; //allowed values 1..32
@@ -3531,7 +3288,6 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   *(DRB_config->logicalChannelIdentity) = (long)3; // value : x+2
   DRB_rlc_config = CALLOC(1, sizeof(*DRB_rlc_config));
   DRB_config->rlc_Config = DRB_rlc_config;
-
 #ifdef RRC_DEFAULT_RAB_IS_AM
   DRB_rlc_config->present = RLC_Config_PR_am;
   DRB_rlc_config->choice.am.ul_AM_RLC.t_PollRetransmit = T_PollRetransmit_ms50;
@@ -3550,18 +3306,15 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = T_Reordering_ms35;
 #endif
 #endif
-
   DRB_pdcp_config = CALLOC(1, sizeof(*DRB_pdcp_config));
   DRB_config->pdcp_Config = DRB_pdcp_config;
   DRB_pdcp_config->discardTimer = CALLOC(1, sizeof(long));
   *DRB_pdcp_config->discardTimer = PDCP_Config__discardTimer_infinity;
   DRB_pdcp_config->rlc_AM = NULL;
   DRB_pdcp_config->rlc_UM = NULL;
-
   /* avoid gcc warnings */
   (void)PDCP_rlc_AM;
   (void)PDCP_rlc_UM;
-
 #ifdef RRC_DEFAULT_RAB_IS_AM // EXMIMO_IOT
   PDCP_rlc_AM = CALLOC(1, sizeof(*PDCP_rlc_AM));
   DRB_pdcp_config->rlc_AM = PDCP_rlc_AM;
@@ -3572,33 +3325,25 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   PDCP_rlc_UM->pdcp_SN_Size = PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
 #endif
   DRB_pdcp_config->headerCompression.present = PDCP_Config__headerCompression_PR_notUsed;
-
   DRB_lchan_config = CALLOC(1, sizeof(*DRB_lchan_config));
   DRB_config->logicalChannelConfig = DRB_lchan_config;
   DRB_ul_SpecificParameters = CALLOC(1, sizeof(*DRB_ul_SpecificParameters));
   DRB_lchan_config->ul_SpecificParameters = DRB_ul_SpecificParameters;
-
   DRB_ul_SpecificParameters->priority = 12;    // lower priority than srb1, srb2 and other dedicated bearer
   DRB_ul_SpecificParameters->prioritisedBitRate =LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8 ;
-    //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
+  //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
   DRB_ul_SpecificParameters->bucketSizeDuration =
     LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
   // LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
   logicalchannelgroup_drb = CALLOC(1, sizeof(long));
   *logicalchannelgroup_drb = 1;
   DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb;
-
   ASN_SEQUENCE_ADD(&(*DRB_configList)->list, DRB_config);
   ASN_SEQUENCE_ADD(&(*DRB_configList2)->list, DRB_config);
-
   //ue_context_pP->ue_context.DRB_configList2[0] = &(*DRB_configList);
-
   mac_MainConfig = CALLOC(1, sizeof(*mac_MainConfig));
   // ue_context_pP->ue_context.mac_MainConfig = mac_MainConfig;
-
   mac_MainConfig->ul_SCH_Config = CALLOC(1, sizeof(*mac_MainConfig->ul_SCH_Config));
-
   maxHARQ_Tx = CALLOC(1, sizeof(long));
   *maxHARQ_Tx = MAC_MainConfig__ul_SCH_Config__maxHARQ_Tx_n5;
   mac_MainConfig->ul_SCH_Config->maxHARQ_Tx = maxHARQ_Tx;
@@ -3607,20 +3352,13 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   mac_MainConfig->ul_SCH_Config->periodicBSR_Timer = periodicBSR_Timer;
   mac_MainConfig->ul_SCH_Config->retxBSR_Timer = RetxBSR_Timer_r12_sf320;
   mac_MainConfig->ul_SCH_Config->ttiBundling = 0; // FALSE
-
   mac_MainConfig->timeAlignmentTimerDedicated = TimeAlignmentTimer_infinity;
-
   mac_MainConfig->drx_Config = NULL;
-
   mac_MainConfig->phr_Config = CALLOC(1, sizeof(*mac_MainConfig->phr_Config));
-
   mac_MainConfig->phr_Config->present = MAC_MainConfig__phr_Config_PR_setup;
   mac_MainConfig->phr_Config->choice.setup.periodicPHR_Timer = MAC_MainConfig__phr_Config__setup__periodicPHR_Timer_sf20; // sf20 = 20 subframes
-
   mac_MainConfig->phr_Config->choice.setup.prohibitPHR_Timer = MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf20; // sf20 = 20 subframes
-
   mac_MainConfig->phr_Config->choice.setup.dl_PathlossChange = MAC_MainConfig__phr_Config__setup__dl_PathlossChange_dB1;  // Value dB1 =1 dB, dB3 = 3 dB
-
 #ifdef Rel10
   sr_ProhibitTimer_r9 = CALLOC(1, sizeof(long));
   *sr_ProhibitTimer_r9 = 0;   // SR tx on PUCCH, Value in number of SR period(s). Value 0 = no timer for SR, Value 2= 2*SR
@@ -3636,62 +3374,63 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
     if ((*physicalConfigDedicated)->antennaInfo) {
       (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.transmissionMode = rrc_inst->configuration.ue_TransmissionMode[0];
       LOG_D(RRC,"Setting transmission mode to %ld+1\n",rrc_inst->configuration.ue_TransmissionMode[0]);
+
       if (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm3) {
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=     
-    CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
-    AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm3;
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf= MALLOC(1);
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf[0] = 0xc0;
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.size=1;
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.bits_unused=6;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=
+          CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
+          AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm3;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf= MALLOC(1);
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf[0] = 0xc0;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.size=1;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.bits_unused=6;
       }
       else if (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm4) {
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=     
-    CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
-    AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm4;
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.buf= MALLOC(1);
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.buf[0] = 0xfc;
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.size=1;
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.bits_unused=2;
-
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=
+          CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
+          AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm4;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.buf= MALLOC(1);
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.buf[0] = 0xfc;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.size=1;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.bits_unused=2;
       }
       else if (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm5) {
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=     
-    CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
-    AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm5;
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.buf= MALLOC(1);
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.buf[0] = 0xf0;
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.size=1;
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.bits_unused=4;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=
+          CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
+          AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm5;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.buf= MALLOC(1);
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.buf[0] = 0xf0;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.size=1;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.bits_unused=4;
       }
       else if (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm6) {
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=     
-    CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
-    AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm6;
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.buf= MALLOC(1);
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.buf[0] = 0xf0;
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.size=1;
-  (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.bits_unused=4;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=
+          CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
+          AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm6;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.buf= MALLOC(1);
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.buf[0] = 0xf0;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.size=1;
+        (*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm6.bits_unused=4;
       }
     }
     else {
       LOG_E(RRC,"antenna_info not present in physical_config_dedicated. Not reconfiguring!\n");
     }
+
     if ((*physicalConfigDedicated)->cqi_ReportConfig) {
       if ((rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm4) ||
-    (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm5) ||
-    (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm6)) {
-  //feedback mode needs to be set as well
-  //TODO: I think this is taken into account in the PHY automatically based on the transmission mode variable
-  printf("setting cqi reporting mode to rm31\n");
+          (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm5) ||
+          (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm6)) {
+        //feedback mode needs to be set as well
+        //TODO: I think this is taken into account in the PHY automatically based on the transmission mode variable
+        printf("setting cqi reporting mode to rm31\n");
 #if defined(Rel10) || defined(Rel14)
-  *((*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportModeAperiodic)=CQI_ReportModeAperiodic_rm31;
+        *((*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportModeAperiodic)=CQI_ReportModeAperiodic_rm31;
 #else
-  *((*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportModeAperiodic)=CQI_ReportConfig__cqi_ReportModeAperiodic_rm31; // HLC CQI, no PMI
+        *((*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportModeAperiodic)=CQI_ReportConfig__cqi_ReportModeAperiodic_rm31; // HLC CQI, no PMI
 #endif
       }
     }
@@ -3706,25 +3445,19 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   // Measurement ID list
   MeasId_list = CALLOC(1, sizeof(*MeasId_list));
   memset((void *)MeasId_list, 0, sizeof(*MeasId_list));
-
   MeasId0 = CALLOC(1, sizeof(*MeasId0));
   MeasId0->measId = 1;
   MeasId0->measObjectId = 1;
   MeasId0->reportConfigId = 1;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId0);
-
   /*
    * Add one EUTRA Measurement Object
   */
-
   MeasObj_list = CALLOC(1, sizeof(*MeasObj_list));
   memset((void *)MeasObj_list, 0, sizeof(*MeasObj_list));
-
-  // Configure MeasObject 
-
+  // Configure MeasObject
   MeasObj = CALLOC(1, sizeof(*MeasObj));
   memset((void *)MeasObj, 0, sizeof(*MeasObj));
-
   MeasObj->measObjectId = 1;
   MeasObj->measObject.present = MeasObjectToAddMod__measObject_PR_measObjectEUTRA;
   MeasObj->measObject.choice.measObjectEUTRA.carrierFreq = 3350; //band 7, 2.68GHz
@@ -3736,10 +3469,8 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.size = 1;
   MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.bits_unused = 6;
   MeasObj->measObject.choice.measObjectEUTRA.offsetFreq = NULL;   // Default is 15 or 0dB
-
   MeasObj->measObject.choice.measObjectEUTRA.cellsToAddModList =
     (CellsToAddModList_t *) CALLOC(1, sizeof(*CellsToAddModList));
-
   CellsToAddModList = MeasObj->measObject.choice.measObjectEUTRA.cellsToAddModList;
 
   // Add adjacent cell lists (6 per eNB)
@@ -3748,7 +3479,6 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
     CellToAdd->cellIndex = i + 1;
     CellToAdd->physCellId = get_adjacent_cell_id(ctxt_pP->module_id, i);
     CellToAdd->cellIndividualOffset = Q_OffsetRange_dB0;
-
     ASN_SEQUENCE_ADD(&CellsToAddModList->list, CellToAdd);
   }
 
@@ -3759,78 +3489,51 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
 
   /* RRC Strategy Measurement */
 
-
-  if (strcmp("one_shot", trig_param->trigger_policy) == 0){
-
-      trig_param->report_interval = 0;
-      trig_param->report_amount = 0;
-
+  if (strcmp("one_shot", trig_param->trigger_policy) == 0) {
+    trig_param->report_interval = 0;
+    trig_param->report_amount = 0;
   }
-
-  else if (strcmp("event_driven", trig_param->trigger_policy) == 0){
-
-      trig_param->report_interval = 6;
-      trig_param->report_amount = 2;
-
+  else if (strcmp("event_driven", trig_param->trigger_policy) == 0) {
+    trig_param->report_interval = 6;
+    trig_param->report_amount = 2;
   }
-
-  else if (strcmp("periodical", trig_param->trigger_policy) == 0){
-
-      trig_param->report_interval = 1;
-      trig_param->report_amount = 7;
-
+  else if (strcmp("periodical", trig_param->trigger_policy) == 0) {
+    trig_param->report_interval = 1;
+    trig_param->report_amount = 7;
   }
-
   else {
-
-     LOG_E(FLEXRAN_AGENT, "There is something wrong on RRC agent!");
+    LOG_E(FLEXRAN_AGENT, "There is something wrong on RRC agent!");
   }
 
-
-
   ReportConfig_list = CALLOC(1, sizeof(*ReportConfig_list));
-
   ReportConfig_per = CALLOC(1, sizeof(*ReportConfig_per));
-
-    // Periodical Measurement Report
-
+  // Periodical Measurement Report
   ReportConfig_per->reportConfigId = 1;
   ReportConfig_per->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
-
-    ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerType.present =
-      ReportConfigEUTRA__triggerType_PR_periodical;
-
-    ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerType.choice.periodical.purpose =
-      ReportConfigEUTRA__triggerType__periodical__purpose_reportStrongestCells;
-
-    // ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.timeToTrigger = TimeToTrigger_ms40;  
-    ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerQuantity = ReportConfigEUTRA__triggerQuantity_rsrp;
-   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
-   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
-   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportInterval = trig_param->report_interval ;//ReportInterval_ms2048; // RRC counter frame- ms1024 is 1ms   
-
-   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportAmount = trig_param->report_amount; //ReportConfigEUTRA__reportAmount_r2; // put r1 to see once, r2 for 2 times and ...
-
-
+  ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerType.present =
+    ReportConfigEUTRA__triggerType_PR_periodical;
+  ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerType.choice.periodical.purpose =
+    ReportConfigEUTRA__triggerType__periodical__purpose_reportStrongestCells;
+  // ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.timeToTrigger = TimeToTrigger_ms40;
+  ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerQuantity = ReportConfigEUTRA__triggerQuantity_rsrp;
+  ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
+  ReportConfig_per->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
+  ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportInterval = trig_param->report_interval ;//ReportInterval_ms2048; // RRC counter frame- ms1024 is 1ms
+  ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportAmount = trig_param->report_amount; //ReportConfigEUTRA__reportAmount_r2; // put r1 to see once, r2 for 2 times and ...
   ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_per);
-
-
-
-    quantityConfig = CALLOC(1, sizeof(*quantityConfig));
-    memset((void *)quantityConfig, 0, sizeof(*quantityConfig));
-    quantityConfig->quantityConfigEUTRA = CALLOC(1, sizeof(struct QuantityConfigEUTRA));
-    memset((void *)quantityConfig->quantityConfigEUTRA, 0, sizeof(*quantityConfig->quantityConfigEUTRA));
-    quantityConfig->quantityConfigCDMA2000 = NULL;
-    quantityConfig->quantityConfigGERAN = NULL;
-    quantityConfig->quantityConfigUTRA = NULL;
-    quantityConfig->quantityConfigEUTRA->filterCoefficientRSRP =
-      CALLOC(1, sizeof(*(quantityConfig->quantityConfigEUTRA->filterCoefficientRSRP)));
-    quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ =
-      CALLOC(1, sizeof(*(quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ)));
-    *quantityConfig->quantityConfigEUTRA->filterCoefficientRSRP = FilterCoefficient_fc4;
-    *quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ = FilterCoefficient_fc4;
-
-  
+  quantityConfig = CALLOC(1, sizeof(*quantityConfig));
+  memset((void *)quantityConfig, 0, sizeof(*quantityConfig));
+  quantityConfig->quantityConfigEUTRA = CALLOC(1, sizeof(struct QuantityConfigEUTRA));
+  memset((void *)quantityConfig->quantityConfigEUTRA, 0, sizeof(*quantityConfig->quantityConfigEUTRA));
+  quantityConfig->quantityConfigCDMA2000 = NULL;
+  quantityConfig->quantityConfigGERAN = NULL;
+  quantityConfig->quantityConfigUTRA = NULL;
+  quantityConfig->quantityConfigEUTRA->filterCoefficientRSRP =
+    CALLOC(1, sizeof(*(quantityConfig->quantityConfigEUTRA->filterCoefficientRSRP)));
+  quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ =
+    CALLOC(1, sizeof(*(quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ)));
+  *quantityConfig->quantityConfigEUTRA->filterCoefficientRSRP = FilterCoefficient_fc4;
+  *quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ = FilterCoefficient_fc4;
 #if defined(ENABLE_ITTI)
   /* Initialize NAS list */
   dedicatedInfoNASList = CALLOC(1, sizeof(struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList));
@@ -3840,23 +3543,22 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
     if (ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer != NULL) {
       dedicatedInfoNas = CALLOC(1, sizeof(DedicatedInfoNAS_t));
       memset(dedicatedInfoNas, 0, sizeof(OCTET_STRING_t));
-      OCTET_STRING_fromBuf(dedicatedInfoNas, 
-         (char*)ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer,
+      OCTET_STRING_fromBuf(dedicatedInfoNas,
+                           (char *)ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer,
                            ue_context_pP->ue_context.e_rab[i].param.nas_pdu.length);
       ASN_SEQUENCE_ADD(&dedicatedInfoNASList->list, dedicatedInfoNas);
     }
 
     /* TODO parameters yet to process ... */
     // {
-      //      ue_context_pP->ue_context.e_rab[i].param.qos;
-      //      ue_context_pP->ue_context.e_rab[i].param.sgw_addr;
-      //      ue_context_pP->ue_context.e_rab[i].param.gtp_teid;
+    //      ue_context_pP->ue_context.e_rab[i].param.qos;
+    //      ue_context_pP->ue_context.e_rab[i].param.sgw_addr;
+    //      ue_context_pP->ue_context.e_rab[i].param.gtp_teid;
     // }
-
     /* TODO should test if e RAB are Ok before! */
     ue_context_pP->ue_context.e_rab[i].status = E_RAB_STATUS_DONE;
-    LOG_D(RRC, "setting the status for the default DRB (index %d) to (%d,%s)\n", 
-    i, ue_context_pP->ue_context.e_rab[i].status, "E_RAB_STATUS_DONE");
+    LOG_D(RRC, "setting the status for the default DRB (index %d) to (%d,%s)\n",
+          i, ue_context_pP->ue_context.e_rab[i].status, "E_RAB_STATUS_DONE");
   }
 
   /* If list is empty free the list and reset the address */
@@ -3866,46 +3568,44 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   }
 
 #endif
-
   memset(buffer, 0, RRC_BUF_SIZE);
-  
   size = do_RRCConnectionReconfiguration(ctxt_pP,
                                          buffer,
                                          xid,   //Transaction_id,
-                                         (SRB_ToAddModList_t*)NULL, // SRB_configList
-                                         (DRB_ToAddModList_t*)NULL,
-                                         (DRB_ToReleaseList_t*)NULL,  // DRB2_list,
-                                         (struct SPS_Config*)NULL,    // *sps_Config,
-                                         (struct PhysicalConfigDedicated*)*physicalConfigDedicated,
-// #ifdef EXMIMO_IOT
-//                                          NULL, NULL, NULL,NULL,
-// #else
-                                         (MeasObjectToAddModList_t*)MeasObj_list,
-                                         (ReportConfigToAddModList_t*)ReportConfig_list,
-                                         (QuantityConfig_t*)quantityConfig,
-                                         (MeasIdToAddModList_t*)MeasId_list,
-// #endif
-                                         (MAC_MainConfig_t*)mac_MainConfig,
-                                         (MeasGapConfig_t*)NULL,
-                                         (MobilityControlInfo_t*)NULL,
-                                         (struct MeasConfig__speedStatePars*)Sparams,
-                                         (RSRP_Range_t*)rsrp,
-                                         (C_RNTI_t*)cba_RNTI,
-                                         (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList*)dedicatedInfoNASList
+                                         (SRB_ToAddModList_t *)NULL, // SRB_configList
+                                         (DRB_ToAddModList_t *)NULL,
+                                         (DRB_ToReleaseList_t *)NULL, // DRB2_list,
+                                         (struct SPS_Config *)NULL,   // *sps_Config,
+                                         (struct PhysicalConfigDedicated *)*physicalConfigDedicated,
+                                         // #ifdef EXMIMO_IOT
+                                         //                                          NULL, NULL, NULL,NULL,
+                                         // #else
+                                         (MeasObjectToAddModList_t *)MeasObj_list,
+                                         (ReportConfigToAddModList_t *)ReportConfig_list,
+                                         (QuantityConfig_t *)quantityConfig,
+                                         (MeasIdToAddModList_t *)MeasId_list,
+                                         // #endif
+                                         (MAC_MainConfig_t *)mac_MainConfig,
+                                         (MeasGapConfig_t *)NULL,
+                                         (MobilityControlInfo_t *)NULL,
+                                         (struct MeasConfig__speedStatePars *)Sparams,
+                                         (RSRP_Range_t *)rsrp,
+                                         (C_RNTI_t *)cba_RNTI,
+                                         (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *)dedicatedInfoNASList
 #if defined(Rel10) || defined(Rel14)
-                                         , (SCellToAddMod_r10_t*)NULL
+                                         , (SCellToAddMod_r10_t *)NULL
 #endif
                                         );
-
 #ifdef RRC_MSG_PRINT
   LOG_F(RRC,"[MSG] RRC Connection Reconfiguration\n");
+
   for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
+    LOG_F(RRC,"%02x ", ((uint8_t *)buffer)[i]);
   }
+
   LOG_F(RRC,"\n");
   ////////////////////////////////////////
 #endif
-
 #if defined(ENABLE_ITTI)
 
   /* Free all NAS PDUs */
@@ -3918,15 +3618,12 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
   }
 
 #endif
-
   LOG_I(RRC,
         "[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration (bytes %d, UE id %x)\n",
         ctxt_pP->module_id, ctxt_pP->frame, size, ue_context_pP->ue_context.rnti);
-
   LOG_D(RRC,
         "[FRAME %05d][RRC_eNB][MOD %u][][--- PDCP_DATA_REQ/%d Bytes (rrcConnectionReconfiguration 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_eNB_mui, ctxt_pP->module_id, DCCH);
-
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
     MSC_RRC_UE,
@@ -3937,31 +3634,28 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
     ue_context_pP->ue_context.rnti,
     rrc_eNB_mui,
     size);
-
   rrc_data_req(
-         ctxt_pP,
-         DCCH,
-         rrc_eNB_mui++,
-         SDU_CONFIRM_NO,
-         size,
-         buffer,
-         PDCP_TRANSMISSION_MODE_CONTROL);
+    ctxt_pP,
+    DCCH,
+    rrc_eNB_mui++,
+    SDU_CONFIRM_NO,
+    size,
+    buffer,
+    PDCP_TRANSMISSION_MODE_CONTROL);
 }
 
 
 //-----------------------------------------------------------------------------
 int
 rrc_eNB_generate_RRCConnectionReconfiguration_SCell(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t* const ue_context_pP,
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t *const ue_context_pP,
   uint32_t dl_CarrierFreq_r10
 )
 //-----------------------------------------------------------------------------
 {
-
   uint8_t size;
   uint8_t buffer[100];
-
 #if defined(Rel10) || defined(Rel14)
   uint8_t sCellIndexToAdd = 0; //one SCell so far
 
@@ -3979,30 +3673,28 @@ rrc_eNB_generate_RRCConnectionReconfiguration_SCell(
   size = do_RRCConnectionReconfiguration(ctxt_pP,
                                          buffer,
                                          rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id),//Transaction_id,
-                                         (SRB_ToAddModList_t*)NULL,
-                                         (DRB_ToAddModList_t*)NULL,
-                                         (DRB_ToReleaseList_t*)NULL,
-                                         (struct SPS_Config*)NULL,
-                                         (struct PhysicalConfigDedicated*)NULL,
-                                         (MeasObjectToAddModList_t*)NULL,
-                                         (ReportConfigToAddModList_t*)NULL,
-                                         (QuantityConfig_t*)NULL,
-                                         (MeasIdToAddModList_t*)NULL,
-                                         (MAC_MainConfig_t*)NULL,
-                                         (MeasGapConfig_t*)NULL,
-                                         (MobilityControlInfo_t*)NULL,
-                                         (struct MeasConfig__speedStatePars*)NULL,
-                                         (RSRP_Range_t*)NULL,
-                                         (C_RNTI_t*)NULL,
-                                         (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList*)NULL
-
+                                         (SRB_ToAddModList_t *)NULL,
+                                         (DRB_ToAddModList_t *)NULL,
+                                         (DRB_ToReleaseList_t *)NULL,
+                                         (struct SPS_Config *)NULL,
+                                         (struct PhysicalConfigDedicated *)NULL,
+                                         (MeasObjectToAddModList_t *)NULL,
+                                         (ReportConfigToAddModList_t *)NULL,
+                                         (QuantityConfig_t *)NULL,
+                                         (MeasIdToAddModList_t *)NULL,
+                                         (MAC_MainConfig_t *)NULL,
+                                         (MeasGapConfig_t *)NULL,
+                                         (MobilityControlInfo_t *)NULL,
+                                         (struct MeasConfig__speedStatePars *)NULL,
+                                         (RSRP_Range_t *)NULL,
+                                         (C_RNTI_t *)NULL,
+                                         (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *)NULL
 #if defined(Rel10) || defined(Rel14)
                                          , ue_context_pP->ue_context.sCell_config
 #endif
                                         );
   LOG_I(RRC,"[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration (bytes %d, UE id %x)\n",
         ctxt_pP->module_id,ctxt_pP->frame, size, ue_context_pP->ue_context.rnti);
-
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
     MSC_RRC_UE,
@@ -4013,15 +3705,14 @@ rrc_eNB_generate_RRCConnectionReconfiguration_SCell(
     ue_context_pP->ue_context.rnti,
     rrc_eNB_mui,
     size);
-
   rrc_data_req(
-	       ctxt_pP,
-	       DCCH,
-	       rrc_eNB_mui++,
-	       SDU_CONFIRM_NO,
-	       size,
-	       buffer,
-	       PDCP_TRANSMISSION_MODE_CONTROL);
+    ctxt_pP,
+    DCCH,
+    rrc_eNB_mui++,
+    SDU_CONFIRM_NO,
+    size,
+    buffer,
+    PDCP_TRANSMISSION_MODE_CONTROL);
   return(0);
 }
 
@@ -4029,64 +3720,62 @@ rrc_eNB_generate_RRCConnectionReconfiguration_SCell(
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_process_MeasurementReport(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*         ue_context_pP,
-  const MeasResults_t*   const measResults2
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t         *ue_context_pP,
+  const MeasResults_t   *const measResults2
 )
 //-----------------------------------------------------------------------------
 {
   int i=0;
   int neighboring_cells=-1;
-  
   T(T_ENB_RRC_MEASUREMENT_REPORT, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
 
   if (measResults2 == NULL )
     return;
-  
-  if (measResults2->measId > 0 ){
-     if (ue_context_pP->ue_context.measResults == NULL) {
-       ue_context_pP->ue_context.measResults = CALLOC(1, sizeof(MeasResults_t));
-     }
-     ue_context_pP->ue_context.measResults->measId=measResults2->measId; 
-     ue_context_pP->ue_context.measResults->measResultPCell.rsrpResult=measResults2->measResultPCell.rsrpResult;
-     ue_context_pP->ue_context.measResults->measResultPCell.rsrqResult=measResults2->measResultPCell.rsrqResult;
-     LOG_D(RRC, "[eNB %d]Frame %d: UE %x (Measurement Id %d): RSRP of Source %ld\n", ctxt_pP->module_id, ctxt_pP->frame, ctxt_pP->rnti, (int)measResults2->measId, ue_context_pP->ue_context.measResults->measResultPCell.rsrpResult-140);
-     LOG_D(RRC, "[eNB %d]Frame %d: UE %x (Measurement Id %d): RSRQ of Source %ld\n", ctxt_pP->module_id, ctxt_pP->frame, ctxt_pP->rnti, (int)measResults2->measId, ue_context_pP->ue_context.measResults->measResultPCell.rsrqResult/2 - 20);
-   }
-   if (measResults2->measResultNeighCells == NULL)
-     return;
-
-   if (measResults2->measResultNeighCells->choice.measResultListEUTRA.list.count > 0) {
-     neighboring_cells = measResults2->measResultNeighCells->choice.measResultListEUTRA.list.count;
-     
-     if (ue_context_pP->ue_context.measResults->measResultNeighCells == NULL) {
-       
-       ue_context_pP->ue_context.measResults->measResultNeighCells = CALLOC(1, sizeof(*measResults2->measResultNeighCells)*neighboring_cells);
-     }
-     ue_context_pP->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.count = neighboring_cells;
-     for (i=0; i < neighboring_cells; i++){
-       memcpy (ue_context_pP->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[i],
-	       measResults2->measResultNeighCells->choice.measResultListEUTRA.list.array[i],
-	       sizeof(MeasResultListEUTRA_t));
-       
-       LOG_D(RRC, "Physical Cell Id %d\n",
-	     (int)ue_context_pP->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[i]->physCellId);
-       LOG_D(RRC, "RSRP of Target %d\n",
-	     (int)*(ue_context_pP->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[i]->measResult.rsrpResult));
-       LOG_D(RRC, "RSRQ of Target %d\n",
-	     (int)*(ue_context_pP->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[i]->measResult.rsrqResult));
-     }
-   }
 
-// #if defined(Rel10) || defined(Rel14)
+  if (measResults2->measId > 0 ) {
+    if (ue_context_pP->ue_context.measResults == NULL) {
+      ue_context_pP->ue_context.measResults = CALLOC(1, sizeof(MeasResults_t));
+    }
+
+    ue_context_pP->ue_context.measResults->measId=measResults2->measId;
+    ue_context_pP->ue_context.measResults->measResultPCell.rsrpResult=measResults2->measResultPCell.rsrpResult;
+    ue_context_pP->ue_context.measResults->measResultPCell.rsrqResult=measResults2->measResultPCell.rsrqResult;
+    LOG_D(RRC, "[eNB %d]Frame %d: UE %x (Measurement Id %d): RSRP of Source %ld\n", ctxt_pP->module_id, ctxt_pP->frame, ctxt_pP->rnti, (int)measResults2->measId, ue_context_pP->ue_context.measResults->measResultPCell.rsrpResult-140);
+    LOG_D(RRC, "[eNB %d]Frame %d: UE %x (Measurement Id %d): RSRQ of Source %ld\n", ctxt_pP->module_id, ctxt_pP->frame, ctxt_pP->rnti, (int)measResults2->measId, ue_context_pP->ue_context.measResults->measResultPCell.rsrqResult/2 - 20);
+  }
+
+  if (measResults2->measResultNeighCells == NULL)
+    return;
+
+  if (measResults2->measResultNeighCells->choice.measResultListEUTRA.list.count > 0) {
+    neighboring_cells = measResults2->measResultNeighCells->choice.measResultListEUTRA.list.count;
 
-  
-// #else
+    if (ue_context_pP->ue_context.measResults->measResultNeighCells == NULL) {
+      ue_context_pP->ue_context.measResults->measResultNeighCells = CALLOC(1, sizeof(*measResults2->measResultNeighCells)*neighboring_cells);
+    }
+
+    ue_context_pP->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.count = neighboring_cells;
+
+    for (i=0; i < neighboring_cells; i++) {
+      memcpy (ue_context_pP->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[i],
+              measResults2->measResultNeighCells->choice.measResultListEUTRA.list.array[i],
+              sizeof(MeasResultListEUTRA_t));
+      LOG_D(RRC, "Physical Cell Id %d\n",
+            (int)ue_context_pP->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[i]->physCellId);
+      LOG_D(RRC, "RSRP of Target %d\n",
+            (int)*(ue_context_pP->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[i]->measResult.rsrpResult));
+      LOG_D(RRC, "RSRQ of Target %d\n",
+            (int)*(ue_context_pP->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[i]->measResult.rsrqResult));
+    }
+  }
+
+  // #if defined(Rel10) || defined(Rel14)
+  // #else
   // LOG_I(RRC, "RSRP of Source %d\n", measResults2->measResultServCell.rsrpResult);
   // LOG_I(RRC, "RSRQ of Source %d\n", measResults2->measResultServCell.rsrqResult);
-// #endif
-
+  // #endif
   // if (ue_context_pP->ue_context.handover_info->ho_prepare != 0xF0) {
   //   rrc_eNB_generate_HandoverPreparationInformation(ctxt_pP,
   //       ue_context_pP,
@@ -4096,33 +3785,29 @@ rrc_eNB_process_MeasurementReport(
   //   LOG_D(RRC, "[eNB %d] Frame %d: Ignoring MeasReport from UE %x as Handover is in progress... \n", ctxt_pP->module_id, ctxt_pP->frame,
   //         ctxt_pP->rnti);
   // }
-
   //Look for IP address of the target eNB
   //Send Handover Request -> target eNB
   //Wait for Handover Acknowledgement <- target eNB
   //Send Handover Command
-
   //x2delay();
   //    handover_request_x2(ue_mod_idP,enb_mod_idP,measResults2->measResultNeighCells->choice.measResultListEUTRA.list.array[0]->physCellId);
-
   //    uint8_t buffer[100];
   //    int size=rrc_eNB_generate_Handover_Command_TeNB(0,0,buffer);
   //
   //      send_check_message((char*)buffer,size);
   //send_handover_command();
-
 }
 
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_generate_HandoverPreparationInformation(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t* const ue_context_pP,
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t *const ue_context_pP,
   PhysCellId_t                 targetPhyId
 )
 //-----------------------------------------------------------------------------
 {
-  struct rrc_eNB_ue_context_s*        ue_context_target_p = NULL;
+  struct rrc_eNB_ue_context_s        *ue_context_target_p = NULL;
   //uint8_t                             UE_id_target        = -1;
   uint8_t                             mod_id_target = get_adjacent_cell_mod_id(targetPhyId);
   HANDOVER_INFO                      *handoverInfo = CALLOC(1, sizeof(*handoverInfo));
@@ -4132,30 +3817,24 @@ rrc_eNB_generate_HandoverPreparationInformation(
      struct PhysicalConfigDedicated  **physicalConfigDedicated = &RC.rrc[enb_mod_idP]->physicalConfigDedicated[ue_mod_idP];
      RadioResourceConfigDedicated_t *radioResourceConfigDedicated = CALLOC(1,sizeof(RadioResourceConfigDedicated_t));
    */
-
   T(T_ENB_RRC_HANDOVER_PREPARATION_INFORMATION, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
   handoverInfo->as_config.antennaInfoCommon.antennaPortsCount = 0;    //Not used 0- but check value
   handoverInfo->as_config.sourceDl_CarrierFreq = 36090;   //Verify!
-
   memcpy((void *)&handoverInfo->as_config.sourceMasterInformationBlock,
-         (void*)&RC.rrc[ctxt_pP->module_id]->carrier[0] /* CROUX TBC */.mib, sizeof(MasterInformationBlock_t));
+         (void *)&RC.rrc[ctxt_pP->module_id]->carrier[0] /* CROUX TBC */.mib, sizeof(MasterInformationBlock_t));
   memcpy((void *)&handoverInfo->as_config.sourceMeasConfig,
-         (void*)ue_context_pP->ue_context.measConfig, sizeof(MeasConfig_t));
-
+         (void *)ue_context_pP->ue_context.measConfig, sizeof(MeasConfig_t));
   // FIXME handoverInfo not used...
   free( handoverInfo );
   handoverInfo = 0;
-
   //to be configured
-  memset((void*)&ue_context_pP->ue_context.handover_info->as_config.sourceSecurityAlgorithmConfig,
+  memset((void *)&ue_context_pP->ue_context.handover_info->as_config.sourceSecurityAlgorithmConfig,
          0, sizeof(SecurityAlgorithmConfig_t));
-
-  memcpy((void*)&ue_context_pP->ue_context.handover_info->as_config.sourceSystemInformationBlockType1,
-         (void*)&RC.rrc[ctxt_pP->module_id]->carrier[0] /* CROUX TBC */.SIB1, sizeof(SystemInformationBlockType1_t));
-  memcpy((void*)&ue_context_pP->ue_context.handover_info->as_config.sourceSystemInformationBlockType2,
-         (void*)&RC.rrc[ctxt_pP->module_id]->carrier[0] /* CROUX TBC */.SIB23, sizeof(SystemInformationBlockType2_t));
+  memcpy((void *)&ue_context_pP->ue_context.handover_info->as_config.sourceSystemInformationBlockType1,
+         (void *)&RC.rrc[ctxt_pP->module_id]->carrier[0] /* CROUX TBC */.SIB1, sizeof(SystemInformationBlockType1_t));
+  memcpy((void *)&ue_context_pP->ue_context.handover_info->as_config.sourceSystemInformationBlockType2,
+         (void *)&RC.rrc[ctxt_pP->module_id]->carrier[0] /* CROUX TBC */.SIB23, sizeof(SystemInformationBlockType2_t));
   ue_context_pP->ue_context.handover_info->as_context.reestablishmentInfo =
     CALLOC(1, sizeof(ReestablishmentInfo_t));
   ue_context_pP->ue_context.handover_info->as_context.reestablishmentInfo->sourcePhysCellId =
@@ -4194,11 +3873,11 @@ rrc_eNB_generate_HandoverPreparationInformation(
             mod_id_target);
       ue_context_target_p->ue_context.handover_info =
         CALLOC(1, sizeof(*(ue_context_target_p->ue_context.handover_info)));
-      memcpy((void*)&ue_context_target_p->ue_context.handover_info->as_context,
-             (void*)&ue_context_pP->ue_context.handover_info->as_context,
+      memcpy((void *)&ue_context_target_p->ue_context.handover_info->as_context,
+             (void *)&ue_context_pP->ue_context.handover_info->as_context,
              sizeof(AS_Context_t));
-      memcpy((void*)&ue_context_target_p->ue_context.handover_info->as_config,
-             (void*)&ue_context_pP->ue_context.handover_info->as_config,
+      memcpy((void *)&ue_context_target_p->ue_context.handover_info->as_config,
+             (void *)&ue_context_pP->ue_context.handover_info->as_config,
              sizeof(AS_Config_t));
       ue_context_target_p->ue_context.handover_info->ho_prepare = 0x00;// 0xFF;
       ue_context_target_p->ue_context.handover_info->ho_complete = 0;
@@ -4208,11 +3887,9 @@ rrc_eNB_generate_HandoverPreparationInformation(
       ue_context_target_p->ue_context.handover_info->modid_t = mod_id_target;
       ue_context_target_p->ue_context.handover_info->modid_s = ctxt_pP->module_id;
       ue_context_target_p->ue_context.handover_info->ueid_t  = ue_context_target_p->ue_context.rnti;
-
     } else {
       LOG_E(RRC, "\nError in obtaining free UE id in target eNB %ld for handover \n", targetPhyId);
     }
-
   } else {
     LOG_E(RRC, "\nError in obtaining Module ID of target eNB for handover \n");
   }
@@ -4221,15 +3898,13 @@ rrc_eNB_generate_HandoverPreparationInformation(
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_process_handoverPreparationInformation(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*           const ue_context_pP
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t           *const ue_context_pP
 )
 //-----------------------------------------------------------------------------
 {
   T(T_ENB_RRC_HANDOVER_PREPARATION_INFORMATION, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
-
   LOG_I(RRC,
         "[eNB %d] Frame %d : Logical Channel UL-DCCH, processing RRCHandoverPreparationInformation, sending RRCConnectionReconfiguration to UE %d \n",
         ctxt_pP->module_id, ctxt_pP->frame, ue_context_pP->ue_context.rnti);
@@ -4244,12 +3919,12 @@ rrc_eNB_process_handoverPreparationInformation(
 //-----------------------------------------------------------------------------
 void
 check_handovers(
-  protocol_ctxt_t* const ctxt_pP
+  protocol_ctxt_t *const ctxt_pP
 )
 //-----------------------------------------------------------------------------
 {
   int                                 result;
-  struct rrc_eNB_ue_context_s*        ue_context_p;
+  struct rrc_eNB_ue_context_s        *ue_context_p;
   RB_FOREACH(ue_context_p, rrc_ue_tree_s, &RC.rrc[ctxt_pP->module_id]->rrc_ue_head) {
     ctxt_pP->rnti  = ue_context_p->ue_id_rnti;
 
@@ -4297,34 +3972,30 @@ check_handovers(
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_generate_RRCConnectionReconfiguration_handover(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*           const ue_context_pP,
-  uint8_t*                const nas_pdu,
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t           *const ue_context_pP,
+  uint8_t                *const nas_pdu,
   const uint32_t                nas_length
 )
 //-----------------------------------------------------------------------------
 {
   T(T_ENB_RRC_CONNECTION_RECONFIGURATION, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
-
   uint8_t                             buffer[RRC_BUF_SIZE];
   uint16_t                            size;
   int                                 i;
   uint8_t                             rv[2];
   uint16_t                            Idx;
   // configure SRB1/SRB2, PhysicalConfigDedicated, MAC_MainConfig for UE
-  eNB_RRC_INST*                       rrc_inst = RC.rrc[ctxt_pP->module_id];
-  struct PhysicalConfigDedicated**    physicalConfigDedicated = &ue_context_pP->ue_context.physicalConfigDedicated;
-
+  eNB_RRC_INST                       *rrc_inst = RC.rrc[ctxt_pP->module_id];
+  struct PhysicalConfigDedicated    **physicalConfigDedicated = &ue_context_pP->ue_context.physicalConfigDedicated;
   struct SRB_ToAddMod                *SRB2_config;
   struct SRB_ToAddMod__rlc_Config    *SRB2_rlc_config;
   struct SRB_ToAddMod__logicalChannelConfig *SRB2_lchan_config;
   struct LogicalChannelConfig__ul_SpecificParameters *SRB2_ul_SpecificParameters;
   LogicalChannelConfig_t             *SRB1_logicalChannelConfig = NULL;
-  SRB_ToAddModList_t*                 SRB_configList = ue_context_pP->ue_context.SRB_configList;    // not used in this context: may be removed
+  SRB_ToAddModList_t                 *SRB_configList = ue_context_pP->ue_context.SRB_configList;    // not used in this context: may be removed
   SRB_ToAddModList_t                 *SRB_configList2;
-
   struct DRB_ToAddMod                *DRB_config;
   struct RLC_Config                  *DRB_rlc_config;
   struct PDCP_Config                 *DRB_pdcp_config;
@@ -4332,7 +4003,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   struct LogicalChannelConfig        *DRB_lchan_config;
   struct LogicalChannelConfig__ul_SpecificParameters *DRB_ul_SpecificParameters;
   DRB_ToAddModList_t                 *DRB_configList2;
-
   MAC_MainConfig_t                   *mac_MainConfig;
   MeasObjectToAddModList_t           *MeasObj_list;
   MeasObjectToAddMod_t               *MeasObj;
@@ -4349,10 +4019,8 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
 #if defined(Rel10) || defined(Rel14)
   long                               *sr_ProhibitTimer_r9;
 #endif
-
   long                               *logicalchannelgroup, *logicalchannelgroup_drb;
   long                               *maxHARQ_Tx, *periodicBSR_Timer;
-
   // RSRP_Range_t *rsrp;
   struct MeasConfig__speedStatePars  *Sparams;
   CellsToAddMod_t                    *CellToAdd;
@@ -4366,7 +4034,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   PhysicalConfigDedicated_t          *physicalConfigDedicated2;
   struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *dedicatedInfoNASList;
   protocol_ctxt_t                     ctxt;
-
   LOG_D(RRC, "[eNB %d] Frame %d: handover preparation: get the newSourceUEIdentity (C-RNTI): ",
         ctxt_pP->module_id, ctxt_pP->frame);
 
@@ -4383,7 +4050,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   SRB1_config->srb_Identity = 1;
   SRB1_rlc_config = CALLOC(1, sizeof(*SRB1_rlc_config));
   SRB1_config->rlc_Config = SRB1_rlc_config;
-
   SRB1_rlc_config->present = SRB_ToAddMod__rlc_Config_PR_explicitValue;
   SRB1_rlc_config->choice.explicitValue.present = RLC_Config_PR_am;
   SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.t_PollRetransmit = T_PollRetransmit_ms15;
@@ -4392,35 +4058,25 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   SRB1_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.maxRetxThreshold = UL_AM_RLC__maxRetxThreshold_t16;
   SRB1_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_Reordering = T_Reordering_ms35;
   SRB1_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_StatusProhibit = T_StatusProhibit_ms10;
-
   SRB1_lchan_config = CALLOC(1, sizeof(*SRB1_lchan_config));
   SRB1_config->logicalChannelConfig = SRB1_lchan_config;
-
   SRB1_lchan_config->present = SRB_ToAddMod__logicalChannelConfig_PR_explicitValue;
   SRB1_ul_SpecificParameters = CALLOC(1, sizeof(*SRB1_ul_SpecificParameters));
-
   SRB1_lchan_config->choice.explicitValue.ul_SpecificParameters = SRB1_ul_SpecificParameters;
-
   SRB1_ul_SpecificParameters->priority = 1;
-
   //assign_enum(&SRB1_ul_SpecificParameters->prioritisedBitRate,LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity);
   SRB1_ul_SpecificParameters->prioritisedBitRate =
     LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
-
   //assign_enum(&SRB1_ul_SpecificParameters->bucketSizeDuration,LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50);
   SRB1_ul_SpecificParameters->bucketSizeDuration =
     LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
   logicalchannelgroup = CALLOC(1, sizeof(long));
   *logicalchannelgroup = 0;
   SRB1_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup;
-
   ASN_SEQUENCE_ADD(&SRB_configList2->list, SRB1_config);
-
   //2nd: now reconfigure phy config dedicated
   physicalConfigDedicated2 = CALLOC(1, sizeof(*physicalConfigDedicated2));
   *physicalConfigDedicated = physicalConfigDedicated2;
-
   physicalConfigDedicated2->pdsch_ConfigDedicated =
     CALLOC(1, sizeof(*physicalConfigDedicated2->pdsch_ConfigDedicated));
   physicalConfigDedicated2->pucch_ConfigDedicated =
@@ -4442,18 +4098,15 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   //assign_enum(&physicalConfigDedicated2->pdsch_ConfigDedicated->p_a,
   //          PDSCH_ConfigDedicated__p_a_dB0);
   physicalConfigDedicated2->pdsch_ConfigDedicated->p_a = PDSCH_ConfigDedicated__p_a_dB0;
-
   // PUCCH
   physicalConfigDedicated2->pucch_ConfigDedicated->ackNackRepetition.present =
     PUCCH_ConfigDedicated__ackNackRepetition_PR_release;
   physicalConfigDedicated2->pucch_ConfigDedicated->ackNackRepetition.choice.release = 0;
   physicalConfigDedicated2->pucch_ConfigDedicated->tdd_AckNackFeedbackMode = NULL;    //PUCCH_ConfigDedicated__tdd_AckNackFeedbackMode_multiplexing;
-
   // Pusch_config_dedicated
   physicalConfigDedicated2->pusch_ConfigDedicated->betaOffset_ACK_Index = 0;  // 2.00
   physicalConfigDedicated2->pusch_ConfigDedicated->betaOffset_RI_Index = 0;   // 1.25
   physicalConfigDedicated2->pusch_ConfigDedicated->betaOffset_CQI_Index = 8;  // 2.25
-
   // UplinkPowerControlDedicated
   physicalConfigDedicated2->uplinkPowerControlDedicated->p0_UE_PUSCH = 0; // 0 dB
   //assign_enum(&physicalConfigDedicated2->uplinkPowerControlDedicated->deltaMCS_Enabled,
@@ -4467,7 +4120,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
     CALLOC(1, sizeof(*physicalConfigDedicated2->uplinkPowerControlDedicated->filterCoefficient));
   //  assign_enum(physicalConfigDedicated2->uplinkPowerControlDedicated->filterCoefficient,FilterCoefficient_fc4); // fc4 dB
   *physicalConfigDedicated2->uplinkPowerControlDedicated->filterCoefficient = FilterCoefficient_fc4;  // fc4 dB
-
   // TPC-PDCCH-Config
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH->present = TPC_PDCCH_Config_PR_setup;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH->choice.setup.tpc_Index.present = TPC_Index_PR_indexOfFormat3;
@@ -4477,7 +4129,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH->choice.setup.tpc_RNTI.buf[0] = 0x12;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH->choice.setup.tpc_RNTI.buf[1] = 0x34 + ue_context_pP->local_uid;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH->choice.setup.tpc_RNTI.bits_unused = 0;
-
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH->present = TPC_PDCCH_Config_PR_setup;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH->choice.setup.tpc_Index.present = TPC_Index_PR_indexOfFormat3;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH->choice.setup.tpc_Index.choice.indexOfFormat3 = 1;
@@ -4486,7 +4137,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH->choice.setup.tpc_RNTI.buf[0] = 0x22;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH->choice.setup.tpc_RNTI.buf[1] = 0x34 + ue_context_pP->local_uid;
   physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH->choice.setup.tpc_RNTI.bits_unused = 0;
-
   // CQI ReportConfig
   /*
      physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportModeAperiodic=CALLOC(1,sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportModeAperiodic));
@@ -4503,7 +4153,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
      physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.ri_ConfigIndex=NULL;
      physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.simultaneousAckNackAndCQI=0;
    */
-
   //soundingRS-UL-ConfigDedicated
   /*
      physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->present = SoundingRS_UL_ConfigDedicated_PR_setup;
@@ -4518,7 +4167,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
      assign_enum(&physicalConfigDedicated2->soundingRS_UL_ConfigDedicated->choice.setup.cyclicShift,
      SoundingRS_UL_ConfigDedicated__setup__cyclicShift_cs0);
    */
-
   //AntennaInfoDedicated
   physicalConfigDedicated2->antennaInfo = CALLOC(1, sizeof(*physicalConfigDedicated2->antennaInfo));
   physicalConfigDedicated2->antennaInfo->present = PhysicalConfigDedicated__antennaInfo_PR_explicitValue;
@@ -4546,7 +4194,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   physicalConfigDedicated2->antennaInfo->choice.explicitValue.ue_TransmitAntennaSelection.present =
     AntennaInfoDedicated__ue_TransmitAntennaSelection_PR_release;
   physicalConfigDedicated2->antennaInfo->choice.explicitValue.ue_TransmitAntennaSelection.choice.release = 0;
-
   // SchedulingRequestConfig
   physicalConfigDedicated2->schedulingRequestConfig->present = SchedulingRequestConfig_PR_setup;
   physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_PUCCH_ResourceIndex = ue_context_pP->local_uid;
@@ -4556,24 +4203,24 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
         10);   // Isr = 5 (every 10 subframes, offset=2+UE_id mod3)
   } else {
     switch (rrc_inst->carrier[0].sib1->tdd_Config->subframeAssignment) {
-    case 1:
-      physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7 + (ue_context_pP->local_uid & 1) + ((
-            ue_context_pP->local_uid & 3) >> 1) * 5;    // Isr = 5 (every 10 subframes, offset=2 for UE0, 3 for UE1, 7 for UE2, 8 for UE3 , 2 for UE4 etc..)
-      break;
+      case 1:
+        physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7 + (ue_context_pP->local_uid & 1) + ((
+              ue_context_pP->local_uid & 3) >> 1) * 5;    // Isr = 5 (every 10 subframes, offset=2 for UE0, 3 for UE1, 7 for UE2, 8 for UE3 , 2 for UE4 etc..)
+        break;
 
-    case 3:
-      physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7 + (ue_context_pP->local_uid %
-          3);    // Isr = 5 (every 10 subframes, offset=2 for UE0, 3 for UE1, 3 for UE2, 2 for UE3 , etc..)
-      break;
+      case 3:
+        physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7 + (ue_context_pP->local_uid %
+            3);    // Isr = 5 (every 10 subframes, offset=2 for UE0, 3 for UE1, 3 for UE2, 2 for UE3 , etc..)
+        break;
 
-    case 4:
-      physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7 + (ue_context_pP->local_uid &
-          1);    // Isr = 5 (every 10 subframes, offset=2 for UE0, 3 for UE1, 3 for UE2, 2 for UE3 , etc..)
-      break;
+      case 4:
+        physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7 + (ue_context_pP->local_uid &
+            1);    // Isr = 5 (every 10 subframes, offset=2 for UE0, 3 for UE1, 3 for UE2, 2 for UE3 , etc..)
+        break;
 
-    default:
-      physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7; // Isr = 5 (every 10 subframes, offset=2 for all UE0 etc..)
-      break;
+      default:
+        physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_ConfigIndex = 7; // Isr = 5 (every 10 subframes, offset=2 for all UE0 etc..)
+        break;
     }
   }
 
@@ -4582,59 +4229,55 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   //  assign_enum(&physicalConfigDedicated2->schedulingRequestConfig->choice.setup.dsr_TransMax = SchedulingRequestConfig__setup__dsr_TransMax_n4;
   physicalConfigDedicated2->schedulingRequestConfig->choice.setup.dsr_TransMax =
     SchedulingRequestConfig__setup__dsr_TransMax_n4;
-
   LOG_D(RRC,
         "handover_config [FRAME %05d][RRC_eNB][MOD %02d][][--- MAC_CONFIG_REQ  (SRB1 UE %x) --->][MAC_eNB][MOD %02d][]\n",
         ctxt_pP->frame, ctxt_pP->module_id, ue_context_pP->ue_context.rnti, ctxt_pP->module_id);
   rrc_mac_config_req_eNB(
-			 ctxt_pP->module_id,
-			 ue_context_pP->ue_context.primaryCC_id,
-			 0,0,0,0,0,
-#ifdef Rel14 
-0,
-#endif 
-			 ue_context_pP->ue_context.rnti,
-			 (BCCH_BCH_Message_t *) NULL,
-			 (RadioResourceConfigCommonSIB_t*) NULL,
+    ctxt_pP->module_id,
+    ue_context_pP->ue_context.primaryCC_id,
+    0,0,0,0,0,
+#ifdef Rel14
+    0,
+#endif
+    ue_context_pP->ue_context.rnti,
+    (BCCH_BCH_Message_t *) NULL,
+    (RadioResourceConfigCommonSIB_t *) NULL,
 #ifdef Rel14
-			 (RadioResourceConfigCommonSIB_t*) NULL,
+    (RadioResourceConfigCommonSIB_t *) NULL,
 #endif
-			 ue_context_pP->ue_context.physicalConfigDedicated,
+    ue_context_pP->ue_context.physicalConfigDedicated,
 #if defined(Rel10) || defined(Rel14)
-			 (SCellToAddMod_r10_t *)NULL,
-			 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-			 (MeasObjectToAddMod_t **) NULL,
-			 ue_context_pP->ue_context.mac_MainConfig,
-			 1,
-			 SRB1_logicalChannelConfig,
-			 ue_context_pP->ue_context.measGapConfig,
-			 (TDD_Config_t*) NULL,
-			 (MobilityControlInfo_t*) NULL,
-			 (SchedulingInfoList_t*) NULL,
-			 0,
-			 NULL,
-			 NULL,
-			 (MBSFN_SubframeConfigList_t *) NULL
+    (SCellToAddMod_r10_t *)NULL,
+    //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+    (MeasObjectToAddMod_t **) NULL,
+    ue_context_pP->ue_context.mac_MainConfig,
+    1,
+    SRB1_logicalChannelConfig,
+    ue_context_pP->ue_context.measGapConfig,
+    (TDD_Config_t *) NULL,
+    (MobilityControlInfo_t *) NULL,
+    (SchedulingInfoList_t *) NULL,
+    0,
+    NULL,
+    NULL,
+    (MBSFN_SubframeConfigList_t *) NULL
 #if defined(Rel10) || defined(Rel14)
-			 , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
+    , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
 #endif
 #   ifdef Rel14
-			 ,
-			 (SystemInformationBlockType1_v1310_IEs_t *)NULL
+    ,
+    (SystemInformationBlockType1_v1310_IEs_t *)NULL
 #   endif
-			 );
-  
+  );
   // Configure target eNB SRB2
   /// SRB2
   SRB2_config = CALLOC(1, sizeof(*SRB2_config));
   SRB_configList2 = CALLOC(1, sizeof(*SRB_configList2));
   memset(SRB_configList2, 0, sizeof(*SRB_configList2));
-
   SRB2_config->srb_Identity = 2;
   SRB2_rlc_config = CALLOC(1, sizeof(*SRB2_rlc_config));
   SRB2_config->rlc_Config = SRB2_rlc_config;
-
   SRB2_rlc_config->present = SRB_ToAddMod__rlc_Config_PR_explicitValue;
   SRB2_rlc_config->choice.explicitValue.present = RLC_Config_PR_am;
   SRB2_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.t_PollRetransmit = T_PollRetransmit_ms15;
@@ -4643,34 +4286,26 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   SRB2_rlc_config->choice.explicitValue.choice.am.ul_AM_RLC.maxRetxThreshold = UL_AM_RLC__maxRetxThreshold_t32;
   SRB2_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_Reordering = T_Reordering_ms35;
   SRB2_rlc_config->choice.explicitValue.choice.am.dl_AM_RLC.t_StatusProhibit = T_StatusProhibit_ms10;
-
   SRB2_lchan_config = CALLOC(1, sizeof(*SRB2_lchan_config));
   SRB2_config->logicalChannelConfig = SRB2_lchan_config;
-
   SRB2_lchan_config->present = SRB_ToAddMod__logicalChannelConfig_PR_explicitValue;
-
   SRB2_ul_SpecificParameters = CALLOC(1, sizeof(*SRB2_ul_SpecificParameters));
-
   SRB2_ul_SpecificParameters->priority = 1;
   SRB2_ul_SpecificParameters->prioritisedBitRate =
     LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
   SRB2_ul_SpecificParameters->bucketSizeDuration =
     LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
   // LCG for CCCH and DCCH is 0 as defined in 36331
   logicalchannelgroup = CALLOC(1, sizeof(long));
   *logicalchannelgroup = 0;
-
   SRB2_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup;
   SRB2_lchan_config->choice.explicitValue.ul_SpecificParameters = SRB2_ul_SpecificParameters;
   ASN_SEQUENCE_ADD(&SRB_configList->list, SRB2_config);
   ASN_SEQUENCE_ADD(&SRB_configList2->list, SRB2_config);
-
   // Configure target eNB DRB
   DRB_configList2 = CALLOC(1, sizeof(*DRB_configList2));
   /// DRB
   DRB_config = CALLOC(1, sizeof(*DRB_config));
-
   //DRB_config->drb_Identity = (DRB_Identity_t) 1; //allowed values 1..32
   // NN: this is the 1st DRB for this ue, so set it to 1
   DRB_config->drb_Identity = (DRB_Identity_t) 1;  // (ue_mod_idP+1); //allowed values 1..32
@@ -4682,7 +4317,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
   DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
   DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = T_Reordering_ms35;
-
   DRB_pdcp_config = CALLOC(1, sizeof(*DRB_pdcp_config));
   DRB_config->pdcp_Config = DRB_pdcp_config;
   DRB_pdcp_config->discardTimer = NULL;
@@ -4691,53 +4325,37 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   DRB_pdcp_config->rlc_UM = PDCP_rlc_UM;
   PDCP_rlc_UM->pdcp_SN_Size = PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
   DRB_pdcp_config->headerCompression.present = PDCP_Config__headerCompression_PR_notUsed;
-
   DRB_lchan_config = CALLOC(1, sizeof(*DRB_lchan_config));
   DRB_config->logicalChannelConfig = DRB_lchan_config;
   DRB_ul_SpecificParameters = CALLOC(1, sizeof(*DRB_ul_SpecificParameters));
   DRB_lchan_config->ul_SpecificParameters = DRB_ul_SpecificParameters;
-
   DRB_ul_SpecificParameters->priority = 2;    // lower priority than srb1, srb2
   DRB_ul_SpecificParameters->prioritisedBitRate =
     LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
   DRB_ul_SpecificParameters->bucketSizeDuration =
     LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
   // LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
   logicalchannelgroup_drb = CALLOC(1, sizeof(long));
   *logicalchannelgroup_drb = 1;
   DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb;
-
   ASN_SEQUENCE_ADD(&DRB_configList2->list, DRB_config);
-
   mac_MainConfig = CALLOC(1, sizeof(*mac_MainConfig));
   ue_context_pP->ue_context.mac_MainConfig = mac_MainConfig;
-
   mac_MainConfig->ul_SCH_Config = CALLOC(1, sizeof(*mac_MainConfig->ul_SCH_Config));
-
   maxHARQ_Tx = CALLOC(1, sizeof(long));
   *maxHARQ_Tx = MAC_MainConfig__ul_SCH_Config__maxHARQ_Tx_n5;
   mac_MainConfig->ul_SCH_Config->maxHARQ_Tx = maxHARQ_Tx;
-
   periodicBSR_Timer = CALLOC(1, sizeof(long));
   *periodicBSR_Timer = PeriodicBSR_Timer_r12_sf64;
   mac_MainConfig->ul_SCH_Config->periodicBSR_Timer = periodicBSR_Timer;
-
   mac_MainConfig->ul_SCH_Config->retxBSR_Timer = RetxBSR_Timer_r12_sf320;
-
   mac_MainConfig->ul_SCH_Config->ttiBundling = 0; // FALSE
-
   mac_MainConfig->drx_Config = NULL;
-
   mac_MainConfig->phr_Config = CALLOC(1, sizeof(*mac_MainConfig->phr_Config));
-
   mac_MainConfig->phr_Config->present = MAC_MainConfig__phr_Config_PR_setup;
   mac_MainConfig->phr_Config->choice.setup.periodicPHR_Timer = MAC_MainConfig__phr_Config__setup__periodicPHR_Timer_sf20; // sf20 = 20 subframes
-
   mac_MainConfig->phr_Config->choice.setup.prohibitPHR_Timer = MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf20; // sf20 = 20 subframes
-
   mac_MainConfig->phr_Config->choice.setup.dl_PathlossChange = MAC_MainConfig__phr_Config__setup__dl_PathlossChange_dB1;  // Value dB1 =1 dB, dB3 = 3 dB
-
 #if defined(Rel10) || defined(Rel14)
   sr_ProhibitTimer_r9 = CALLOC(1, sizeof(long));
   *sr_ProhibitTimer_r9 = 0;   // SR tx on PUCCH, Value in number of SR period(s). Value 0 = no timer for SR, Value 2= 2*SR
@@ -4748,54 +4366,43 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   // Measurement ID list
   MeasId_list = CALLOC(1, sizeof(*MeasId_list));
   memset((void *)MeasId_list, 0, sizeof(*MeasId_list));
-
   MeasId0 = CALLOC(1, sizeof(*MeasId0));
   MeasId0->measId = 1;
   MeasId0->measObjectId = 1;
   MeasId0->reportConfigId = 1;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId0);
-
   MeasId1 = CALLOC(1, sizeof(*MeasId1));
   MeasId1->measId = 2;
   MeasId1->measObjectId = 1;
   MeasId1->reportConfigId = 2;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId1);
-
   MeasId2 = CALLOC(1, sizeof(*MeasId2));
   MeasId2->measId = 3;
   MeasId2->measObjectId = 1;
   MeasId2->reportConfigId = 3;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId2);
-
   MeasId3 = CALLOC(1, sizeof(*MeasId3));
   MeasId3->measId = 4;
   MeasId3->measObjectId = 1;
   MeasId3->reportConfigId = 4;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId3);
-
   MeasId4 = CALLOC(1, sizeof(*MeasId4));
   MeasId4->measId = 5;
   MeasId4->measObjectId = 1;
   MeasId4->reportConfigId = 5;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId4);
-
   MeasId5 = CALLOC(1, sizeof(*MeasId5));
   MeasId5->measId = 6;
   MeasId5->measObjectId = 1;
   MeasId5->reportConfigId = 6;
   ASN_SEQUENCE_ADD(&MeasId_list->list, MeasId5);
-
   //  rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->measIdToAddModList = MeasId_list;
-
   // Add one EUTRA Measurement Object
   MeasObj_list = CALLOC(1, sizeof(*MeasObj_list));
   memset((void *)MeasObj_list, 0, sizeof(*MeasObj_list));
-
   // Configure MeasObject
-
   MeasObj = CALLOC(1, sizeof(*MeasObj));
   memset((void *)MeasObj, 0, sizeof(*MeasObj));
-
   MeasObj->measObjectId = 1;
   MeasObj->measObject.present = MeasObjectToAddMod__measObject_PR_measObjectEUTRA;
   MeasObj->measObject.choice.measObjectEUTRA.carrierFreq = 36090;
@@ -4806,7 +4413,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.size = 1;
   MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.bits_unused = 6;
   MeasObj->measObject.choice.measObjectEUTRA.offsetFreq = NULL;   // Default is 15 or 0dB
-
   MeasObj->measObject.choice.measObjectEUTRA.cellsToAddModList =
     (CellsToAddModList_t *) CALLOC(1, sizeof(*CellsToAddModList));
   CellsToAddModList = MeasObj->measObject.choice.measObjectEUTRA.cellsToAddModList;
@@ -4817,28 +4423,19 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
     CellToAdd->cellIndex = i + 1;
     CellToAdd->physCellId = get_adjacent_cell_id(ctxt_pP->module_id, i);
     CellToAdd->cellIndividualOffset = Q_OffsetRange_dB0;
-
     ASN_SEQUENCE_ADD(&CellsToAddModList->list, CellToAdd);
   }
 
   ASN_SEQUENCE_ADD(&MeasObj_list->list, MeasObj);
   //  rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->measObjectToAddModList = MeasObj_list;
-
   // Report Configurations for periodical, A1-A5 events
   ReportConfig_list = CALLOC(1, sizeof(*ReportConfig_list));
-
   ReportConfig_per = CALLOC(1, sizeof(*ReportConfig_per));
-
   ReportConfig_A1 = CALLOC(1, sizeof(*ReportConfig_A1));
-
   ReportConfig_A2 = CALLOC(1, sizeof(*ReportConfig_A2));
-
   ReportConfig_A3 = CALLOC(1, sizeof(*ReportConfig_A3));
-
   ReportConfig_A4 = CALLOC(1, sizeof(*ReportConfig_A4));
-
   ReportConfig_A5 = CALLOC(1, sizeof(*ReportConfig_A5));
-
   ReportConfig_per->reportConfigId = 1;
   ReportConfig_per->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -4850,9 +4447,7 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
   ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
   ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_per);
-
   ReportConfig_A1->reportConfigId = 2;
   ReportConfig_A1->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -4863,15 +4458,12 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   a1_Threshold.present = ThresholdEUTRA_PR_threshold_RSRP;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA1.
   a1_Threshold.choice.threshold_RSRP = 10;
-
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerQuantity = ReportConfigEUTRA__triggerQuantity_rsrp;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
   ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
   ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A1);
-
   ReportConfig_A2->reportConfigId = 3;
   ReportConfig_A2->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
   ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -4882,15 +4474,12 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   a2_Threshold.present = ThresholdEUTRA_PR_threshold_RSRP;
   ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA2.
   a2_Threshold.choice.threshold_RSRP = 10;
-
   ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerQuantity = ReportConfigEUTRA__triggerQuantity_rsrp;
   ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
   ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
   ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
   ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
   ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A2);
-
   ReportConfig_A3->reportConfigId = 4;
   ReportConfig_A3->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
   ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -4901,15 +4490,12 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
     10;
   ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
   eventA3.reportOnLeave = 1;
-
   ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerQuantity = ReportConfigEUTRA__triggerQuantity_rsrp;
   ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
   ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
   ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
   ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
   ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A3);
-
   ReportConfig_A4->reportConfigId = 5;
   ReportConfig_A4->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
   ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -4920,15 +4506,12 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   a4_Threshold.present = ThresholdEUTRA_PR_threshold_RSRP;
   ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA4.
   a4_Threshold.choice.threshold_RSRP = 10;
-
   ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerQuantity = ReportConfigEUTRA__triggerQuantity_rsrp;
   ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
   ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
   ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
   ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
   ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A4);
-
   ReportConfig_A5->reportConfigId = 6;
   ReportConfig_A5->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
   ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.present =
@@ -4943,15 +4526,12 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   eventA5.a5_Threshold1.choice.threshold_RSRP = 10;
   ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
   eventA5.a5_Threshold2.choice.threshold_RSRP = 10;
-
   ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerQuantity = ReportConfigEUTRA__triggerQuantity_rsrp;
   ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportQuantity = ReportConfigEUTRA__reportQuantity_both;
   ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
   ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportInterval = ReportInterval_ms120;
   ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportAmount = ReportConfigEUTRA__reportAmount_infinity;
-
   ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A5);
-
   Sparams = CALLOC(1, sizeof(*Sparams));
   Sparams->present = MeasConfig__speedStatePars_PR_setup;
   Sparams->choice.setup.timeToTrigger_SF.sf_High = SpeedStateScaleFactors__sf_Medium_oDot75;
@@ -4960,7 +4540,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   Sparams->choice.setup.mobilityStateParameters.n_CellChangeMedium = 5;
   Sparams->choice.setup.mobilityStateParameters.t_Evaluation = MobilityStateParameters__t_Evaluation_s60;
   Sparams->choice.setup.mobilityStateParameters.t_HystNormal = MobilityStateParameters__t_HystNormal_s120;
-
   quantityConfig = CALLOC(1, sizeof(*quantityConfig));
   memset((void *)quantityConfig, 0, sizeof(*quantityConfig));
   quantityConfig->quantityConfigEUTRA = CALLOC(1, sizeof(*quantityConfig->quantityConfigEUTRA));
@@ -4974,9 +4553,7 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
     CALLOC(1, sizeof(*quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ));
   *quantityConfig->quantityConfigEUTRA->filterCoefficientRSRP = FilterCoefficient_fc4;
   *quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ = FilterCoefficient_fc4;
-
   /* mobilityinfo  */
-
   mobilityInfo = CALLOC(1, sizeof(*mobilityInfo));
   memset((void *)mobilityInfo, 0, sizeof(*mobilityInfo));
   mobilityInfo->targetPhysCellId =
@@ -4987,22 +4564,17 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
         mobilityInfo->targetPhysCellId,
         ctxt_pP->module_id,
         ue_context_pP->ue_context.rnti);
-
   mobilityInfo->additionalSpectrumEmission = CALLOC(1, sizeof(*mobilityInfo->additionalSpectrumEmission));
   *mobilityInfo->additionalSpectrumEmission = 1;  //Check this value!
-
   mobilityInfo->t304 = MobilityControlInfo__t304_ms50;    // need to configure an appropriate value here
-
   // New UE Identity (C-RNTI) to identify an UE uniquely in a cell
   mobilityInfo->newUE_Identity.size = 2;
   mobilityInfo->newUE_Identity.bits_unused = 0;
   mobilityInfo->newUE_Identity.buf = rv;
   mobilityInfo->newUE_Identity.buf[0] = rv[0];
   mobilityInfo->newUE_Identity.buf[1] = rv[1];
-
   //memset((void *)&mobilityInfo->radioResourceConfigCommon,(void *)&rrc_inst->sib2->radioResourceConfigCommon,sizeof(RadioResourceConfigCommon_t));
   //memset((void *)&mobilityInfo->radioResourceConfigCommon,0,sizeof(RadioResourceConfigCommon_t));
-
   // Configuring radioResourceConfigCommon
   mobilityInfo->radioResourceConfigCommon.rach_ConfigCommon =
     CALLOC(1, sizeof(*mobilityInfo->radioResourceConfigCommon.rach_ConfigCommon));
@@ -5013,7 +4585,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   memcpy((void *)mobilityInfo->radioResourceConfigCommon.prach_Config.prach_ConfigInfo,
          (void *)&rrc_inst->carrier[0] /* CROUX TBC */.sib2->radioResourceConfigCommon.prach_Config.prach_ConfigInfo,
          sizeof(PRACH_ConfigInfo_t));
-
   mobilityInfo->radioResourceConfigCommon.prach_Config.rootSequenceIndex =
     rrc_inst->carrier[0] /* CROUX TBC */.sib2->radioResourceConfigCommon.prach_Config.rootSequenceIndex;
   mobilityInfo->radioResourceConfigCommon.pdsch_ConfigCommon =
@@ -5045,31 +4616,27 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   mobilityInfo->radioResourceConfigCommon.ul_CyclicPrefixLength =
     rrc_inst->carrier[0] /* CROUX TBC */.sib2->radioResourceConfigCommon.ul_CyclicPrefixLength;
   //End of configuration of radioResourceConfigCommon
-
   mobilityInfo->carrierFreq = CALLOC(1, sizeof(*mobilityInfo->carrierFreq));  //CALLOC(1,sizeof(CarrierFreqEUTRA_t)); 36090
   mobilityInfo->carrierFreq->dl_CarrierFreq = 36090;
   mobilityInfo->carrierFreq->ul_CarrierFreq = NULL;
-
   mobilityInfo->carrierBandwidth = CALLOC(1, sizeof(
       *mobilityInfo->carrierBandwidth));    //CALLOC(1,sizeof(struct CarrierBandwidthEUTRA));  AllowedMeasBandwidth_mbw25
   mobilityInfo->carrierBandwidth->dl_Bandwidth = CarrierBandwidthEUTRA__dl_Bandwidth_n25;
   mobilityInfo->carrierBandwidth->ul_Bandwidth = NULL;
   mobilityInfo->rach_ConfigDedicated = NULL;
-
   // store the srb and drb list for ho management, mainly in case of failure
-
   memcpy(ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.srb_ToAddModList,
-         (void*)SRB_configList2,
+         (void *)SRB_configList2,
          sizeof(SRB_ToAddModList_t));
-  memcpy((void*)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.drb_ToAddModList,
-         (void*)DRB_configList2,
+  memcpy((void *)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.drb_ToAddModList,
+         (void *)DRB_configList2,
          sizeof(DRB_ToAddModList_t));
   ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.drb_ToReleaseList = NULL;
-  memcpy((void*)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.mac_MainConfig,
-         (void*)mac_MainConfig,
+  memcpy((void *)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.mac_MainConfig,
+         (void *)mac_MainConfig,
          sizeof(MAC_MainConfig_t));
-  memcpy((void*)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.physicalConfigDedicated,
-         (void*)ue_context_pP->ue_context.physicalConfigDedicated,
+  memcpy((void *)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.physicalConfigDedicated,
+         (void *)ue_context_pP->ue_context.physicalConfigDedicated,
          sizeof(PhysicalConfigDedicated_t));
   /*    memcpy((void *)rrc_inst->handover_info[ue_mod_idP]->as_config.sourceRadioResourceConfig.sps_Config,
      (void *)rrc_inst->sps_Config[ue_mod_idP],
@@ -5084,19 +4651,15 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
   ue_context_pP->ue_context.Srb1.Srb_info.Srb_id = Idx;
   memcpy(&ue_context_pP->ue_context.Srb1.Srb_info.Lchan_desc[0], &DCCH_LCHAN_DESC, LCHAN_DESC_SIZE);
   memcpy(&ue_context_pP->ue_context.Srb1.Srb_info.Lchan_desc[1], &DCCH_LCHAN_DESC, LCHAN_DESC_SIZE);
-
-  // SRB2 
+  // SRB2
   ue_context_pP->ue_context.Srb2.Active = 1;
   ue_context_pP->ue_context.Srb2.Srb_info.Srb_id = Idx;
   memcpy(&ue_context_pP->ue_context.Srb2.Srb_info.Lchan_desc[0], &DCCH_LCHAN_DESC, LCHAN_DESC_SIZE);
   memcpy(&ue_context_pP->ue_context.Srb2.Srb_info.Lchan_desc[1], &DCCH_LCHAN_DESC, LCHAN_DESC_SIZE);
-
   LOG_I(RRC, "[eNB %d] CALLING RLC CONFIG SRB1 (rbid %d) for UE %x\n",
         ctxt_pP->module_id, Idx, ue_context_pP->ue_context.rnti);
-
   //      rrc_pdcp_config_req (enb_mod_idP, frameP, 1, CONFIG_ACTION_ADD, idx, UNDEF_SECURITY_MODE);
   //      rrc_rlc_config_req(enb_mod_idP,frameP,1,CONFIG_ACTION_ADD,Idx,SIGNALLING_RADIO_BEARER,Rlc_info_am_config);
-
   rrc_pdcp_config_asn1_req(&ctxt,
                            ue_context_pP->ue_context.SRB_configList,
                            (DRB_ToAddModList_t *) NULL, (DRB_ToReleaseList_t *) NULL, 0xff, NULL, NULL, NULL
@@ -5104,7 +4667,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
                            , (PMCH_InfoList_r9_t *) NULL
 #endif
                            ,NULL);
-
   rrc_rlc_config_asn1_req(&ctxt,
                           ue_context_pP->ue_context.SRB_configList,
                           (DRB_ToAddModList_t *) NULL, (DRB_ToReleaseList_t *) NULL
@@ -5112,13 +4674,10 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
                           , (PMCH_InfoList_r9_t *) NULL
 #endif
                          );
-
   /* Initialize NAS list */
   dedicatedInfoNASList = NULL;
-
   //  rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->reportConfigToAddModList = ReportConfig_list;
   memset(buffer, 0, RRC_BUF_SIZE);
-
   size = do_RRCConnectionReconfiguration(
            ctxt_pP,
            buffer,
@@ -5143,7 +4702,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
            , NULL   // SCellToAddMod_r10_t
 #endif
          );
-
   LOG_I(RRC,
         "[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration for handover (bytes %d, UE rnti %x)\n",
         ctxt_pP->module_id, ctxt_pP->frame, size, ue_context_pP->ue_context.rnti);
@@ -5160,55 +4718,52 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
      SRB1_logicalChannelConfig = &SRB1_logicalChannelConfig_defaultValue;
      }
    */
-
   LOG_D(RRC,
         "[FRAME %05d][RRC_eNB][MOD %02d][][--- PDCP_DATA_REQ/%d Bytes (rrcConnectionReconfiguration_handover to UE %x MUI %d) --->][PDCP][MOD %02d][RB %02d]\n",
         ctxt_pP->frame, ctxt_pP->module_id, size, ue_context_pP->ue_context.rnti, rrc_eNB_mui, ctxt_pP->module_id, DCCH);
   //rrc_rlc_data_req(ctxt_pP->module_id,frameP, 1,(ue_mod_idP*NB_RB_MAX)+DCCH,rrc_eNB_mui++,0,size,(char*)buffer);
   //pdcp_data_req (ctxt_pP->module_id, frameP, 1, (ue_mod_idP * NB_RB_MAX) + DCCH,rrc_eNB_mui++, 0, size, (char *) buffer, 1);
-
   rrc_mac_config_req_eNB(
-			 ctxt_pP->module_id,
-			 ue_context_pP->ue_context.primaryCC_id,
-			 0,0,0,0,0,
-#ifdef Rel14 
-			 0,
-#endif
-			 ue_context_pP->ue_context.rnti,
-			 (BCCH_BCH_Message_t *) NULL,
-			 (RadioResourceConfigCommonSIB_t *) NULL,
+    ctxt_pP->module_id,
+    ue_context_pP->ue_context.primaryCC_id,
+    0,0,0,0,0,
+#ifdef Rel14
+    0,
+#endif
+    ue_context_pP->ue_context.rnti,
+    (BCCH_BCH_Message_t *) NULL,
+    (RadioResourceConfigCommonSIB_t *) NULL,
 #ifdef Rel14
-			 (RadioResourceConfigCommonSIB_t *) NULL,
+    (RadioResourceConfigCommonSIB_t *) NULL,
 #endif
-			 ue_context_pP->ue_context.physicalConfigDedicated,
+    ue_context_pP->ue_context.physicalConfigDedicated,
 #if defined(Rel10) || defined(Rel14)
-			 (SCellToAddMod_r10_t *)NULL,
-			 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-			 (MeasObjectToAddMod_t **) NULL,
-			 ue_context_pP->ue_context.mac_MainConfig,
-			 1,
-			 SRB1_logicalChannelConfig,
-			 ue_context_pP->ue_context.measGapConfig,
-			 (TDD_Config_t *) NULL,
-			 (MobilityControlInfo_t *) mobilityInfo,
-			 (SchedulingInfoList_t *) NULL, 0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
+    (SCellToAddMod_r10_t *)NULL,
+    //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+    (MeasObjectToAddMod_t **) NULL,
+    ue_context_pP->ue_context.mac_MainConfig,
+    1,
+    SRB1_logicalChannelConfig,
+    ue_context_pP->ue_context.measGapConfig,
+    (TDD_Config_t *) NULL,
+    (MobilityControlInfo_t *) mobilityInfo,
+    (SchedulingInfoList_t *) NULL, 0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
 #if defined(Rel10) || defined(Rel14)
-			 , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
+    , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
 #endif
 #   ifdef Rel14
-			 ,
-			 (SystemInformationBlockType1_v1310_IEs_t *)NULL
+    ,
+    (SystemInformationBlockType1_v1310_IEs_t *)NULL
 #   endif
-			 );
-  
+  );
   /*
      handoverCommand.criticalExtensions.present = HandoverCommand__criticalExtensions_PR_c1;
      handoverCommand.criticalExtensions.choice.c1.present = HandoverCommand__criticalExtensions__c1_PR_handoverCommand_r8;
      handoverCommand.criticalExtensions.choice.c1.choice.handoverCommand_r8.handoverCommandMessage.buf = buffer;
      handoverCommand.criticalExtensions.choice.c1.choice.handoverCommand_r8.handoverCommandMessage.size = size;
    */
-//#warning "COMPILATION PROBLEM"
+  //#warning "COMPILATION PROBLEM"
 #ifdef PROBLEM_COMPILATION_RESOLVED
 
   if (sourceModId != 0xFF) {
@@ -5255,8 +4810,8 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_process_RRCConnectionReconfigurationComplete(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*        ue_context_pP,
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t        *ue_context_pP,
   const uint8_t xid
 )
 //-----------------------------------------------------------------------------
@@ -5271,20 +4826,16 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
   (void)dest_ip_offset;
   (void)ue_module_id;
 #endif
-
   uint8_t                            *kRRCenc = NULL;
   uint8_t                            *kRRCint = NULL;
   uint8_t                            *kUPenc = NULL;
   ue_context_pP->ue_context.ue_reestablishment_timer = 0;
-
-  DRB_ToAddModList_t*                 DRB_configList = ue_context_pP->ue_context.DRB_configList2[xid];
-  SRB_ToAddModList_t*                 SRB_configList = ue_context_pP->ue_context.SRB_configList2[xid];
-  DRB_ToReleaseList_t*                DRB_Release_configList2 = ue_context_pP->ue_context.DRB_Release_configList2[xid];
-  DRB_Identity_t*                     drb_id_p      = NULL;
-
+  DRB_ToAddModList_t                 *DRB_configList = ue_context_pP->ue_context.DRB_configList2[xid];
+  SRB_ToAddModList_t                 *SRB_configList = ue_context_pP->ue_context.SRB_configList2[xid];
+  DRB_ToReleaseList_t                *DRB_Release_configList2 = ue_context_pP->ue_context.DRB_Release_configList2[xid];
+  DRB_Identity_t                     *drb_id_p      = NULL;
   T(T_ENB_RRC_CONNECTION_RECONFIGURATION_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
 #if defined(ENABLE_SECURITY)
 
   /* Derive the keys from kenb */
@@ -5297,9 +4848,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
                      ue_context_pP->ue_context.kenb, &kRRCenc);
   derive_key_rrc_int(ue_context_pP->ue_context.integrity_algorithm,
                      ue_context_pP->ue_context.kenb, &kRRCint);
-
 #endif
-
   // Refresh SRBs/DRBs
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
@@ -5309,12 +4858,11 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
     MSC_AS_TIME_FMT" CONFIG_REQ UE %x DRB (security unchanged)",
     MSC_AS_TIME_ARGS(ctxt_pP),
     ue_context_pP->ue_context.rnti);
-
   rrc_pdcp_config_asn1_req(
     ctxt_pP,
     SRB_configList, //NULL,  //LG-RK 14/05/2014 SRB_configList,
-    DRB_configList, 
-//    (DRB_ToReleaseList_t *) NULL,
+    DRB_configList,
+    //    (DRB_ToReleaseList_t *) NULL,
     DRB_Release_configList2,
     /*RC.rrc[ctxt_pP->module_id]->ciphering_algorithm[ue_mod_idP] |
              (RC.rrc[ctxt_pP->module_id]->integrity_algorithm[ue_mod_idP] << 4),
@@ -5332,44 +4880,45 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
     ctxt_pP,
     SRB_configList, // NULL,  //LG-RK 14/05/2014 SRB_configList,
     DRB_configList,
-//    (DRB_ToReleaseList_t *) NULL
+    //    (DRB_ToReleaseList_t *) NULL
     DRB_Release_configList2
 #if defined(Rel10) || defined(Rel14)
     , (PMCH_InfoList_r9_t *) NULL
 #endif
   );
-  
+
   // set the SRB active in Ue context
   if (SRB_configList != NULL) {
     for (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;
+      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(RRC,"[eNB %d] Frame  %d CC %d : SRB2 is now active\n",
-		ctxt_pP->module_id,
-		ctxt_pP->frame,
-		ue_context_pP->ue_context.primaryCC_id);
+        ue_context_pP->ue_context.Srb2.Active=1;
+        ue_context_pP->ue_context.Srb2.Srb_info.Srb_id=2;
+        LOG_I(RRC,"[eNB %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(RRC,"[eNB %d] Frame  %d CC %d : invalide SRB identity %ld\n",
-	      ctxt_pP->module_id,
-	      ctxt_pP->frame,
+        LOG_W(RRC,"[eNB %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);
+              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 (i = 0; i < DRB_configList->list.count; i++) {  // num max DRB (11-3-8)
       if (DRB_configList->list.array[i]) {
-	drb_id = (int)DRB_configList->list.array[i]->drb_Identity;
+        drb_id = (int)DRB_configList->list.array[i]->drb_Identity;
         LOG_I(RRC,
               "[eNB %d] Frame  %d : Logical Channel UL-DCCH, Received RRCConnectionReconfigurationComplete from UE rnti %x, reconfiguring DRB %d/LCID %d\n",
               ctxt_pP->module_id,
@@ -5395,7 +4944,6 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
              RADIO_ACCESS_BEARER,Rlc_info_um);
            */
           ue_context_pP->ue_context.DRB_active[drb_id] = 1;
-
           LOG_D(RRC,
                 "[eNB %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);
@@ -5430,7 +4978,6 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
 
 #   endif
 #endif
-
           LOG_D(RRC,
                 PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ  (DRB) ---> MAC_eNB\n",
                 PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
@@ -5440,43 +4987,41 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
           }
 
           rrc_mac_config_req_eNB(
-				 ctxt_pP->module_id,
-				 ue_context_pP->ue_context.primaryCC_id,
-				 0,0,0,0,0,
-#ifdef Rel14 
-				 0,
-#endif
-				 ue_context_pP->ue_context.rnti,
-				 (BCCH_BCH_Message_t *) NULL,
-				 (RadioResourceConfigCommonSIB_t *) NULL,
+            ctxt_pP->module_id,
+            ue_context_pP->ue_context.primaryCC_id,
+            0,0,0,0,0,
+#ifdef Rel14
+            0,
+#endif
+            ue_context_pP->ue_context.rnti,
+            (BCCH_BCH_Message_t *) NULL,
+            (RadioResourceConfigCommonSIB_t *) NULL,
 #ifdef Rel14
-				 (RadioResourceConfigCommonSIB_t *) NULL,
+            (RadioResourceConfigCommonSIB_t *) NULL,
 #endif
-				 ue_context_pP->ue_context.physicalConfigDedicated,
+            ue_context_pP->ue_context.physicalConfigDedicated,
 #if defined(Rel10) || defined(Rel14)
-				 (SCellToAddMod_r10_t *)NULL,
-				 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-				 (MeasObjectToAddMod_t **) NULL,
-				 ue_context_pP->ue_context.mac_MainConfig,
-				 DRB2LCHAN[i],
-				 DRB_configList->list.array[i]->logicalChannelConfig,
-				 ue_context_pP->ue_context.measGapConfig,
-				 (TDD_Config_t *) NULL,
-				 NULL,
-				 (SchedulingInfoList_t *) NULL,
-				 0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
+            (SCellToAddMod_r10_t *)NULL,
+            //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+            (MeasObjectToAddMod_t **) NULL,
+            ue_context_pP->ue_context.mac_MainConfig,
+            DRB2LCHAN[i],
+            DRB_configList->list.array[i]->logicalChannelConfig,
+            ue_context_pP->ue_context.measGapConfig,
+            (TDD_Config_t *) NULL,
+            NULL,
+            (SchedulingInfoList_t *) NULL,
+            0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
 #if defined(Rel10) || defined(Rel14)
-				 , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
+            , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
 #endif
 #   ifdef Rel14
-				 ,
-				 (SystemInformationBlockType1_v1310_IEs_t *)NULL
+            ,
+            (SystemInformationBlockType1_v1310_IEs_t *)NULL
 #   endif
-				 );
-	  
+          );
         } 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,
@@ -5496,95 +5041,94 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
                 PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ  (DRB) ---> MAC_eNB\n",
                 PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
           rrc_mac_config_req_eNB(ctxt_pP->module_id,
-				 ue_context_pP->ue_context.primaryCC_id,
-				 0,0,0,0,0,
-#ifdef Rel14 
-				 0,
-#endif
-				 ue_context_pP->ue_context.rnti,
-				 (BCCH_BCH_Message_t *) NULL,
-				 (RadioResourceConfigCommonSIB_t *) NULL,
+                                 ue_context_pP->ue_context.primaryCC_id,
+                                 0,0,0,0,0,
+#ifdef Rel14
+                                 0,
+#endif
+                                 ue_context_pP->ue_context.rnti,
+                                 (BCCH_BCH_Message_t *) NULL,
+                                 (RadioResourceConfigCommonSIB_t *) NULL,
 #ifdef Rel14
-				 (RadioResourceConfigCommonSIB_t *) NULL,
+                                 (RadioResourceConfigCommonSIB_t *) NULL,
 #endif
-				 ue_context_pP->ue_context.physicalConfigDedicated,
+                                 ue_context_pP->ue_context.physicalConfigDedicated,
 #if defined(Rel10) || defined(Rel14)
-				 (SCellToAddMod_r10_t *)NULL,
-				 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-				 (MeasObjectToAddMod_t **) NULL,
-				 ue_context_pP->ue_context.mac_MainConfig,
-				 DRB2LCHAN[i],
-				 (LogicalChannelConfig_t *) NULL,
-				 (MeasGapConfig_t *) NULL,
-				 (TDD_Config_t *) NULL,
-				 NULL, 
-				 (SchedulingInfoList_t *) NULL,
-				 0, NULL, NULL, NULL
+                                 (SCellToAddMod_r10_t *)NULL,
+                                 //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+                                 (MeasObjectToAddMod_t **) NULL,
+                                 ue_context_pP->ue_context.mac_MainConfig,
+                                 DRB2LCHAN[i],
+                                 (LogicalChannelConfig_t *) NULL,
+                                 (MeasGapConfig_t *) NULL,
+                                 (TDD_Config_t *) NULL,
+                                 NULL,
+                                 (SchedulingInfoList_t *) NULL,
+                                 0, NULL, NULL, NULL
 #if defined(Rel10) || defined(Rel14)
-				 , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
+                                 , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
 #endif
 #   ifdef Rel14
-				 ,
-				 (SystemInformationBlockType1_v1310_IEs_t *)NULL
+                                 ,
+                                 (SystemInformationBlockType1_v1310_IEs_t *)NULL
 #   endif
-				 );
+                                );
         }
       }
     }
-   free(DRB_configList);
+
+    free(DRB_configList);
     ue_context_pP->ue_context.DRB_configList2[xid] = NULL;
   }
 
-  if(DRB_Release_configList2 != NULL){
-      for (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;
-              }
-          }
+  if(DRB_Release_configList2 != NULL) {
+    for (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;
   }
 }
 
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_generate_RRCConnectionSetup(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*          const ue_context_pP,
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t          *const ue_context_pP,
   const int                    CC_id
 )
 //-----------------------------------------------------------------------------
 {
-
   LogicalChannelConfig_t             *SRB1_logicalChannelConfig;  //,*SRB2_logicalChannelConfig;
   SRB_ToAddModList_t                **SRB_configList;
   SRB_ToAddMod_t                     *SRB1_config;
   int                                 cnt;
-
   T(T_ENB_RRC_CONNECTION_SETUP, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
   SRB_configList = &ue_context_pP->ue_context.SRB_configList;
   RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size =
     do_RRCConnectionSetup(ctxt_pP,
                           ue_context_pP,
                           CC_id,
-                          (uint8_t*) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload,
-			  (uint8_t) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB, //at this point we do not have the UE capability information, so it can only be TM1 or TM2
+                          (uint8_t *) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload,
+                          (uint8_t) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB, //at this point we do not have the UE capability information, so it can only be TM1 or TM2
                           rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id),
                           SRB_configList,
                           &ue_context_pP->ue_context.physicalConfigDedicated);
-
 #ifdef RRC_MSG_PRINT
   LOG_F(RRC,"[MSG] RRC Connection Setup\n");
 
   for (cnt = 0; cnt < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size; cnt++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)RC.rrc[ctxt_pP->module_id]->Srb0.Tx_buffer.Payload)[cnt]);
+    LOG_F(RRC,"%02x ", ((uint8_t *)RC.rrc[ctxt_pP->module_id]->Srb0.Tx_buffer.Payload)[cnt]);
   }
 
   LOG_F(RRC,"\n");
@@ -5613,40 +5157,40 @@ rrc_eNB_generate_RRCConnectionSetup(
               PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ  (SRB1) ---> MAC_eNB\n",
               PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
         rrc_mac_config_req_eNB(
-			       ctxt_pP->module_id,
-			       ue_context_pP->ue_context.primaryCC_id,
-			       0,0,0,0,0,
-#ifdef Rel14 
-			       0,
-#endif
-			       ue_context_pP->ue_context.rnti,
-			       (BCCH_BCH_Message_t *) NULL,
-			       (RadioResourceConfigCommonSIB_t *) NULL,
+          ctxt_pP->module_id,
+          ue_context_pP->ue_context.primaryCC_id,
+          0,0,0,0,0,
 #ifdef Rel14
-			       (RadioResourceConfigCommonSIB_t *) NULL,
+          0,
 #endif
-			       ue_context_pP->ue_context.physicalConfigDedicated,
+          ue_context_pP->ue_context.rnti,
+          (BCCH_BCH_Message_t *) NULL,
+          (RadioResourceConfigCommonSIB_t *) NULL,
+#ifdef Rel14
+          (RadioResourceConfigCommonSIB_t *) NULL,
+#endif
+          ue_context_pP->ue_context.physicalConfigDedicated,
 #if defined(Rel10) || defined(Rel14)
-			       (SCellToAddMod_r10_t *)NULL,
-			       //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-			       (MeasObjectToAddMod_t **) NULL,
-			       ue_context_pP->ue_context.mac_MainConfig,
-			       1,
-			       SRB1_logicalChannelConfig,
-			       ue_context_pP->ue_context.measGapConfig,
-			       (TDD_Config_t *) NULL,
-			       NULL,
-			       (SchedulingInfoList_t *) NULL,
-			       0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
+          (SCellToAddMod_r10_t *)NULL,
+          //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+          (MeasObjectToAddMod_t **) NULL,
+          ue_context_pP->ue_context.mac_MainConfig,
+          1,
+          SRB1_logicalChannelConfig,
+          ue_context_pP->ue_context.measGapConfig,
+          (TDD_Config_t *) NULL,
+          NULL,
+          (SchedulingInfoList_t *) NULL,
+          0, NULL, NULL, (MBSFN_SubframeConfigList_t *) NULL
 #if defined(Rel10) || defined(Rel14)
-			       , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
+          , 0, (MBSFN_AreaInfoList_r9_t *) NULL, (PMCH_InfoList_r9_t *) NULL
 #endif
 #   ifdef Rel14
-			       ,
-			       (SystemInformationBlockType1_v1310_IEs_t *)NULL
+          ,
+          (SystemInformationBlockType1_v1310_IEs_t *)NULL
 #   endif
-			       );
+        );
         break;
       }
     }
@@ -5661,21 +5205,18 @@ rrc_eNB_generate_RRCConnectionSetup(
     MSC_AS_TIME_ARGS(ctxt_pP),
     ue_context_pP->ue_context.rnti,
     RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size);
-
-
   LOG_I(RRC,
         PROTOCOL_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating RRCConnectionSetup (bytes %d)\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
         RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size);
-
   // activate release timer, if RRCSetupComplete not received after 10 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=100;
-     // 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;
+  // 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;
 }
 
 
@@ -5684,7 +5225,7 @@ rrc_eNB_generate_RRCConnectionSetup(
 char
 openair_rrc_eNB_configuration(
   const module_id_t enb_mod_idP,
-  RrcConfigurationReq* configuration
+  RrcConfigurationReq *configuration
 )
 #else
 char
@@ -5696,18 +5237,18 @@ openair_rrc_eNB_init(
 {
   protocol_ctxt_t ctxt;
   int             CC_id;
-
   PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, enb_mod_idP, ENB_FLAG_YES, NOT_A_RNTI, 0, 0,enb_mod_idP);
   LOG_I(RRC,
         PROTOCOL_RRC_CTXT_FMT" Init...\n",
         PROTOCOL_RRC_CTXT_ARGS(&ctxt));
-
 #if OCP_FRAMEWORK
+
   while ( RC.rrc[enb_mod_idP] == NULL ) {
     LOG_E(RRC, "RC.rrc not yet initialized, waiting 1 second\n");
     sleep(1);
   }
-#endif 
+
+#endif
   AssertFatal(RC.rrc[enb_mod_idP] != NULL, "RC.rrc not initialized!");
   AssertFatal(NUMBER_OF_UE_MAX < (module_id_t)0xFFFFFFFFFFFFFFFF, " variable overflow");
 #ifdef ENABLE_ITTI
@@ -5739,22 +5280,15 @@ openair_rrc_eNB_init(
   //    for (j = 0; j < (NUMBER_OF_UE_MAX + 1); j++) {
   //        RC.rrc[enb_mod_idP]->Srb2[j].Active = 0;
   //    }
-
-
   RC.rrc[ctxt.module_id]->initial_id2_s1ap_ids = hashtable_create (NUMBER_OF_UE_MAX * 2, NULL, NULL);
   RC.rrc[ctxt.module_id]->s1ap_id2_s1ap_ids    = hashtable_create (NUMBER_OF_UE_MAX * 2, NULL, NULL);
-
   memcpy(&RC.rrc[ctxt.module_id]->configuration,configuration,sizeof(RrcConfigurationReq));
-
   /// System Information INIT
-
   LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Checking release \n",
         PROTOCOL_RRC_CTXT_ARGS(&ctxt));
 #if defined(Rel10) || defined(Rel14)
-
   // can clear it at runtime
   RC.rrc[ctxt.module_id]->carrier[0].MBMS_flag = 0;
-
   // This has to come from some top-level configuration
   // only CC_id 0 is logged
 #if defined(Rel10)
@@ -5764,7 +5298,6 @@ openair_rrc_eNB_init(
 #endif
         PROTOCOL_RRC_CTXT_ARGS(&ctxt),
         RC.rrc[ctxt.module_id]->carrier[0].MBMS_flag);
-
 #else
   LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Rel8 RRC\n", PROTOCOL_RRC_CTXT_ARGS(&ctxt));
 #endif
@@ -5788,7 +5321,6 @@ openair_rrc_eNB_init(
           RC.rrc[ctxt.module_id]->carrier[CC_id].cba_rnti[3],
           RC.rrc[ctxt.module_id]->carrier[CC_id].num_active_cba_groups);
   }
-
 #endif
 
   for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
@@ -5798,32 +5330,33 @@ openair_rrc_eNB_init(
             , configuration
 #endif
            );
+
     for (int ue_id = 0; ue_id < NUMBER_OF_UE_MAX; ue_id++) {
-        RC.rrc[ctxt.module_id]->carrier[CC_id].sizeof_paging[ue_id] = 0;
-        RC.rrc[ctxt.module_id]->carrier[CC_id].paging[ue_id] = (uint8_t*) malloc16(256);
+      RC.rrc[ctxt.module_id]->carrier[CC_id].sizeof_paging[ue_id] = 0;
+      RC.rrc[ctxt.module_id]->carrier[CC_id].paging[ue_id] = (uint8_t *) malloc16(256);
     }
   }
-
   rrc_init_global_param();
-  for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
 
+  for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
 #if defined(Rel10) || defined(Rel14)
+
     switch (RC.rrc[ctxt.module_id]->carrier[CC_id].MBMS_flag) {
-    case 1:
-    case 2:
-    case 3:
-      LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Configuring 1 MBSFN sync area\n", PROTOCOL_RRC_CTXT_ARGS(&ctxt));
-      RC.rrc[ctxt.module_id]->carrier[CC_id].num_mbsfn_sync_area = 1;
-      break;
+      case 1:
+      case 2:
+      case 3:
+        LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Configuring 1 MBSFN sync area\n", PROTOCOL_RRC_CTXT_ARGS(&ctxt));
+        RC.rrc[ctxt.module_id]->carrier[CC_id].num_mbsfn_sync_area = 1;
+        break;
 
-    case 4:
-      LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Configuring 2 MBSFN sync area\n", PROTOCOL_RRC_CTXT_ARGS(&ctxt));
-      RC.rrc[ctxt.module_id]->carrier[CC_id].num_mbsfn_sync_area = 2;
-      break;
+      case 4:
+        LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Configuring 2 MBSFN sync area\n", PROTOCOL_RRC_CTXT_ARGS(&ctxt));
+        RC.rrc[ctxt.module_id]->carrier[CC_id].num_mbsfn_sync_area = 2;
+        break;
 
-    default:
-      RC.rrc[ctxt.module_id]->carrier[CC_id].num_mbsfn_sync_area = 0;
-      break;
+      default:
+        RC.rrc[ctxt.module_id]->carrier[CC_id].num_mbsfn_sync_area = 0;
+        break;
     }
 
     // if we are here the RC.rrc[enb_mod_idP]->MBMS_flag > 0,
@@ -5833,21 +5366,19 @@ openair_rrc_eNB_init(
       /// MTCH data bearer init
       init_MBMS(ctxt.module_id, CC_id, 0);
     }
-#endif
 
+#endif
     openair_rrc_top_init_eNB(RC.rrc[ctxt.module_id]->carrier[CC_id].MBMS_flag,0);
   }
   openair_rrc_on(&ctxt);
-
   return 0;
-
 }
 
 /*------------------------------------------------------------------------------*/
 int
 rrc_eNB_decode_ccch(
-  protocol_ctxt_t* const ctxt_pP,
-  const SRB_INFO*        const Srb_info,
+  protocol_ctxt_t *const ctxt_pP,
+  const SRB_INFO        *const Srb_info,
   const int              CC_id
 )
 //-----------------------------------------------------------------------------
@@ -5855,21 +5386,18 @@ rrc_eNB_decode_ccch(
   module_id_t                                   Idx;
   asn_dec_rval_t                      dec_rval;
   UL_CCCH_Message_t                  *ul_ccch_msg = NULL;
-  RRCConnectionRequest_r8_IEs_t*                rrcConnectionRequest = NULL;
-  RRCConnectionReestablishmentRequest_r8_IEs_t* rrcConnectionReestablishmentRequest = NULL;
+  RRCConnectionRequest_r8_IEs_t                *rrcConnectionRequest = NULL;
+  RRCConnectionReestablishmentRequest_r8_IEs_t *rrcConnectionReestablishmentRequest = NULL;
   int                                 i, rval;
-  struct rrc_eNB_ue_context_s*                  ue_context_p = NULL;
+  struct rrc_eNB_ue_context_s                  *ue_context_p = NULL;
   uint64_t                                      random_value = 0;
   int                                           stmsi_received = 0;
-
   T(T_ENB_RRC_UL_CCCH_DATA_IN, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
   //memset(ul_ccch_msg,0,sizeof(UL_CCCH_Message_t));
-
   LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Decoding UL CCCH %x.%x.%x.%x.%x.%x (%p)\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-        ((uint8_t*) Srb_info->Rx_buffer.Payload)[0],
+        ((uint8_t *) Srb_info->Rx_buffer.Payload)[0],
         ((uint8_t *) Srb_info->Rx_buffer.Payload)[1],
         ((uint8_t *) Srb_info->Rx_buffer.Payload)[2],
         ((uint8_t *) Srb_info->Rx_buffer.Payload)[3],
@@ -5878,15 +5406,15 @@ rrc_eNB_decode_ccch(
   dec_rval = uper_decode(
                NULL,
                &asn_DEF_UL_CCCH_Message,
-               (void**)&ul_ccch_msg,
-               (uint8_t*) Srb_info->Rx_buffer.Payload,
+               (void **)&ul_ccch_msg,
+               (uint8_t *) Srb_info->Rx_buffer.Payload,
                100,
                0,
                0);
 
   /*
-#if defined(ENABLE_ITTI)
-#   if defined(DISABLE_ITTI_XER_PRINT)
+  #if defined(ENABLE_ITTI)
+  #   if defined(DISABLE_ITTI_XER_PRINT)
   {
     MessageDef                         *message_p;
 
@@ -5895,7 +5423,7 @@ rrc_eNB_decode_ccch(
 
     itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, message_p);
   }
-#   else
+  #   else
   {
     char                                message_string[10000];
     size_t                              message_string_size;
@@ -5911,8 +5439,8 @@ rrc_eNB_decode_ccch(
       itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
     }
   }
-#   endif
-#endif
+  #   endif
+  #endif
   */
 
   for (i = 0; i < 8; i++) {
@@ -5927,452 +5455,440 @@ rrc_eNB_decode_ccch(
   }
 
   if (ul_ccch_msg->message.present == UL_CCCH_MessageType_PR_c1) {
-
     switch (ul_ccch_msg->message.choice.c1.present) {
+      case UL_CCCH_MessageType__c1_PR_NOTHING:
+        LOG_I(RRC,
+              PROTOCOL_RRC_CTXT_FMT" Received PR_NOTHING on UL-CCCH-Message\n",
+              PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
+        break;
 
-    case UL_CCCH_MessageType__c1_PR_NOTHING:
-      LOG_I(RRC,
-            PROTOCOL_RRC_CTXT_FMT" Received PR_NOTHING on UL-CCCH-Message\n",
-            PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
-      break;
-
-    case UL_CCCH_MessageType__c1_PR_rrcConnectionReestablishmentRequest:
-      T(T_ENB_RRC_CONNECTION_REESTABLISHMENT_REQUEST, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
+      case UL_CCCH_MessageType__c1_PR_rrcConnectionReestablishmentRequest:
+        T(T_ENB_RRC_CONNECTION_REESTABLISHMENT_REQUEST, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
 #ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Connection Reestablishment Request\n");
+        LOG_F(RRC,"[MSG] RRC Connection Reestablishment Request\n");
 
-      for (i = 0; i < Srb_info->Rx_buffer.payload_size; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Srb_info->Rx_buffer.Payload)[i]);
-      }
+        for (i = 0; i < Srb_info->Rx_buffer.payload_size; i++) {
+          LOG_F(RRC,"%02x ", ((uint8_t *)Srb_info->Rx_buffer.Payload)[i]);
+        }
 
-      LOG_F(RRC,"\n");
+        LOG_F(RRC,"\n");
 #endif
-      LOG_D(RRC,
-            PROTOCOL_RRC_CTXT_UE_FMT"MAC_eNB--- MAC_DATA_IND (rrcConnectionReestablishmentRequest on SRB0) --> RRC_eNB\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-      rrcConnectionReestablishmentRequest =
-        &ul_ccch_msg->message.choice.c1.choice.rrcConnectionReestablishmentRequest.criticalExtensions.choice.rrcConnectionReestablishmentRequest_r8;
-      LOG_I(RRC,
-            PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReestablishmentRequest cause %s\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            ((rrcConnectionReestablishmentRequest->reestablishmentCause == ReestablishmentCause_otherFailure) ?    "Other Failure" :
-             (rrcConnectionReestablishmentRequest->reestablishmentCause == ReestablishmentCause_handoverFailure) ? "Handover Failure" :
-             "reconfigurationFailure"));
-      /*{
-      uint64_t                            c_rnti = 0;
-
-      memcpy(((uint8_t *) & c_rnti) + 3, rrcConnectionReestablishmentRequest.UE_identity.c_RNTI.buf,
-      rrcConnectionReestablishmentRequest.UE_identity.c_RNTI.size);
-      ue_mod_id = rrc_eNB_get_UE_index(enb_mod_idP, c_rnti);
-      }
+        LOG_D(RRC,
+              PROTOCOL_RRC_CTXT_UE_FMT"MAC_eNB--- MAC_DATA_IND (rrcConnectionReestablishmentRequest on SRB0) --> RRC_eNB\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
+        rrcConnectionReestablishmentRequest =
+          &ul_ccch_msg->message.choice.c1.choice.rrcConnectionReestablishmentRequest.criticalExtensions.choice.rrcConnectionReestablishmentRequest_r8;
+        LOG_I(RRC,
+              PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReestablishmentRequest cause %s\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+              ((rrcConnectionReestablishmentRequest->reestablishmentCause == ReestablishmentCause_otherFailure) ?    "Other Failure" :
+               (rrcConnectionReestablishmentRequest->reestablishmentCause == ReestablishmentCause_handoverFailure) ? "Handover Failure" :
+               "reconfigurationFailure"));
+        /*{
+        uint64_t                            c_rnti = 0;
+
+        memcpy(((uint8_t *) & c_rnti) + 3, rrcConnectionReestablishmentRequest.UE_identity.c_RNTI.buf,
+        rrcConnectionReestablishmentRequest.UE_identity.c_RNTI.size);
+        ue_mod_id = rrc_eNB_get_UE_index(enb_mod_idP, c_rnti);
+        }
 
-      if ((RC.rrc[enb_mod_idP]->phyCellId == rrcConnectionReestablishmentRequest.UE_identity.physCellId) &&
-      (ue_mod_id != UE_INDEX_INVALID)){
-      rrc_eNB_generate_RRCConnectionReestablishment(enb_mod_idP, frameP, ue_mod_id);
-      }else {
-      rrc_eNB_generate_RRCConnectionReestablishmentReject(enb_mod_idP, frameP, ue_mod_id);
-      }
-      */
-      /* reject all reestablishment attempts for the moment */
-//      rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP,
-//                       rrc_eNB_get_ue_context(RC.rrc[ctxt_pP->module_id], ctxt_pP->rnti),
-//                       CC_id);
-{
-      uint16_t                          c_rnti = 0;
+        if ((RC.rrc[enb_mod_idP]->phyCellId == rrcConnectionReestablishmentRequest.UE_identity.physCellId) &&
+        (ue_mod_id != UE_INDEX_INVALID)){
+        rrc_eNB_generate_RRCConnectionReestablishment(enb_mod_idP, frameP, ue_mod_id);
+        }else {
+        rrc_eNB_generate_RRCConnectionReestablishmentReject(enb_mod_idP, frameP, ue_mod_id);
+        }
+        */
+        /* reject all reestablishment attempts for the moment */
+        //      rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP,
+        //                       rrc_eNB_get_ue_context(RC.rrc[ctxt_pP->module_id], ctxt_pP->rnti),
+        //                       CC_id);
+        {
+          uint16_t                          c_rnti = 0;
 
-      if (rrcConnectionReestablishmentRequest->ue_Identity.physCellId != RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId) {
-        LOG_E(RRC,
-              PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReestablishmentRequest ue_Identity.physCellId(%ld) is not equal to current physCellId(%d), let's reject the UE\n",
-              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-              rrcConnectionReestablishmentRequest->ue_Identity.physCellId,
-              RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId);
-        rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP, ue_context_p, CC_id);
-        break;
-      }
-      LOG_D(RRC, "physCellId is %ld\n", rrcConnectionReestablishmentRequest->ue_Identity.physCellId);
+          if (rrcConnectionReestablishmentRequest->ue_Identity.physCellId != RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId) {
+            LOG_E(RRC,
+                  PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReestablishmentRequest ue_Identity.physCellId(%ld) is not equal to current physCellId(%d), let's reject the UE\n",
+                  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+                  rrcConnectionReestablishmentRequest->ue_Identity.physCellId,
+                  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId);
+            rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP, ue_context_p, CC_id);
+            break;
+          }
 
-      for (i = 0; i < rrcConnectionReestablishmentRequest->ue_Identity.shortMAC_I.size; i++) {
-        LOG_D(RRC, "rrcConnectionReestablishmentRequest->ue_Identity.shortMAC_I.buf[%d] = %x\n",
-            i, rrcConnectionReestablishmentRequest->ue_Identity.shortMAC_I.buf[i]);
-      }
+          LOG_D(RRC, "physCellId is %ld\n", rrcConnectionReestablishmentRequest->ue_Identity.physCellId);
 
-      if (rrcConnectionReestablishmentRequest->ue_Identity.c_RNTI.size == 0 ||
-          rrcConnectionReestablishmentRequest->ue_Identity.c_RNTI.size > 2) {
-        LOG_E(RRC,
-              PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReestablishmentRequest c_RNTI range error, let's reject the UE\n",
-              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-        rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP, ue_context_p, CC_id);
-        break;
+          for (i = 0; i < rrcConnectionReestablishmentRequest->ue_Identity.shortMAC_I.size; i++) {
+            LOG_D(RRC, "rrcConnectionReestablishmentRequest->ue_Identity.shortMAC_I.buf[%d] = %x\n",
+                  i, rrcConnectionReestablishmentRequest->ue_Identity.shortMAC_I.buf[i]);
+          }
 
-      }
+          if (rrcConnectionReestablishmentRequest->ue_Identity.c_RNTI.size == 0 ||
+              rrcConnectionReestablishmentRequest->ue_Identity.c_RNTI.size > 2) {
+            LOG_E(RRC,
+                  PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReestablishmentRequest c_RNTI range error, let's reject the UE\n",
+                  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
+            rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP, ue_context_p, CC_id);
+            break;
+          }
 
-      c_rnti = BIT_STRING_to_uint16(&rrcConnectionReestablishmentRequest->ue_Identity.c_RNTI);
-      LOG_D(RRC, "c_rnti is %x\n", c_rnti);
+          c_rnti = BIT_STRING_to_uint16(&rrcConnectionReestablishmentRequest->ue_Identity.c_RNTI);
+          LOG_D(RRC, "c_rnti is %x\n", c_rnti);
+          ue_context_p = rrc_eNB_get_ue_context(RC.rrc[ctxt_pP->module_id], c_rnti);
 
-      ue_context_p = rrc_eNB_get_ue_context(RC.rrc[ctxt_pP->module_id], c_rnti);
-      if (ue_context_p == NULL) {
-        LOG_E(RRC,
-              PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReestablishmentRequest without UE context, let's reject the UE\n",
-              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-        rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP, ue_context_p, CC_id);
-        break;
-      }
-      int UE_id = find_UE_id(ctxt_pP->module_id, c_rnti);
-      if(ue_context_p->ue_context.ue_reestablishment_timer > 0 || RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer > 0){
-          LOG_I(RRC,
-                PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReestablishment(Previous) don't complete, let's reject the UE\n",
-                PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-          rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP, ue_context_p, CC_id);
-          break;
-      }
-      LOG_D(RRC,
-            PROTOCOL_RRC_CTXT_UE_FMT" UE context: %p\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            ue_context_p);
-      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;
-
-      /* reset timers */
-      ue_context_p->ue_context.ul_failure_timer = 0;
-      ue_context_p->ue_context.ue_release_timer = 0;
-
-      // insert C-RNTI to map
-      for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
-        if (reestablish_rnti_map[i][0] == 0) {
-          reestablish_rnti_map[i][0] = ctxt_pP->rnti;
-          reestablish_rnti_map[i][1] = c_rnti;
-          break;
-        }
-      }
-      LOG_D(RRC, "reestablish_rnti_map[%d] [0] %x, [1] %x\n",
-            i, reestablish_rnti_map[i][0], reestablish_rnti_map[i][1]);
+          if (ue_context_p == NULL) {
+            LOG_E(RRC,
+                  PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReestablishmentRequest without UE context, let's reject the UE\n",
+                  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
+            rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP, ue_context_p, CC_id);
+            break;
+          }
+
+          int UE_id = find_UE_id(ctxt_pP->module_id, c_rnti);
+
+          if(ue_context_p->ue_context.ue_reestablishment_timer > 0 || RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer > 0) {
+            LOG_I(RRC,
+                  PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReestablishment(Previous) don't complete, let's reject the UE\n",
+                  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
+            rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP, ue_context_p, CC_id);
+            break;
+          }
+
+          LOG_D(RRC,
+                PROTOCOL_RRC_CTXT_UE_FMT" UE context: %p\n",
+                PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+                ue_context_p);
+          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;
+          /* reset timers */
+          ue_context_p->ue_context.ul_failure_timer = 0;
+          ue_context_p->ue_context.ue_release_timer = 0;
+
+          // insert C-RNTI to map
+          for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
+            if (reestablish_rnti_map[i][0] == 0) {
+              reestablish_rnti_map[i][0] = ctxt_pP->rnti;
+              reestablish_rnti_map[i][1] = c_rnti;
+              break;
+            }
+          }
 
+          LOG_D(RRC, "reestablish_rnti_map[%d] [0] %x, [1] %x\n",
+                i, reestablish_rnti_map[i][0], reestablish_rnti_map[i][1]);
 #if defined(ENABLE_ITTI)
-      ue_context_p->ue_context.reestablishment_cause = rrcConnectionReestablishmentRequest->reestablishmentCause;
-      LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Accept connection reestablishment request from UE physCellId %ld cause %ld\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            rrcConnectionReestablishmentRequest->ue_Identity.physCellId,
-            ue_context_p->ue_context.reestablishment_cause);
+          ue_context_p->ue_context.reestablishment_cause = rrcConnectionReestablishmentRequest->reestablishmentCause;
+          LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Accept connection reestablishment request from UE physCellId %ld cause %ld\n",
+                PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+                rrcConnectionReestablishmentRequest->ue_Identity.physCellId,
+                ue_context_p->ue_context.reestablishment_cause);
 #else
-        LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Accept connection restablishment request for UE\n",
-              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
+          LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Accept connection restablishment request for UE\n",
+                PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
 #endif
-
 #ifndef NO_RRM
-      send_msg(&S_rrc, msg_rrc_MR_attach_ind(ctxt_pP->module_id, Mac_id));
+          send_msg(&S_rrc, msg_rrc_MR_attach_ind(ctxt_pP->module_id, Mac_id));
 #else
-
-      ue_context_p->ue_context.primaryCC_id = CC_id;
-
-      //LG COMMENT Idx = (ue_mod_idP * NB_RB_MAX) + DCCH;
-      Idx = DCCH;
-      // SRB1
-      ue_context_p->ue_context.Srb1.Active = 1;
-      ue_context_p->ue_context.Srb1.Srb_info.Srb_id = Idx;
-      memcpy(&ue_context_p->ue_context.Srb1.Srb_info.Lchan_desc[0],
-             &DCCH_LCHAN_DESC,
-             LCHAN_DESC_SIZE);
-      memcpy(&ue_context_p->ue_context.Srb1.Srb_info.Lchan_desc[1],
-             &DCCH_LCHAN_DESC,
-             LCHAN_DESC_SIZE);
-
-      // SRB2: set  it to go through SRB1 with id 1 (DCCH)
-      ue_context_p->ue_context.Srb2.Active = 1;
-      ue_context_p->ue_context.Srb2.Srb_info.Srb_id = Idx;
-      memcpy(&ue_context_p->ue_context.Srb2.Srb_info.Lchan_desc[0],
-             &DCCH_LCHAN_DESC,
-             LCHAN_DESC_SIZE);
-      memcpy(&ue_context_p->ue_context.Srb2.Srb_info.Lchan_desc[1],
-             &DCCH_LCHAN_DESC,
-             LCHAN_DESC_SIZE);
-
-      rrc_eNB_generate_RRCConnectionReestablishment(ctxt_pP, ue_context_p, CC_id);
-      LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT"CALLING RLC CONFIG SRB1 (rbid %d)\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            Idx);
-
-      MSC_LOG_TX_MESSAGE(MSC_RRC_ENB,
-                         MSC_PDCP_ENB,
-                         NULL,
-                         0,
-                         MSC_AS_TIME_FMT" CONFIG_REQ UE %x SRB",
-                         MSC_AS_TIME_ARGS(ctxt_pP),
-                         ue_context_p->ue_context.rnti);
-
-      rrc_pdcp_config_asn1_req(ctxt_pP,
-                               ue_context_p->ue_context.SRB_configList,
-                               (DRB_ToAddModList_t *) NULL,
-                               (DRB_ToReleaseList_t*) NULL,
-                               0xff,
-                               NULL,
-                               NULL,
-                               NULL
+          ue_context_p->ue_context.primaryCC_id = CC_id;
+          //LG COMMENT Idx = (ue_mod_idP * NB_RB_MAX) + DCCH;
+          Idx = DCCH;
+          // SRB1
+          ue_context_p->ue_context.Srb1.Active = 1;
+          ue_context_p->ue_context.Srb1.Srb_info.Srb_id = Idx;
+          memcpy(&ue_context_p->ue_context.Srb1.Srb_info.Lchan_desc[0],
+                 &DCCH_LCHAN_DESC,
+                 LCHAN_DESC_SIZE);
+          memcpy(&ue_context_p->ue_context.Srb1.Srb_info.Lchan_desc[1],
+                 &DCCH_LCHAN_DESC,
+                 LCHAN_DESC_SIZE);
+          // SRB2: set  it to go through SRB1 with id 1 (DCCH)
+          ue_context_p->ue_context.Srb2.Active = 1;
+          ue_context_p->ue_context.Srb2.Srb_info.Srb_id = Idx;
+          memcpy(&ue_context_p->ue_context.Srb2.Srb_info.Lchan_desc[0],
+                 &DCCH_LCHAN_DESC,
+                 LCHAN_DESC_SIZE);
+          memcpy(&ue_context_p->ue_context.Srb2.Srb_info.Lchan_desc[1],
+                 &DCCH_LCHAN_DESC,
+                 LCHAN_DESC_SIZE);
+          rrc_eNB_generate_RRCConnectionReestablishment(ctxt_pP, ue_context_p, CC_id);
+          LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT"CALLING RLC CONFIG SRB1 (rbid %d)\n",
+                PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+                Idx);
+          MSC_LOG_TX_MESSAGE(MSC_RRC_ENB,
+                             MSC_PDCP_ENB,
+                             NULL,
+                             0,
+                             MSC_AS_TIME_FMT" CONFIG_REQ UE %x SRB",
+                             MSC_AS_TIME_ARGS(ctxt_pP),
+                             ue_context_p->ue_context.rnti);
+          rrc_pdcp_config_asn1_req(ctxt_pP,
+                                   ue_context_p->ue_context.SRB_configList,
+                                   (DRB_ToAddModList_t *) NULL,
+                                   (DRB_ToReleaseList_t *) NULL,
+                                   0xff,
+                                   NULL,
+                                   NULL,
+                                   NULL
 #   if defined(Rel10) || defined(Rel14)
-                               , (PMCH_InfoList_r9_t *) NULL
+                                   , (PMCH_InfoList_r9_t *) NULL
 #   endif
-                               ,NULL);
-
-      rrc_rlc_config_asn1_req(ctxt_pP,
-                              ue_context_p->ue_context.SRB_configList,
-                              (DRB_ToAddModList_t*) NULL,
-                              (DRB_ToReleaseList_t*) NULL
+                                   ,NULL);
+          rrc_rlc_config_asn1_req(ctxt_pP,
+                                  ue_context_p->ue_context.SRB_configList,
+                                  (DRB_ToAddModList_t *) NULL,
+                                  (DRB_ToReleaseList_t *) NULL
 #   if defined(Rel10) || defined(Rel14)
-                              , (PMCH_InfoList_r9_t *) NULL
+                                  , (PMCH_InfoList_r9_t *) NULL
 #   endif
-                             );
+                                 );
 #endif //NO_RRM
-      }
-      break;
-
-    case UL_CCCH_MessageType__c1_PR_rrcConnectionRequest:
-      T(T_ENB_RRC_CONNECTION_REQUEST, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        }
+        break;
 
+      case UL_CCCH_MessageType__c1_PR_rrcConnectionRequest:
+        T(T_ENB_RRC_CONNECTION_REQUEST, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
 #ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Connection Request\n");
+        LOG_F(RRC,"[MSG] RRC Connection Request\n");
 
-      for (i = 0; i < Srb_info->Rx_buffer.payload_size; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Srb_info->Rx_buffer.Payload)[i]);
-      }
+        for (i = 0; i < Srb_info->Rx_buffer.payload_size; i++) {
+          LOG_F(RRC,"%02x ", ((uint8_t *)Srb_info->Rx_buffer.Payload)[i]);
+        }
 
-      LOG_F(RRC,"\n");
+        LOG_F(RRC,"\n");
 #endif
-      LOG_D(RRC,
-            PROTOCOL_RRC_CTXT_UE_FMT"MAC_eNB --- MAC_DATA_IND  (rrcConnectionRequest on SRB0) --> RRC_eNB\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-      ue_context_p = rrc_eNB_get_ue_context(
-                       RC.rrc[ctxt_pP->module_id],
-                       ctxt_pP->rnti);
-
-      if (ue_context_p != NULL) {
-        // erase content
-        rrc_eNB_free_mem_UE_context(ctxt_pP, ue_context_p);
+        LOG_D(RRC,
+              PROTOCOL_RRC_CTXT_UE_FMT"MAC_eNB --- MAC_DATA_IND  (rrcConnectionRequest on SRB0) --> RRC_eNB\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
+        ue_context_p = rrc_eNB_get_ue_context(
+                         RC.rrc[ctxt_pP->module_id],
+                         ctxt_pP->rnti);
 
-        MSC_LOG_RX_DISCARDED_MESSAGE(
-          MSC_RRC_ENB,
-          MSC_RRC_UE,
-          Srb_info->Rx_buffer.Payload,
-          dec_rval.consumed,
-          MSC_AS_TIME_FMT" RRCConnectionRequest UE %x size %u (UE already in context)",
-          MSC_AS_TIME_ARGS(ctxt_pP),
-          ue_context_p->ue_context.rnti,
-          dec_rval.consumed);
-      } else {
-        rrcConnectionRequest = &ul_ccch_msg->message.choice.c1.choice.rrcConnectionRequest.criticalExtensions.choice.rrcConnectionRequest_r8;
-        {
-          if (InitialUE_Identity_PR_randomValue == rrcConnectionRequest->ue_Identity.present) {
-            AssertFatal(rrcConnectionRequest->ue_Identity.choice.randomValue.size == 5,
-                        "wrong InitialUE-Identity randomValue size, expected 5, provided %d",
-                        rrcConnectionRequest->ue_Identity.choice.randomValue.size);
-            memcpy(((uint8_t*) & random_value) + 3,
-                   rrcConnectionRequest->ue_Identity.choice.randomValue.buf,
-                   rrcConnectionRequest->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 != NULL) {
+          // erase content
+          rrc_eNB_free_mem_UE_context(ctxt_pP, ue_context_p);
+          MSC_LOG_RX_DISCARDED_MESSAGE(
+            MSC_RRC_ENB,
+            MSC_RRC_UE,
+            Srb_info->Rx_buffer.Payload,
+            dec_rval.consumed,
+            MSC_AS_TIME_FMT" RRCConnectionRequest UE %x size %u (UE already in context)",
+            MSC_AS_TIME_ARGS(ctxt_pP),
+            ue_context_p->ue_context.rnti,
+            dec_rval.consumed);
+        } else {
+          rrcConnectionRequest = &ul_ccch_msg->message.choice.c1.choice.rrcConnectionRequest.criticalExtensions.choice.rrcConnectionRequest_r8;
+          {
+            if (InitialUE_Identity_PR_randomValue == rrcConnectionRequest->ue_Identity.present) {
+              AssertFatal(rrcConnectionRequest->ue_Identity.choice.randomValue.size == 5,
+                          "wrong InitialUE-Identity randomValue size, expected 5, provided %d",
+                          rrcConnectionRequest->ue_Identity.choice.randomValue.size);
+              memcpy(((uint8_t *) & random_value) + 3,
+                     rrcConnectionRequest->ue_Identity.choice.randomValue.buf,
+                     rrcConnectionRequest->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 0
-            if ((ue_context_p = rrc_eNB_ue_context_random_exist(ctxt_pP, random_value))) {
-              LOG_W(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, ctxt_pP->rnti);
-	      rrc_mac_remove_ue(ctxt_pP->module_id, ctxt_pP->rnti);
-              ue_context_p = NULL;
-              return 0;
-            } else {
-              ue_context_p = rrc_eNB_get_next_free_ue_context(ctxt_pP, random_value);
-            }
-#endif
-            if ((ue_context_p = rrc_eNB_ue_context_random_exist(ctxt_pP, random_value))) {
-              LOG_W(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_eNB_get_next_free_ue_context(ctxt_pP, random_value);
-          } else if (InitialUE_Identity_PR_s_TMSI == rrcConnectionRequest->ue_Identity.present) {
-            /* Save s-TMSI */
-            S_TMSI_t   s_TMSI = rrcConnectionRequest->ue_Identity.choice.s_TMSI;
-            mme_code_t mme_code = BIT_STRING_to_uint8(&s_TMSI.mmec);
-            m_tmsi_t   m_tmsi   = BIT_STRING_to_uint32(&s_TMSI.m_TMSI);
-            random_value = (((uint64_t)mme_code) << 32) | m_tmsi;
-            if ((ue_context_p = rrc_eNB_ue_context_stmsi_exist(ctxt_pP, mme_code, m_tmsi))) {
-	      LOG_I(RRC," S-TMSI exists, ue_context_p %p, old rnti %x => %x\n",ue_context_p,ue_context_p->ue_context.rnti,ctxt_pP->rnti);
-	      rrc_mac_remove_ue(ctxt_pP->module_id, ue_context_p->ue_context.rnti);
-	      stmsi_received=1;
-              /* replace rnti in the context */
-              /* for that, remove the context from the RB tree */
-              RB_REMOVE(rrc_ue_tree_s, &RC.rrc[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_ue_tree_s, &RC.rrc[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(RRC," S-TMSI doesn't exist, setting Initialue_identity_s_TMSI.m_tmsi to %p => %x\n",ue_context_p,m_tmsi);
-//              ue_context_p = rrc_eNB_get_next_free_ue_context(ctxt_pP, NOT_A_RANDOM_UE_IDENTITY);
-              ue_context_p = rrc_eNB_get_next_free_ue_context(ctxt_pP,random_value);
-              if (ue_context_p == NULL)
-                LOG_E(RRC, "%s:%d:%s: rrc_eNB_get_next_free_ue_context returned NULL\n", __FILE__, __LINE__, __FUNCTION__);
-              if (ue_context_p != NULL) {
-	        ue_context_p->ue_context.Initialue_identity_s_TMSI.presence = TRUE;
-	        ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code = mme_code;
-	        ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi = m_tmsi;
+
+              if ((ue_context_p = rrc_eNB_ue_context_random_exist(ctxt_pP, random_value))) {
+                LOG_W(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, ctxt_pP->rnti);
+                rrc_mac_remove_ue(ctxt_pP->module_id, ctxt_pP->rnti);
+                ue_context_p = NULL;
+                return 0;
               } else {
-                /* TODO: do we have to break here? */
-                //break;
+                ue_context_p = rrc_eNB_get_next_free_ue_context(ctxt_pP, random_value);
               }
-            }
-
-            MSC_LOG_RX_MESSAGE(
-              MSC_RRC_ENB,
-              MSC_RRC_UE,
-              Srb_info->Rx_buffer.Payload,
-              dec_rval.consumed,
-              MSC_AS_TIME_FMT" RRCConnectionRequest UE %x size %u (s-TMSI mmec %u m_TMSI %u random UE id (0x%" PRIx64 ")",
-              MSC_AS_TIME_ARGS(ctxt_pP),
-              ue_context_p->ue_context.rnti,
-              dec_rval.consumed,
-              ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code,
-              ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi,
-              ue_context_p->ue_context.random_ue_identity);
-          } else {
-            LOG_E(RRC,
-                  PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionRequest without random UE identity or S-TMSI not supported, let's reject the UE\n",
-                  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-            rrc_eNB_generate_RRCConnectionReject(ctxt_pP,
-                             rrc_eNB_get_ue_context(RC.rrc[ctxt_pP->module_id], ctxt_pP->rnti),
-                             CC_id);
-            break;
-          }
 
-        }
-        LOG_D(RRC,
-              PROTOCOL_RRC_CTXT_UE_FMT" UE context: %p\n",
-              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-              ue_context_p);
+#endif
 
-        if (ue_context_p != NULL) {
+              if ((ue_context_p = rrc_eNB_ue_context_random_exist(ctxt_pP, random_value))) {
+                LOG_W(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_eNB_get_next_free_ue_context(ctxt_pP, random_value);
+            } else if (InitialUE_Identity_PR_s_TMSI == rrcConnectionRequest->ue_Identity.present) {
+              /* Save s-TMSI */
+              S_TMSI_t   s_TMSI = rrcConnectionRequest->ue_Identity.choice.s_TMSI;
+              mme_code_t mme_code = BIT_STRING_to_uint8(&s_TMSI.mmec);
+              m_tmsi_t   m_tmsi   = BIT_STRING_to_uint32(&s_TMSI.m_TMSI);
+              random_value = (((uint64_t)mme_code) << 32) | m_tmsi;
+
+              if ((ue_context_p = rrc_eNB_ue_context_stmsi_exist(ctxt_pP, mme_code, m_tmsi))) {
+                LOG_I(RRC," S-TMSI exists, ue_context_p %p, old rnti %x => %x\n",ue_context_p,ue_context_p->ue_context.rnti,ctxt_pP->rnti);
+                rrc_mac_remove_ue(ctxt_pP->module_id, ue_context_p->ue_context.rnti);
+                stmsi_received=1;
+                /* replace rnti in the context */
+                /* for that, remove the context from the RB tree */
+                RB_REMOVE(rrc_ue_tree_s, &RC.rrc[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_ue_tree_s, &RC.rrc[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(RRC," S-TMSI doesn't exist, setting Initialue_identity_s_TMSI.m_tmsi to %p => %x\n",ue_context_p,m_tmsi);
+                //              ue_context_p = rrc_eNB_get_next_free_ue_context(ctxt_pP, NOT_A_RANDOM_UE_IDENTITY);
+                ue_context_p = rrc_eNB_get_next_free_ue_context(ctxt_pP,random_value);
+
+                if (ue_context_p == NULL)
+                  LOG_E(RRC, "%s:%d:%s: rrc_eNB_get_next_free_ue_context returned NULL\n", __FILE__, __LINE__, __FUNCTION__);
+
+                if (ue_context_p != NULL) {
+                  ue_context_p->ue_context.Initialue_identity_s_TMSI.presence = TRUE;
+                  ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code = mme_code;
+                  ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi = m_tmsi;
+                } else {
+                  /* TODO: do we have to break here? */
+                  //break;
+                }
+              }
 
+              MSC_LOG_RX_MESSAGE(
+                MSC_RRC_ENB,
+                MSC_RRC_UE,
+                Srb_info->Rx_buffer.Payload,
+                dec_rval.consumed,
+                MSC_AS_TIME_FMT" RRCConnectionRequest UE %x size %u (s-TMSI mmec %u m_TMSI %u random UE id (0x%" PRIx64 ")",
+                MSC_AS_TIME_ARGS(ctxt_pP),
+                ue_context_p->ue_context.rnti,
+                dec_rval.consumed,
+                ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code,
+                ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi,
+                ue_context_p->ue_context.random_ue_identity);
+            } else {
+              LOG_E(RRC,
+                    PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionRequest without random UE identity or S-TMSI not supported, let's reject the UE\n",
+                    PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
+              rrc_eNB_generate_RRCConnectionReject(ctxt_pP,
+                                                   rrc_eNB_get_ue_context(RC.rrc[ctxt_pP->module_id], ctxt_pP->rnti),
+                                                   CC_id);
+              break;
+            }
+          }
+          LOG_D(RRC,
+                PROTOCOL_RRC_CTXT_UE_FMT" UE context: %p\n",
+                PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+                ue_context_p);
+
+          if (ue_context_p != NULL) {
 #if defined(ENABLE_ITTI)
-          ue_context_p->ue_context.establishment_cause = rrcConnectionRequest->establishmentCause;
-          ue_context_p->ue_context.reestablishment_cause = ReestablishmentCause_spare1;
-	  if (stmsi_received==0)
-	    LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Accept new connection from UE random UE identity (0x%" PRIx64 ") MME code %u TMSI %u cause %ld\n",
-		  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-		  ue_context_p->ue_context.random_ue_identity,
-		  ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code,
-		  ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi,
-		  ue_context_p->ue_context.establishment_cause);
-	  else
-	    LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Accept new connection from UE  MME code %u TMSI %u cause %ld\n",
-		  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-		  ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code,
-		  ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi,
-		  ue_context_p->ue_context.establishment_cause);
+            ue_context_p->ue_context.establishment_cause = rrcConnectionRequest->establishmentCause;
+            ue_context_p->ue_context.reestablishment_cause = ReestablishmentCause_spare1;
+
+            if (stmsi_received==0)
+              LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Accept new connection from UE random UE identity (0x%" PRIx64 ") MME code %u TMSI %u cause %ld\n",
+                    PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+                    ue_context_p->ue_context.random_ue_identity,
+                    ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code,
+                    ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi,
+                    ue_context_p->ue_context.establishment_cause);
+            else
+              LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Accept new connection from UE  MME code %u TMSI %u cause %ld\n",
+                    PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+                    ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code,
+                    ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi,
+                    ue_context_p->ue_context.establishment_cause);
+
 #else
-          LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Accept new connection for UE random UE identity (0x%" PRIx64 ")\n",
-                PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-                ue_context_p->ue_context.random_ue_identity);
+            LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Accept new connection for UE random UE identity (0x%" PRIx64 ")\n",
+                  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+                  ue_context_p->ue_context.random_ue_identity);
 #endif
-          if (stmsi_received == 0)
-	    RC.rrc[ctxt_pP->module_id]->Nb_ue++;
 
-        } else {
-          // no context available
-	  if (rrc_agent_registered[ctxt_pP->module_id]) {
-	    agent_rrc_xface[ctxt_pP->module_id]->flexran_agent_notify_ue_state_change(ctxt_pP->module_id,
-										      ctxt_pP->rnti,
-										      PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_DEACTIVATED);
-	  }
-          LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Can't create new context for UE random UE identity (0x%" PRIx64 ")\n",
-                PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-                random_value);
-	  rrc_mac_remove_ue(ctxt_pP->module_id,ctxt_pP->rnti);
-          return -1;
+            if (stmsi_received == 0)
+              RC.rrc[ctxt_pP->module_id]->Nb_ue++;
+          } else {
+            // no context available
+            if (rrc_agent_registered[ctxt_pP->module_id]) {
+              agent_rrc_xface[ctxt_pP->module_id]->flexran_agent_notify_ue_state_change(ctxt_pP->module_id,
+                  ctxt_pP->rnti,
+                  PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_DEACTIVATED);
+            }
+
+            LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Can't create new context for UE random UE identity (0x%" PRIx64 ")\n",
+                  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+                  random_value);
+            rrc_mac_remove_ue(ctxt_pP->module_id,ctxt_pP->rnti);
+            return -1;
+          }
         }
-      }
 
 #ifndef NO_RRM
-      send_msg(&S_rrc, msg_rrc_MR_attach_ind(ctxt_pP->module_id, Mac_id));
+        send_msg(&S_rrc, msg_rrc_MR_attach_ind(ctxt_pP->module_id, Mac_id));
 #else
-
-      ue_context_p->ue_context.primaryCC_id = CC_id;
-
-      //LG COMMENT Idx = (ue_mod_idP * NB_RB_MAX) + DCCH;
-      Idx = DCCH;
-      // SRB1
-      ue_context_p->ue_context.Srb1.Active = 1;
-      ue_context_p->ue_context.Srb1.Srb_info.Srb_id = Idx;
-      memcpy(&ue_context_p->ue_context.Srb1.Srb_info.Lchan_desc[0],
-             &DCCH_LCHAN_DESC,
-             LCHAN_DESC_SIZE);
-      memcpy(&ue_context_p->ue_context.Srb1.Srb_info.Lchan_desc[1],
-             &DCCH_LCHAN_DESC,
-             LCHAN_DESC_SIZE);
-
-      // SRB2: set  it to go through SRB1 with id 1 (DCCH)
-      ue_context_p->ue_context.Srb2.Active = 1;
-      ue_context_p->ue_context.Srb2.Srb_info.Srb_id = Idx;
-      memcpy(&ue_context_p->ue_context.Srb2.Srb_info.Lchan_desc[0],
-             &DCCH_LCHAN_DESC,
-             LCHAN_DESC_SIZE);
-      memcpy(&ue_context_p->ue_context.Srb2.Srb_info.Lchan_desc[1],
-             &DCCH_LCHAN_DESC,
-             LCHAN_DESC_SIZE);
-      
-      rrc_eNB_generate_RRCConnectionSetup(ctxt_pP, ue_context_p, CC_id);
-      LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT"CALLING RLC CONFIG SRB1 (rbid %d)\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            Idx);
-
-      MSC_LOG_TX_MESSAGE(
-        MSC_RRC_ENB,
-        MSC_PDCP_ENB,
-        NULL,
-        0,
-        MSC_AS_TIME_FMT" CONFIG_REQ UE %x SRB",
-        MSC_AS_TIME_ARGS(ctxt_pP),
-        ue_context_p->ue_context.rnti);
-
-      rrc_pdcp_config_asn1_req(ctxt_pP,
-                               ue_context_p->ue_context.SRB_configList,
-                               (DRB_ToAddModList_t *) NULL,
-                               (DRB_ToReleaseList_t*) NULL,
-                               0xff,
-                               NULL,
-                               NULL,
-                               NULL
+        ue_context_p->ue_context.primaryCC_id = CC_id;
+        //LG COMMENT Idx = (ue_mod_idP * NB_RB_MAX) + DCCH;
+        Idx = DCCH;
+        // SRB1
+        ue_context_p->ue_context.Srb1.Active = 1;
+        ue_context_p->ue_context.Srb1.Srb_info.Srb_id = Idx;
+        memcpy(&ue_context_p->ue_context.Srb1.Srb_info.Lchan_desc[0],
+               &DCCH_LCHAN_DESC,
+               LCHAN_DESC_SIZE);
+        memcpy(&ue_context_p->ue_context.Srb1.Srb_info.Lchan_desc[1],
+               &DCCH_LCHAN_DESC,
+               LCHAN_DESC_SIZE);
+        // SRB2: set  it to go through SRB1 with id 1 (DCCH)
+        ue_context_p->ue_context.Srb2.Active = 1;
+        ue_context_p->ue_context.Srb2.Srb_info.Srb_id = Idx;
+        memcpy(&ue_context_p->ue_context.Srb2.Srb_info.Lchan_desc[0],
+               &DCCH_LCHAN_DESC,
+               LCHAN_DESC_SIZE);
+        memcpy(&ue_context_p->ue_context.Srb2.Srb_info.Lchan_desc[1],
+               &DCCH_LCHAN_DESC,
+               LCHAN_DESC_SIZE);
+        rrc_eNB_generate_RRCConnectionSetup(ctxt_pP, ue_context_p, CC_id);
+        LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT"CALLING RLC CONFIG SRB1 (rbid %d)\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+              Idx);
+        MSC_LOG_TX_MESSAGE(
+          MSC_RRC_ENB,
+          MSC_PDCP_ENB,
+          NULL,
+          0,
+          MSC_AS_TIME_FMT" CONFIG_REQ UE %x SRB",
+          MSC_AS_TIME_ARGS(ctxt_pP),
+          ue_context_p->ue_context.rnti);
+        rrc_pdcp_config_asn1_req(ctxt_pP,
+                                 ue_context_p->ue_context.SRB_configList,
+                                 (DRB_ToAddModList_t *) NULL,
+                                 (DRB_ToReleaseList_t *) NULL,
+                                 0xff,
+                                 NULL,
+                                 NULL,
+                                 NULL
 #   if defined(Rel10) || defined(Rel14)
-                               , (PMCH_InfoList_r9_t *) NULL
+                                 , (PMCH_InfoList_r9_t *) NULL
 #   endif
-                               ,NULL);
-
-      rrc_rlc_config_asn1_req(ctxt_pP,
-                              ue_context_p->ue_context.SRB_configList,
-                              (DRB_ToAddModList_t*) NULL,
-                              (DRB_ToReleaseList_t*) NULL
+                                 ,NULL);
+        rrc_rlc_config_asn1_req(ctxt_pP,
+                                ue_context_p->ue_context.SRB_configList,
+                                (DRB_ToAddModList_t *) NULL,
+                                (DRB_ToReleaseList_t *) NULL
 #   if defined(Rel10) || defined(Rel14)
-                              , (PMCH_InfoList_r9_t *) NULL
+                                , (PMCH_InfoList_r9_t *) NULL
 #   endif
-                             );
+                               );
 #endif //NO_RRM
+        break;
 
-      break;
-
-    default:
-      LOG_E(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Unknown message\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-      rval = -1;
-      break;
+      default:
+        LOG_E(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Unknown message\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
+        rval = -1;
+        break;
     }
 
     rval = 0;
@@ -6388,28 +5904,25 @@ rrc_eNB_decode_ccch(
 //-----------------------------------------------------------------------------
 int
 rrc_eNB_decode_dcch(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const rb_id_t                Srb_id,
-  const uint8_t*    const      Rx_sdu,
+  const uint8_t    *const      Rx_sdu,
   const sdu_size_t             sdu_sizeP
 )
 //-----------------------------------------------------------------------------
 {
-
   asn_dec_rval_t                      dec_rval;
   //UL_DCCH_Message_t uldcchmsg;
   UL_DCCH_Message_t                  *ul_dcch_msg = NULL; //&uldcchmsg;
   int i;
-  struct rrc_eNB_ue_context_s*        ue_context_p = NULL;
+  struct rrc_eNB_ue_context_s        *ue_context_p = NULL;
 #if defined(ENABLE_ITTI)
 #   if defined(ENABLE_USE_MME)
-  MessageDef *                        msg_delete_tunnels_p = NULL;
+  MessageDef                         *msg_delete_tunnels_p = NULL;
   uint8_t                             xid;
 #endif
 #endif
-
-  int dedicated_DRB=0; 
-
+  int dedicated_DRB=0;
   T(T_ENB_RRC_UL_DCCH_DATA_IN, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
 
@@ -6422,21 +5935,21 @@ rrc_eNB_decode_dcch(
           PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
           Srb_id);
   }
-  //memset(ul_dcch_msg,0,sizeof(UL_DCCH_Message_t));
 
+  //memset(ul_dcch_msg,0,sizeof(UL_DCCH_Message_t));
   LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Decoding UL-DCCH Message\n",
         PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
   dec_rval = uper_decode(
                NULL,
                &asn_DEF_UL_DCCH_Message,
-               (void**)&ul_dcch_msg,
+               (void **)&ul_dcch_msg,
                Rx_sdu,
                sdu_sizeP,
                0,
                0);
   /*
-#if defined(ENABLE_ITTI)
-#   if defined(DISABLE_ITTI_XER_PRINT)
+  #if defined(ENABLE_ITTI)
+  #   if defined(DISABLE_ITTI_XER_PRINT)
   {
     MessageDef                         *message_p;
 
@@ -6445,7 +5958,7 @@ rrc_eNB_decode_dcch(
 
     itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, message_p);
   }
-#   else
+  #   else
   {
     char                                message_string[10000];
     size_t                              message_string_size;
@@ -6461,8 +5974,8 @@ rrc_eNB_decode_dcch(
       itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
     }
   }
-#   endif
-#endif
+  #   endif
+  #endif
   */
   {
     for (i = 0; i < sdu_sizeP; i++) {
@@ -6484,546 +5997,529 @@ rrc_eNB_decode_dcch(
                    ctxt_pP->rnti);
 
   if (ul_dcch_msg->message.present == UL_DCCH_MessageType_PR_c1) {
-
     switch (ul_dcch_msg->message.choice.c1.present) {
-    case UL_DCCH_MessageType__c1_PR_NOTHING:   /* No components present */
-      break;
+      case UL_DCCH_MessageType__c1_PR_NOTHING:   /* No components present */
+        break;
 
-    case UL_DCCH_MessageType__c1_PR_csfbParametersRequestCDMA2000:
-      break;
+      case UL_DCCH_MessageType__c1_PR_csfbParametersRequestCDMA2000:
+        break;
 
-    case UL_DCCH_MessageType__c1_PR_measurementReport:
-      LOG_D(RRC,
-            PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND "
-            "%d bytes (measurementReport) ---> RRC_eNB\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            DCCH,
-            sdu_sizeP);
-      rrc_eNB_process_MeasurementReport(
-        ctxt_pP,
-        ue_context_p,
-        &ul_dcch_msg->message.choice.c1.choice.measurementReport.
-        criticalExtensions.choice.c1.choice.measurementReport_r8.measResults);
-      break;
+      case UL_DCCH_MessageType__c1_PR_measurementReport:
+        LOG_D(RRC,
+              PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND "
+              "%d bytes (measurementReport) ---> RRC_eNB\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+              DCCH,
+              sdu_sizeP);
+        rrc_eNB_process_MeasurementReport(
+          ctxt_pP,
+          ue_context_p,
+          &ul_dcch_msg->message.choice.c1.choice.measurementReport.
+          criticalExtensions.choice.c1.choice.measurementReport_r8.measResults);
+        break;
 
-    case UL_DCCH_MessageType__c1_PR_rrcConnectionReconfigurationComplete:
+      case UL_DCCH_MessageType__c1_PR_rrcConnectionReconfigurationComplete:
 #ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Connection Reconfiguration Complete\n");
+        LOG_F(RRC,"[MSG] RRC Connection Reconfiguration Complete\n");
 
-      for (i = 0; i < sdu_sizeP; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
+        for (i = 0; i < sdu_sizeP; i++) {
+          LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]);
+        }
+
+        LOG_F(RRC,"\n");
+#endif
+        MSC_LOG_RX_MESSAGE(
+          MSC_RRC_ENB,
+          MSC_RRC_UE,
+          Rx_sdu,
+          sdu_sizeP,
+          MSC_AS_TIME_FMT" RRCConnectionReconfigurationComplete UE %x size %u",
+          MSC_AS_TIME_ARGS(ctxt_pP),
+          ue_context_p->ue_context.rnti,
+          sdu_sizeP);
+        LOG_D(RRC,
+              PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
+              "(RRCConnectionReconfigurationComplete) ---> RRC_eNB]\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+              DCCH,
+              sdu_sizeP);
+
+        if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.
+            present ==
+            RRCConnectionReconfigurationComplete__criticalExtensions_PR_rrcConnectionReconfigurationComplete_r8) {
+          /*NN: revise the condition */
+          if (ue_context_p->ue_context.Status == RRC_RECONFIGURED) {
+            dedicated_DRB = 1;
+            LOG_I(RRC,
+                  PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld)\n",
+                  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
+          } else {
+            dedicated_DRB = 0;
+            ue_context_p->ue_context.Status = RRC_RECONFIGURED;
+            LOG_I(RRC,
+                  PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (default DRB, xid %ld)\n",
+                  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
+          }
+
+          rrc_eNB_process_RRCConnectionReconfigurationComplete(
+            ctxt_pP,
+            ue_context_p,
+            ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
+
+          //WARNING:Inform the controller about the UE activation. Should be moved to RRC agent in the future
+          if (rrc_agent_registered[ctxt_pP->module_id]) {
+            agent_rrc_xface[ctxt_pP->eNB_index]->flexran_agent_notify_ue_state_change(ctxt_pP->module_id,
+                ue_context_p->ue_id_rnti,
+                PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_UPDATED);
+          }
+        }
 
-      LOG_F(RRC,"\n");
-#endif
-      MSC_LOG_RX_MESSAGE(
-        MSC_RRC_ENB,
-        MSC_RRC_UE,
-        Rx_sdu,
-        sdu_sizeP,
-        MSC_AS_TIME_FMT" RRCConnectionReconfigurationComplete UE %x size %u",
-        MSC_AS_TIME_ARGS(ctxt_pP),
-        ue_context_p->ue_context.rnti,
-        sdu_sizeP);
-
-      LOG_D(RRC,
-            PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
-            "(RRCConnectionReconfigurationComplete) ---> RRC_eNB]\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            DCCH,
-            sdu_sizeP);
-
-      if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.
-          present ==
-          RRCConnectionReconfigurationComplete__criticalExtensions_PR_rrcConnectionReconfigurationComplete_r8) {
-	/*NN: revise the condition */
-        if (ue_context_p->ue_context.Status == RRC_RECONFIGURED){
-	  dedicated_DRB = 1;
-	  LOG_I(RRC,
-		PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld)\n",
-		PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
-	}else {
-	  dedicated_DRB = 0;
-	  ue_context_p->ue_context.Status = RRC_RECONFIGURED;
-	  LOG_I(RRC,
-		PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (default DRB, xid %ld)\n",
-		PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
-	}
-	rrc_eNB_process_RRCConnectionReconfigurationComplete(
-          ctxt_pP,
-          ue_context_p,
-	  ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
-
-	//WARNING:Inform the controller about the UE activation. Should be moved to RRC agent in the future
-	if (rrc_agent_registered[ctxt_pP->module_id]) {
-	  agent_rrc_xface[ctxt_pP->eNB_index]->flexran_agent_notify_ue_state_change(ctxt_pP->module_id,
-										ue_context_p->ue_id_rnti,
-										PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_UPDATED);
-	}
-      }
 #if defined(ENABLE_ITTI)
 #   if defined(ENABLE_USE_MME)
-      if (EPC_MODE_ENABLED == 1) {
-	if (dedicated_DRB == 1){
-//	  rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(ctxt_pP,
-//					     ue_context_p,
-//					     ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
-if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
-            rrc_eNB_send_S1AP_E_RAB_MODIFY_RESP(ctxt_pP,
-                             ue_context_p,
-                             ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
-
-            ue_context_p->ue_context.nb_of_modify_e_rabs = 0;
-            ue_context_p->ue_context.nb_of_failed_e_rabs = 0;
-            memset(ue_context_p->ue_context.modify_e_rab, 0, sizeof(ue_context_p->ue_context.modify_e_rab));
-            for(int i = 0; i < NB_RB_MAX; i++) {
-              ue_context_p->ue_context.modify_e_rab[i].xid = -1;
-            }
 
-          } else if(ue_context_p->ue_context.e_rab_release_command_flag == 1){
-            xid = ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier;
-            ue_context_p->ue_context.e_rab_release_command_flag = 0;
-            //gtp tunnel delete
-            msg_delete_tunnels_p = itti_alloc_new_message(TASK_RRC_ENB, GTPV1U_ENB_DELETE_TUNNEL_REQ);
-            memset(&GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p), 0, sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p)));
-            GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).rnti = ue_context_p->ue_context.rnti;
-            for(i = 0; i < NB_RB_MAX; i++){
-               if(xid == ue_context_p->ue_context.e_rab[i].xid){
-                 GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).eps_bearer_id[GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).num_erab++] = ue_context_p->ue_context.enb_gtp_ebi[i];
-                 ue_context_p->ue_context.enb_gtp_teid[i] = 0;
-                 memset(&ue_context_p->ue_context.enb_gtp_addrs[i], 0, sizeof(ue_context_p->ue_context.enb_gtp_addrs[i]));
-                 ue_context_p->ue_context.enb_gtp_ebi[i]  = 0;
-               }
-            }
-            itti_send_msg_to_task(TASK_GTPV1_U, ctxt_pP->instance, msg_delete_tunnels_p);
-            //S1AP_E_RAB_RELEASE_RESPONSE
-            rrc_eNB_send_S1AP_E_RAB_RELEASE_RESPONSE(ctxt_pP,
-                    ue_context_p,
-                    xid);
-          } else {
+        if (EPC_MODE_ENABLED == 1) {
+          if (dedicated_DRB == 1) {
+            //    rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(ctxt_pP,
+            //               ue_context_p,
+            //               ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
+            if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
+              rrc_eNB_send_S1AP_E_RAB_MODIFY_RESP(ctxt_pP,
+                                                  ue_context_p,
+                                                  ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
+              ue_context_p->ue_context.nb_of_modify_e_rabs = 0;
+              ue_context_p->ue_context.nb_of_failed_e_rabs = 0;
+              memset(ue_context_p->ue_context.modify_e_rab, 0, sizeof(ue_context_p->ue_context.modify_e_rab));
+
+              for(int i = 0; i < NB_RB_MAX; i++) {
+                ue_context_p->ue_context.modify_e_rab[i].xid = -1;
+              }
+            } else if(ue_context_p->ue_context.e_rab_release_command_flag == 1) {
+              xid = ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier;
+              ue_context_p->ue_context.e_rab_release_command_flag = 0;
+              //gtp tunnel delete
+              msg_delete_tunnels_p = itti_alloc_new_message(TASK_RRC_ENB, GTPV1U_ENB_DELETE_TUNNEL_REQ);
+              memset(&GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p), 0, sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p)));
+              GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).rnti = ue_context_p->ue_context.rnti;
+
+              for(i = 0; i < NB_RB_MAX; i++) {
+                if(xid == ue_context_p->ue_context.e_rab[i].xid) {
+                  GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).eps_bearer_id[GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).num_erab++] = ue_context_p->ue_context.enb_gtp_ebi[i];
+                  ue_context_p->ue_context.enb_gtp_teid[i] = 0;
+                  memset(&ue_context_p->ue_context.enb_gtp_addrs[i], 0, sizeof(ue_context_p->ue_context.enb_gtp_addrs[i]));
+                  ue_context_p->ue_context.enb_gtp_ebi[i]  = 0;
+                }
+              }
+
+              itti_send_msg_to_task(TASK_GTPV1_U, ctxt_pP->instance, msg_delete_tunnels_p);
+              //S1AP_E_RAB_RELEASE_RESPONSE
+              rrc_eNB_send_S1AP_E_RAB_RELEASE_RESPONSE(ctxt_pP,
+                  ue_context_p,
+                  xid);
+            } else {
               rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(ctxt_pP,
-                             ue_context_p,
-                             ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
-          }
-	}else {
-          if(ue_context_p->ue_context.reestablishment_cause == ReestablishmentCause_spare1){
-	    rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP(ctxt_pP,
-						       ue_context_p);
+                                                 ue_context_p,
+                                                 ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
+            }
           } else {
-            ue_context_p->ue_context.reestablishment_cause = ReestablishmentCause_spare1;
-            for (uint8_t e_rab = 0; e_rab < ue_context_p->ue_context.nb_of_e_rabs; e_rab++) {
-              if (ue_context_p->ue_context.e_rab[e_rab].status == E_RAB_STATUS_DONE) {
-                ue_context_p->ue_context.e_rab[e_rab].status = E_RAB_STATUS_ESTABLISHED;
-              } else {
-                ue_context_p->ue_context.e_rab[e_rab].status = E_RAB_STATUS_FAILED;
+            if(ue_context_p->ue_context.reestablishment_cause == ReestablishmentCause_spare1) {
+              rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP(ctxt_pP,
+                  ue_context_p);
+            } else {
+              ue_context_p->ue_context.reestablishment_cause = ReestablishmentCause_spare1;
+
+              for (uint8_t e_rab = 0; e_rab < ue_context_p->ue_context.nb_of_e_rabs; e_rab++) {
+                if (ue_context_p->ue_context.e_rab[e_rab].status == E_RAB_STATUS_DONE) {
+                  ue_context_p->ue_context.e_rab[e_rab].status = E_RAB_STATUS_ESTABLISHED;
+                } else {
+                  ue_context_p->ue_context.e_rab[e_rab].status = E_RAB_STATUS_FAILED;
+                }
               }
             }
           }
-	}
-      }    
+        }
+
 #else  // establish a dedicated bearer 
-      if (dedicated_DRB == 0 ) {
-	//	ue_context_p->ue_context.e_rab[0].status = E_RAB_STATUS_ESTABLISHED;
-	rrc_eNB_reconfigure_DRBs(ctxt_pP,ue_context_p);
-      }
-      
-#endif
-#endif 
-      break;
 
-    case UL_DCCH_MessageType__c1_PR_rrcConnectionReestablishmentComplete:
-      T(T_ENB_RRC_CONNECTION_REESTABLISHMENT_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        if (dedicated_DRB == 0 ) {
+          //  ue_context_p->ue_context.e_rab[0].status = E_RAB_STATUS_ESTABLISHED;
+          rrc_eNB_reconfigure_DRBs(ctxt_pP,ue_context_p);
+        }
+
+#endif
+#endif
+        break;
 
+      case UL_DCCH_MessageType__c1_PR_rrcConnectionReestablishmentComplete:
+        T(T_ENB_RRC_CONNECTION_REESTABLISHMENT_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
 #ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Connection Reestablishment Complete\n");
+        LOG_F(RRC,"[MSG] RRC Connection Reestablishment Complete\n");
 
-      for (i = 0; i < sdu_sizeP; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
+        for (i = 0; i < sdu_sizeP; i++) {
+          LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]);
+        }
 
-      LOG_F(RRC,"\n");
-#endif
-
-      MSC_LOG_RX_MESSAGE(
-        MSC_RRC_ENB,
-        MSC_RRC_UE,
-        Rx_sdu,
-        sdu_sizeP,
-        MSC_AS_TIME_FMT" rrcConnectionReestablishmentComplete UE %x size %u",
-        MSC_AS_TIME_ARGS(ctxt_pP),
-        ue_context_p->ue_context.rnti,
-        sdu_sizeP);
-
-      LOG_I(RRC,
-            PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
-            "(rrcConnectionReestablishmentComplete) ---> RRC_eNB\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            DCCH,
-            sdu_sizeP);
-       {
-        int UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti);
-        RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer = 0;
-        rnti_t reestablish_rnti = 0;
-        // select C-RNTI from map
-        for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
-          if (reestablish_rnti_map[i][0] == ctxt_pP->rnti) {
-            reestablish_rnti = reestablish_rnti_map[i][1];
-            ue_context_p = rrc_eNB_get_ue_context(
-                              RC.rrc[ctxt_pP->module_id],
-                              reestablish_rnti);
-            // clear currentC-RNTI from map
-            reestablish_rnti_map[i][0] = 0;
-            reestablish_rnti_map[i][1] = 0;
-            break;
+        LOG_F(RRC,"\n");
+#endif
+        MSC_LOG_RX_MESSAGE(
+          MSC_RRC_ENB,
+          MSC_RRC_UE,
+          Rx_sdu,
+          sdu_sizeP,
+          MSC_AS_TIME_FMT" rrcConnectionReestablishmentComplete UE %x size %u",
+          MSC_AS_TIME_ARGS(ctxt_pP),
+          ue_context_p->ue_context.rnti,
+          sdu_sizeP);
+        LOG_I(RRC,
+              PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
+              "(rrcConnectionReestablishmentComplete) ---> RRC_eNB\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+              DCCH,
+              sdu_sizeP);
+        {
+          int UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti);
+          RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer = 0;
+          rnti_t reestablish_rnti = 0;
+
+          // select C-RNTI from map
+          for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
+            if (reestablish_rnti_map[i][0] == ctxt_pP->rnti) {
+              reestablish_rnti = reestablish_rnti_map[i][1];
+              ue_context_p = rrc_eNB_get_ue_context(
+                               RC.rrc[ctxt_pP->module_id],
+                               reestablish_rnti);
+              // clear currentC-RNTI from map
+              reestablish_rnti_map[i][0] = 0;
+              reestablish_rnti_map[i][1] = 0;
+              break;
+            }
           }
-        }
-        LOG_D(RRC, "reestablish_rnti_map[%d] [0] %x, [1] %x\n",
-              i, reestablish_rnti_map[i][0], reestablish_rnti_map[i][1]);
 
-        if (!ue_context_p) {
-          LOG_E(RRC,
-                PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReestablishmentComplete without UE context, falt\n",
-                PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-          break;
-        }
+          LOG_D(RRC, "reestablish_rnti_map[%d] [0] %x, [1] %x\n",
+                i, reestablish_rnti_map[i][0], reestablish_rnti_map[i][1]);
 
-        if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionReestablishmentComplete.criticalExtensions.present ==
-            RRCConnectionReestablishmentComplete__criticalExtensions_PR_rrcConnectionReestablishmentComplete_r8) {
-          rrc_eNB_process_RRCConnectionReestablishmentComplete(ctxt_pP, reestablish_rnti, ue_context_p,
-              ul_dcch_msg->message.choice.c1.choice.rrcConnectionReestablishmentComplete.rrc_TransactionIdentifier,
-              &ul_dcch_msg->message.choice.c1.choice.rrcConnectionReestablishmentComplete.criticalExtensions.choice.rrcConnectionReestablishmentComplete_r8);
+          if (!ue_context_p) {
+            LOG_E(RRC,
+                  PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReestablishmentComplete without UE context, falt\n",
+                  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
+            break;
+          }
 
-          //WARNING:Inform the controller about the UE activation. Should be moved to RRC agent in the future
-          if (mac_agent_registered[ctxt_pP->module_id]) {
-            agent_rrc_xface[ctxt_pP->eNB_index]->flexran_agent_notify_ue_state_change(ctxt_pP->module_id,
-                                                                                      ue_context_p->ue_id_rnti,
-                                                                                      PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_ACTIVATED);
+          if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionReestablishmentComplete.criticalExtensions.present ==
+              RRCConnectionReestablishmentComplete__criticalExtensions_PR_rrcConnectionReestablishmentComplete_r8) {
+            rrc_eNB_process_RRCConnectionReestablishmentComplete(ctxt_pP, reestablish_rnti, ue_context_p,
+                ul_dcch_msg->message.choice.c1.choice.rrcConnectionReestablishmentComplete.rrc_TransactionIdentifier,
+                &ul_dcch_msg->message.choice.c1.choice.rrcConnectionReestablishmentComplete.criticalExtensions.choice.rrcConnectionReestablishmentComplete_r8);
+
+            //WARNING:Inform the controller about the UE activation. Should be moved to RRC agent in the future
+            if (mac_agent_registered[ctxt_pP->module_id]) {
+              agent_rrc_xface[ctxt_pP->eNB_index]->flexran_agent_notify_ue_state_change(ctxt_pP->module_id,
+                  ue_context_p->ue_id_rnti,
+                  PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_ACTIVATED);
+            }
           }
+
+          //ue_context_p->ue_context.ue_release_timer = 0;
+          ue_context_p->ue_context.ue_reestablishment_timer = 1;
+          // remove UE after 100 frames after RRCConnectionReestablishmentRelease is triggered
+          ue_context_p->ue_context.ue_reestablishment_timer_thres = 1000;
         }
-        //ue_context_p->ue_context.ue_release_timer = 0;
-        ue_context_p->ue_context.ue_reestablishment_timer = 1;
-        // remove UE after 100 frames after RRCConnectionReestablishmentRelease is triggered
-        ue_context_p->ue_context.ue_reestablishment_timer_thres = 1000;
-      }
-      break;
+        break;
 
-    case UL_DCCH_MessageType__c1_PR_rrcConnectionSetupComplete:
+      case UL_DCCH_MessageType__c1_PR_rrcConnectionSetupComplete:
 #ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Connection SetupComplete\n");
+        LOG_F(RRC,"[MSG] RRC Connection SetupComplete\n");
 
-      for (i = 0; i < sdu_sizeP; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
-
-      LOG_F(RRC,"\n");
-#endif
-
-      MSC_LOG_RX_MESSAGE(
-        MSC_RRC_ENB,
-        MSC_RRC_UE,
-        Rx_sdu,
-        sdu_sizeP,
-        MSC_AS_TIME_FMT" RRCConnectionSetupComplete UE %x size %u",
-        MSC_AS_TIME_ARGS(ctxt_pP),
-        ue_context_p->ue_context.rnti,
-        sdu_sizeP);
-
-      LOG_D(RRC,
-            PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
-            "(RRCConnectionSetupComplete) ---> RRC_eNB\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            DCCH,
-            sdu_sizeP);
-
-      if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionSetupComplete.criticalExtensions.present ==
-          RRCConnectionSetupComplete__criticalExtensions_PR_c1) {
-        if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionSetupComplete.criticalExtensions.choice.c1.
-            present ==
-            RRCConnectionSetupComplete__criticalExtensions__c1_PR_rrcConnectionSetupComplete_r8) {
-          rrc_eNB_process_RRCConnectionSetupComplete(
-            ctxt_pP,
-            ue_context_p,
-            &ul_dcch_msg->message.choice.c1.choice.rrcConnectionSetupComplete.criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8);
-          ue_context_p->ue_context.Status = RRC_CONNECTED;
-          LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_CONNECTED \n",
-                PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
-	  
-	  //WARNING:Inform the controller about the UE activation. Should be moved to RRC agent in the future
-	  if (rrc_agent_registered[ctxt_pP->module_id]) {
-	    agent_rrc_xface[ctxt_pP->eNB_index]->flexran_agent_notify_ue_state_change(ctxt_pP->module_id,
-										  ue_context_p->ue_id_rnti,
-										  PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_ACTIVATED);
-	  }
+        for (i = 0; i < sdu_sizeP; i++) {
+          LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]);
         }
-      }
 
-      ue_context_p->ue_context.ue_release_timer=0;
-      break;
+        LOG_F(RRC,"\n");
+#endif
+        MSC_LOG_RX_MESSAGE(
+          MSC_RRC_ENB,
+          MSC_RRC_UE,
+          Rx_sdu,
+          sdu_sizeP,
+          MSC_AS_TIME_FMT" RRCConnectionSetupComplete UE %x size %u",
+          MSC_AS_TIME_ARGS(ctxt_pP),
+          ue_context_p->ue_context.rnti,
+          sdu_sizeP);
+        LOG_D(RRC,
+              PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
+              "(RRCConnectionSetupComplete) ---> RRC_eNB\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+              DCCH,
+              sdu_sizeP);
+
+        if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionSetupComplete.criticalExtensions.present ==
+            RRCConnectionSetupComplete__criticalExtensions_PR_c1) {
+          if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionSetupComplete.criticalExtensions.choice.c1.
+              present ==
+              RRCConnectionSetupComplete__criticalExtensions__c1_PR_rrcConnectionSetupComplete_r8) {
+            rrc_eNB_process_RRCConnectionSetupComplete(
+              ctxt_pP,
+              ue_context_p,
+              &ul_dcch_msg->message.choice.c1.choice.rrcConnectionSetupComplete.criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8);
+            ue_context_p->ue_context.Status = RRC_CONNECTED;
+            LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_CONNECTED \n",
+                  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
 
-    case UL_DCCH_MessageType__c1_PR_securityModeComplete:
-      T(T_ENB_RRC_SECURITY_MODE_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+            //WARNING:Inform the controller about the UE activation. Should be moved to RRC agent in the future
+            if (rrc_agent_registered[ctxt_pP->module_id]) {
+              agent_rrc_xface[ctxt_pP->eNB_index]->flexran_agent_notify_ue_state_change(ctxt_pP->module_id,
+                  ue_context_p->ue_id_rnti,
+                  PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_ACTIVATED);
+            }
+          }
+        }
 
-#ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Security Mode Complete\n");
+        ue_context_p->ue_context.ue_release_timer=0;
+        break;
 
-      for (i = 0; i < sdu_sizeP; i++) eNB->pusch_vars[UE_id]{
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
+      case UL_DCCH_MessageType__c1_PR_securityModeComplete:
+        T(T_ENB_RRC_SECURITY_MODE_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+#ifdef RRC_MSG_PRINT
+        LOG_F(RRC,"[MSG] RRC Security Mode Complete\n");
 
-      LOG_F(RRC,"\n");
-#endif
-
-      MSC_LOG_RX_MESSAGE(
-        MSC_RRC_ENB,
-        MSC_RRC_UE,
-        Rx_sdu,
-        sdu_sizeP,
-        MSC_AS_TIME_FMT" securityModeComplete UE %x size %u",
-        MSC_AS_TIME_ARGS(ctxt_pP),
-        ue_context_p->ue_context.rnti,
-        sdu_sizeP);
-
-      LOG_I(RRC,
-            PROTOCOL_RRC_CTXT_UE_FMT" received securityModeComplete on UL-DCCH %d from UE\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            DCCH);
-      LOG_D(RRC,
-            PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
-            "(securityModeComplete) ---> RRC_eNB\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            DCCH,
-            sdu_sizeP);
+        for (i = 0; i < sdu_sizeP; i++) eNB->pusch_vars[UE_id] {
+          LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]);
+        }
+        LOG_F(RRC,"\n");
+#endif
+        MSC_LOG_RX_MESSAGE(
+          MSC_RRC_ENB,
+          MSC_RRC_UE,
+          Rx_sdu,
+          sdu_sizeP,
+          MSC_AS_TIME_FMT" securityModeComplete UE %x size %u",
+          MSC_AS_TIME_ARGS(ctxt_pP),
+          ue_context_p->ue_context.rnti,
+          sdu_sizeP);
+        LOG_I(RRC,
+              PROTOCOL_RRC_CTXT_UE_FMT" received securityModeComplete on UL-DCCH %d from UE\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+              DCCH);
+        LOG_D(RRC,
+              PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
+              "(securityModeComplete) ---> RRC_eNB\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+              DCCH,
+              sdu_sizeP);
 #ifdef XER_PRINT
-      xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)ul_dcch_msg);
-#endif
-      // confirm with PDCP about the security mode for DCCH
-      //rrc_pdcp_config_req (enb_mod_idP, frameP, 1,CONFIG_ACTION_SET_SECURITY_MODE, (ue_mod_idP * NB_RB_MAX) + DCCH, 0x77);
-      // continue the procedure
-      rrc_eNB_generate_UECapabilityEnquiry(
-        ctxt_pP,
-        ue_context_p);
-      break;
-
-    case UL_DCCH_MessageType__c1_PR_securityModeFailure:
-      T(T_ENB_RRC_SECURITY_MODE_FAILURE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)ul_dcch_msg);
+#endif
+        // confirm with PDCP about the security mode for DCCH
+        //rrc_pdcp_config_req (enb_mod_idP, frameP, 1,CONFIG_ACTION_SET_SECURITY_MODE, (ue_mod_idP * NB_RB_MAX) + DCCH, 0x77);
+        // continue the procedure
+        rrc_eNB_generate_UECapabilityEnquiry(
+          ctxt_pP,
+          ue_context_p);
+        break;
 
+      case UL_DCCH_MessageType__c1_PR_securityModeFailure:
+        T(T_ENB_RRC_SECURITY_MODE_FAILURE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
 #ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Security Mode Failure\n");
+        LOG_F(RRC,"[MSG] RRC Security Mode Failure\n");
 
-      for (i = 0; i < sdu_sizeP; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
+        for (i = 0; i < sdu_sizeP; i++) {
+          LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]);
+        }
 
-      LOG_F(RRC,"\n");
-#endif
-
-      MSC_LOG_RX_MESSAGE(
-        MSC_RRC_ENB,
-        MSC_RRC_UE,
-        Rx_sdu,
-        sdu_sizeP,
-        MSC_AS_TIME_FMT" securityModeFailure UE %x size %u",
-        MSC_AS_TIME_ARGS(ctxt_pP),
-        ue_context_p->ue_context.rnti,
-        sdu_sizeP);
-
-      LOG_W(RRC,
-            PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
-            "(securityModeFailure) ---> RRC_eNB\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            DCCH,
-            sdu_sizeP);
+        LOG_F(RRC,"\n");
+#endif
+        MSC_LOG_RX_MESSAGE(
+          MSC_RRC_ENB,
+          MSC_RRC_UE,
+          Rx_sdu,
+          sdu_sizeP,
+          MSC_AS_TIME_FMT" securityModeFailure UE %x size %u",
+          MSC_AS_TIME_ARGS(ctxt_pP),
+          ue_context_p->ue_context.rnti,
+          sdu_sizeP);
+        LOG_W(RRC,
+              PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
+              "(securityModeFailure) ---> RRC_eNB\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+              DCCH,
+              sdu_sizeP);
 #ifdef XER_PRINT
-      xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)ul_dcch_msg);
+        xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)ul_dcch_msg);
 #endif
-      // cancel the security mode in PDCP
-
-      // followup with the remaining procedure
-//#warning "LG Removed rrc_eNB_generate_UECapabilityEnquiry after receiving securityModeFailure"
-      rrc_eNB_generate_UECapabilityEnquiry(ctxt_pP, ue_context_p);
-      break;
-
-    case UL_DCCH_MessageType__c1_PR_ueCapabilityInformation:
-      T(T_ENB_RRC_UE_CAPABILITY_INFORMATION, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        // cancel the security mode in PDCP
+        // followup with the remaining procedure
+        //#warning "LG Removed rrc_eNB_generate_UECapabilityEnquiry after receiving securityModeFailure"
+        rrc_eNB_generate_UECapabilityEnquiry(ctxt_pP, ue_context_p);
+        break;
 
+      case UL_DCCH_MessageType__c1_PR_ueCapabilityInformation:
+        T(T_ENB_RRC_UE_CAPABILITY_INFORMATION, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
 #ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC UECapablility Information \n");
+        LOG_F(RRC,"[MSG] RRC UECapablility Information \n");
 
-      for (i = 0; i < sdu_sizeP; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
+        for (i = 0; i < sdu_sizeP; i++) {
+          LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]);
+        }
 
-      LOG_F(RRC,"\n");
-#endif
-
-      MSC_LOG_RX_MESSAGE(
-        MSC_RRC_ENB,
-        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(RRC,
-            PROTOCOL_RRC_CTXT_UE_FMT" received ueCapabilityInformation on UL-DCCH %d from UE\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            DCCH);
-      LOG_D(RRC,
-            PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
-            "(UECapabilityInformation) ---> RRC_eNB\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            DCCH,
-            sdu_sizeP);
+        LOG_F(RRC,"\n");
+#endif
+        MSC_LOG_RX_MESSAGE(
+          MSC_RRC_ENB,
+          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(RRC,
+              PROTOCOL_RRC_CTXT_UE_FMT" received ueCapabilityInformation on UL-DCCH %d from UE\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+              DCCH);
+        LOG_D(RRC,
+              PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
+              "(UECapabilityInformation) ---> RRC_eNB\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+              DCCH,
+              sdu_sizeP);
 #ifdef XER_PRINT
-      xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)ul_dcch_msg);
-#endif
-      LOG_I(RRC, "got UE capabilities for UE %x\n", ctxt_pP->rnti);
-      if (ue_context_p->ue_context.UE_Capability) {
-        LOG_I(RRC, "freeing old UE capabilities for UE %x\n", ctxt_pP->rnti);
-        asn_DEF_UE_EUTRA_Capability.free_struct(&asn_DEF_UE_EUTRA_Capability,
-              ue_context_p->ue_context.UE_Capability, 0);
-        ue_context_p->ue_context.UE_Capability = 0;
-      }
-      dec_rval = uper_decode(NULL,
-                             &asn_DEF_UE_EUTRA_Capability,
-                             (void **)&ue_context_p->ue_context.UE_Capability,
-                             ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.
-                             choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.
-                             array[0]->ueCapabilityRAT_Container.buf,
-                             ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.
-                             choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.
-                             array[0]->ueCapabilityRAT_Container.size, 0, 0);
+        xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)ul_dcch_msg);
+#endif
+        LOG_I(RRC, "got UE capabilities for UE %x\n", ctxt_pP->rnti);
+
+        if (ue_context_p->ue_context.UE_Capability) {
+          LOG_I(RRC, "freeing old UE capabilities for UE %x\n", ctxt_pP->rnti);
+          ASN_STRUCT_FREE(asn_DEF_UE_EUTRA_Capability,
+                          ue_context_p->ue_context.UE_Capability);
+          ue_context_p->ue_context.UE_Capability = 0;
+        }
+
+        dec_rval = uper_decode(NULL,
+                               &asn_DEF_UE_EUTRA_Capability,
+                               (void **)&ue_context_p->ue_context.UE_Capability,
+                               ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.
+                               choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.
+                               array[0]->ueCapabilityRAT_Container.buf,
+                               ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.
+                               choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.
+                               array[0]->ueCapabilityRAT_Container.size, 0, 0);
 #ifdef XER_PRINT
-      xer_fprint(stdout, &asn_DEF_UE_EUTRA_Capability, ue_context_p->ue_context.UE_Capability);
+        xer_fprint(stdout, &asn_DEF_UE_EUTRA_Capability, ue_context_p->ue_context.UE_Capability);
 #endif
 
-      if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) {
-        LOG_E(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Failed to decode UE capabilities (%zu bytes)\n",
-              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-              dec_rval.consumed);
-        asn_DEF_UE_EUTRA_Capability.free_struct(&asn_DEF_UE_EUTRA_Capability,
-              ue_context_p->ue_context.UE_Capability, 0);
-        ue_context_p->ue_context.UE_Capability = 0;
-      }
+        if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) {
+          LOG_E(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Failed to decode UE capabilities (%zu bytes)\n",
+                PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+                dec_rval.consumed);
+          ASN_STRUCT_FREE(asn_DEF_UE_EUTRA_Capability,
+                          ue_context_p->ue_context.UE_Capability);
+          ue_context_p->ue_context.UE_Capability = 0;
+        }
 
 #if defined(ENABLE_USE_MME)
 
-      if (EPC_MODE_ENABLED == 1) {
-        rrc_eNB_send_S1AP_UE_CAPABILITIES_IND(ctxt_pP,
-                                              ue_context_p,
-                                              ul_dcch_msg);
-      }
-#else 
-      ue_context_p->ue_context.nb_of_e_rabs = 1;
-      for (i = 0; i < ue_context_p->ue_context.nb_of_e_rabs; i++){
-	ue_context_p->ue_context.e_rab[i].status = E_RAB_STATUS_NEW;
-	ue_context_p->ue_context.e_rab[i].param.e_rab_id = 1+i;
-	ue_context_p->ue_context.e_rab[i].param.qos.qci=9;
-      }
-      ue_context_p->ue_context.setup_e_rabs =ue_context_p->ue_context.nb_of_e_rabs;
-#endif
+        if (EPC_MODE_ENABLED == 1) {
+          rrc_eNB_send_S1AP_UE_CAPABILITIES_IND(ctxt_pP,
+                                                ue_context_p,
+                                                ul_dcch_msg);
+        }
 
-      rrc_eNB_generate_defaultRRCConnectionReconfiguration(ctxt_pP,
-          ue_context_p,
-          RC.rrc[ctxt_pP->module_id]->HO_flag);
-      break;
+#else
+        ue_context_p->ue_context.nb_of_e_rabs = 1;
 
-    case UL_DCCH_MessageType__c1_PR_ulHandoverPreparationTransfer:
-      T(T_ENB_RRC_UL_HANDOVER_PREPARATION_TRANSFER, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        for (i = 0; i < ue_context_p->ue_context.nb_of_e_rabs; i++) {
+          ue_context_p->ue_context.e_rab[i].status = E_RAB_STATUS_NEW;
+          ue_context_p->ue_context.e_rab[i].param.e_rab_id = 1+i;
+          ue_context_p->ue_context.e_rab[i].param.qos.qci=9;
+        }
 
-      break;
+        ue_context_p->ue_context.setup_e_rabs =ue_context_p->ue_context.nb_of_e_rabs;
+#endif
+        rrc_eNB_generate_defaultRRCConnectionReconfiguration(ctxt_pP,
+            ue_context_p,
+            RC.rrc[ctxt_pP->module_id]->HO_flag);
+        break;
 
-    case UL_DCCH_MessageType__c1_PR_ulInformationTransfer:
-      T(T_ENB_RRC_UL_INFORMATION_TRANSFER, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+      case UL_DCCH_MessageType__c1_PR_ulHandoverPreparationTransfer:
+        T(T_ENB_RRC_UL_HANDOVER_PREPARATION_TRANSFER, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        break;
 
-      LOG_D(RRC,"[MSG] RRC UL Information Transfer \n");
+      case UL_DCCH_MessageType__c1_PR_ulInformationTransfer:
+        T(T_ENB_RRC_UL_INFORMATION_TRANSFER, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        LOG_D(RRC,"[MSG] RRC UL Information Transfer \n");
 #ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC UL Information Transfer \n");
+        LOG_F(RRC,"[MSG] RRC UL Information Transfer \n");
 
-      for (i = 0; i < sdu_sizeP; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
+        for (i = 0; i < sdu_sizeP; i++) {
+          LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]);
+        }
 
-      LOG_F(RRC,"\n");
+        LOG_F(RRC,"\n");
 #endif
-
-
-      MSC_LOG_RX_MESSAGE(
-        MSC_RRC_ENB,
-        MSC_RRC_UE,
-        Rx_sdu,
-        sdu_sizeP,
-        MSC_AS_TIME_FMT" ulInformationTransfer UE %x size %u",
-        MSC_AS_TIME_ARGS(ctxt_pP),
-        ue_context_p->ue_context.rnti,
-        sdu_sizeP);
-
+        MSC_LOG_RX_MESSAGE(
+          MSC_RRC_ENB,
+          MSC_RRC_UE,
+          Rx_sdu,
+          sdu_sizeP,
+          MSC_AS_TIME_FMT" ulInformationTransfer UE %x size %u",
+          MSC_AS_TIME_ARGS(ctxt_pP),
+          ue_context_p->ue_context.rnti,
+          sdu_sizeP);
 #if defined(ENABLE_USE_MME)
 
-      if (EPC_MODE_ENABLED == 1) {
-        rrc_eNB_send_S1AP_UPLINK_NAS(ctxt_pP,
-                                     ue_context_p,
-                                     ul_dcch_msg);
-      }
+        if (EPC_MODE_ENABLED == 1) {
+          rrc_eNB_send_S1AP_UPLINK_NAS(ctxt_pP,
+                                       ue_context_p,
+                                       ul_dcch_msg);
+        }
 
 #endif
-      break;
-
-    case UL_DCCH_MessageType__c1_PR_counterCheckResponse:
-      T(T_ENB_RRC_COUNTER_CHECK_RESPONSE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
-      break;
+        break;
 
+      case UL_DCCH_MessageType__c1_PR_counterCheckResponse:
+        T(T_ENB_RRC_COUNTER_CHECK_RESPONSE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        break;
 #if defined(Rel10) || defined(Rel14)
 
-    case UL_DCCH_MessageType__c1_PR_ueInformationResponse_r9:
-      T(T_ENB_RRC_UE_INFORMATION_RESPONSE_R9, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
-      break;
-
-    case UL_DCCH_MessageType__c1_PR_proximityIndication_r9:
-      T(T_ENB_RRC_PROXIMITY_INDICATION_R9, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
-      break;
-
-    case UL_DCCH_MessageType__c1_PR_rnReconfigurationComplete_r10:
-      T(T_ENB_RRC_RECONFIGURATION_COMPLETE_R10, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
-      break;
+      case UL_DCCH_MessageType__c1_PR_ueInformationResponse_r9:
+        T(T_ENB_RRC_UE_INFORMATION_RESPONSE_R9, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        break;
 
-    case UL_DCCH_MessageType__c1_PR_mbmsCountingResponse_r10:
-      T(T_ENB_RRC_MBMS_COUNTING_RESPONSE_R10, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+      case UL_DCCH_MessageType__c1_PR_proximityIndication_r9:
+        T(T_ENB_RRC_PROXIMITY_INDICATION_R9, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        break;
 
-      break;
+      case UL_DCCH_MessageType__c1_PR_rnReconfigurationComplete_r10:
+        T(T_ENB_RRC_RECONFIGURATION_COMPLETE_R10, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        break;
 
-    case UL_DCCH_MessageType__c1_PR_interFreqRSTDMeasurementIndication_r10:
-      T(T_ENB_RRC_INTER_FREQ_RSTD_MEASUREMENT_INDICATION, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+      case UL_DCCH_MessageType__c1_PR_mbmsCountingResponse_r10:
+        T(T_ENB_RRC_MBMS_COUNTING_RESPONSE_R10, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        break;
 
-      break;
+      case UL_DCCH_MessageType__c1_PR_interFreqRSTDMeasurementIndication_r10:
+        T(T_ENB_RRC_INTER_FREQ_RSTD_MEASUREMENT_INDICATION, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        break;
 #endif
 
-    default:
-      T(T_ENB_RRC_UNKNOW_MESSAGE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
-        T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
-
-      LOG_E(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Unknown message %s:%u\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
-            __FILE__, __LINE__);
-      return -1;
+      default:
+        T(T_ENB_RRC_UNKNOW_MESSAGE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
+          T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
+        LOG_E(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Unknown message %s:%u\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
+              __FILE__, __LINE__);
+        return -1;
     }
 
     return 0;
@@ -7033,20 +6529,18 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
           __FILE__, __LINE__);
     return -1;
   }
-
 }
 
 #if defined(ENABLE_ITTI)
-void rrc_eNB_reconfigure_DRBs (const protocol_ctxt_t* const ctxt_pP,
-			       rrc_eNB_ue_context_t*  ue_context_pP){
-
+void rrc_eNB_reconfigure_DRBs (const protocol_ctxt_t *const ctxt_pP,
+                               rrc_eNB_ue_context_t  *ue_context_pP) {
   int i;
   int e_rab_done=0;
-  for (i = 0; 
+
+  for (i = 0;
        i < 3;//NB_RB_MAX - 3;  // S1AP_MAX_E_RAB
        i++) {
-    
-    if ( ue_context_pP->ue_context.e_rab[i].status < E_RAB_STATUS_DONE){ 
+    if ( ue_context_pP->ue_context.e_rab[i].status < E_RAB_STATUS_DONE) {
       ue_context_pP->ue_context.e_rab[i].status = E_RAB_STATUS_NEW;
       ue_context_pP->ue_context.e_rab[i].param.e_rab_id = i + 1;
       ue_context_pP->ue_context.e_rab[i].param.qos.qci = i % 9;
@@ -7055,26 +6549,25 @@ void rrc_eNB_reconfigure_DRBs (const protocol_ctxt_t* const ctxt_pP,
       ue_context_pP->ue_context.e_rab[i].param.qos.allocation_retention_priority.pre_emp_vulnerability= PRE_EMPTION_VULNERABILITY_DISABLED;
       ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer = NULL;
       ue_context_pP->ue_context.e_rab[i].param.nas_pdu.length = 0;
-      //	memset (ue_context_pP->ue_context.e_rab[i].param.sgw_addr.buffer,0,20);
+      //  memset (ue_context_pP->ue_context.e_rab[i].param.sgw_addr.buffer,0,20);
       ue_context_pP->ue_context.e_rab[i].param.sgw_addr.length = 0;
       ue_context_pP->ue_context.e_rab[i].param.gtp_teid=0;
-      
       ue_context_pP->ue_context.nb_of_e_rabs++;
       e_rab_done++;
-      LOG_I(RRC,"setting up the dedicated DRBs %d (index %d) status %d \n", 
-	    ue_context_pP->ue_context.e_rab[i].param.e_rab_id, i, ue_context_pP->ue_context.e_rab[i].status);
+      LOG_I(RRC,"setting up the dedicated DRBs %d (index %d) status %d \n",
+            ue_context_pP->ue_context.e_rab[i].param.e_rab_id, i, ue_context_pP->ue_context.e_rab[i].status);
     }
   }
+
   ue_context_pP->ue_context.setup_e_rabs+=e_rab_done;
- 
   rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(ctxt_pP, ue_context_pP, 0);
 }
 
 
 //-----------------------------------------------------------------------------
-void*
+void *
 rrc_enb_task(
-  void* args_p
+  void *args_p
 )
 //-----------------------------------------------------------------------------
 {
@@ -7084,141 +6577,136 @@ rrc_enb_task(
   int                                 result;
   SRB_INFO                           *srb_info_p;
   int                                 CC_id;
-
   protocol_ctxt_t                     ctxt;
   itti_mark_task_ready(TASK_RRC_ENB);
   LOG_I(RRC,"Entering main loop of RRC message task\n");
+
   while (1) {
     // Wait for a message
     itti_receive_msg(TASK_RRC_ENB, &msg_p);
-
     msg_name_p = ITTI_MSG_NAME(msg_p);
     instance = ITTI_MSG_INSTANCE(msg_p);
     LOG_I(RRC,"Received message %s\n",msg_name_p);
 
     switch (ITTI_MSG_ID(msg_p)) {
-    case TERMINATE_MESSAGE:
-      LOG_W(RRC, " *** Exiting RRC thread\n");
-      itti_exit_task();
-      break;
+      case TERMINATE_MESSAGE:
+        LOG_W(RRC, " *** Exiting RRC thread\n");
+        itti_exit_task();
+        break;
 
-    case MESSAGE_TEST:
-      LOG_I(RRC, "[eNB %d] Received %s\n", instance, msg_name_p);
-      break;
+      case MESSAGE_TEST:
+        LOG_I(RRC, "[eNB %d] Received %s\n", instance, msg_name_p);
+        break;
 
       /* Messages from MAC */
-    case RRC_MAC_CCCH_DATA_IND:
-      PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt,
-                                    instance,
-                                    ENB_FLAG_YES,
-                                    RRC_MAC_CCCH_DATA_IND(msg_p).rnti,
-                                    msg_p->ittiMsgHeader.lte_time.frame,
-                                    msg_p->ittiMsgHeader.lte_time.slot);
-      LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Received %s\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(&ctxt),
-            msg_name_p);
-
-      CC_id = RRC_MAC_CCCH_DATA_IND(msg_p).CC_id;
-      srb_info_p = &RC.rrc[instance]->carrier[CC_id].Srb0;
-
-      LOG_I(RRC,"Decoding CCCH : inst %d, CC_id %d, ctxt %p, sib_info_p->Rx_buffer.payload_size %d\n",
-	    instance,CC_id,&ctxt, RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size);
-      AssertFatal(RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size < RRC_BUFFER_SIZE_MAX,
-		  "CCCH message has size %d > %d\n",
-		  RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size,RRC_BUFFER_SIZE_MAX);
-      memcpy(srb_info_p->Rx_buffer.Payload,
-             RRC_MAC_CCCH_DATA_IND(msg_p).sdu,
-             RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size);
-      srb_info_p->Rx_buffer.payload_size = RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size;
-
-      rrc_eNB_decode_ccch(&ctxt, srb_info_p, CC_id);
-      break;
-	    
-      /* Messages from PDCP */
-    case RRC_DCCH_DATA_IND:
-      PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt,
-                                    instance,
-                                    ENB_FLAG_YES,
-                                    RRC_DCCH_DATA_IND(msg_p).rnti,
-                                    msg_p->ittiMsgHeader.lte_time.frame,
-                                    msg_p->ittiMsgHeader.lte_time.slot);
-      LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Received on DCCH %d %s\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(&ctxt),
-            RRC_DCCH_DATA_IND(msg_p).dcch_index,
-            msg_name_p);
-      rrc_eNB_decode_dcch(&ctxt,
-                          RRC_DCCH_DATA_IND(msg_p).dcch_index,
-                          RRC_DCCH_DATA_IND(msg_p).sdu_p,
-                          RRC_DCCH_DATA_IND(msg_p).sdu_size);
-
-      // Message buffer has been processed, free it now.
-      result = itti_free(ITTI_MSG_ORIGIN_ID(msg_p), RRC_DCCH_DATA_IND(msg_p).sdu_p);
-      AssertFatal(result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-      break;
+      case RRC_MAC_CCCH_DATA_IND:
+        PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt,
+                                      instance,
+                                      ENB_FLAG_YES,
+                                      RRC_MAC_CCCH_DATA_IND(msg_p).rnti,
+                                      msg_p->ittiMsgHeader.lte_time.frame,
+                                      msg_p->ittiMsgHeader.lte_time.slot);
+        LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Received %s\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(&ctxt),
+              msg_name_p);
+        CC_id = RRC_MAC_CCCH_DATA_IND(msg_p).CC_id;
+        srb_info_p = &RC.rrc[instance]->carrier[CC_id].Srb0;
+        LOG_I(RRC,"Decoding CCCH : inst %d, CC_id %d, ctxt %p, sib_info_p->Rx_buffer.payload_size %d\n",
+              instance,CC_id,&ctxt, RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size);
+        AssertFatal(RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size < RRC_BUFFER_SIZE_MAX,
+                    "CCCH message has size %d > %d\n",
+                    RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size,RRC_BUFFER_SIZE_MAX);
+        memcpy(srb_info_p->Rx_buffer.Payload,
+               RRC_MAC_CCCH_DATA_IND(msg_p).sdu,
+               RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size);
+        srb_info_p->Rx_buffer.payload_size = RRC_MAC_CCCH_DATA_IND(msg_p).sdu_size;
+        rrc_eNB_decode_ccch(&ctxt, srb_info_p, CC_id);
+        break;
 
+      /* Messages from PDCP */
+      case RRC_DCCH_DATA_IND:
+        PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt,
+                                      instance,
+                                      ENB_FLAG_YES,
+                                      RRC_DCCH_DATA_IND(msg_p).rnti,
+                                      msg_p->ittiMsgHeader.lte_time.frame,
+                                      msg_p->ittiMsgHeader.lte_time.slot);
+        LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Received on DCCH %d %s\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(&ctxt),
+              RRC_DCCH_DATA_IND(msg_p).dcch_index,
+              msg_name_p);
+        rrc_eNB_decode_dcch(&ctxt,
+                            RRC_DCCH_DATA_IND(msg_p).dcch_index,
+                            RRC_DCCH_DATA_IND(msg_p).sdu_p,
+                            RRC_DCCH_DATA_IND(msg_p).sdu_size);
+        // Message buffer has been processed, free it now.
+        result = itti_free(ITTI_MSG_ORIGIN_ID(msg_p), RRC_DCCH_DATA_IND(msg_p).sdu_p);
+        AssertFatal(result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
+        break;
 #   if defined(ENABLE_USE_MME)
 
       /* Messages from S1AP */
-    case S1AP_DOWNLINK_NAS:
-      rrc_eNB_process_S1AP_DOWNLINK_NAS(msg_p, msg_name_p, instance, &rrc_eNB_mui);
-      break;
+      case S1AP_DOWNLINK_NAS:
+        rrc_eNB_process_S1AP_DOWNLINK_NAS(msg_p, msg_name_p, instance, &rrc_eNB_mui);
+        break;
 
-    case S1AP_INITIAL_CONTEXT_SETUP_REQ:
-      rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(msg_p, msg_name_p, instance);
-      break;
+      case S1AP_INITIAL_CONTEXT_SETUP_REQ:
+        rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(msg_p, msg_name_p, instance);
+        break;
 
-    case S1AP_UE_CTXT_MODIFICATION_REQ:
-      rrc_eNB_process_S1AP_UE_CTXT_MODIFICATION_REQ(msg_p, msg_name_p, instance);
-      break;
+      case S1AP_UE_CTXT_MODIFICATION_REQ:
+        rrc_eNB_process_S1AP_UE_CTXT_MODIFICATION_REQ(msg_p, msg_name_p, instance);
+        break;
 
-    case S1AP_PAGING_IND:
-      LOG_D(RRC, "[eNB %d] Received Paging message from S1AP: %s\n", instance, msg_name_p);
-      rrc_eNB_process_PAGING_IND(msg_p, msg_name_p, instance);
-      break;
-  
-    case S1AP_E_RAB_SETUP_REQ: 
-      rrc_eNB_process_S1AP_E_RAB_SETUP_REQ(msg_p, msg_name_p, instance);
-      LOG_D(RRC, "[eNB %d] Received the message %s\n", instance, msg_name_p);
-      break;
+      case S1AP_PAGING_IND:
+        LOG_D(RRC, "[eNB %d] Received Paging message from S1AP: %s\n", instance, msg_name_p);
+        rrc_eNB_process_PAGING_IND(msg_p, msg_name_p, instance);
+        break;
 
-    case S1AP_E_RAB_MODIFY_REQ:
-      rrc_eNB_process_S1AP_E_RAB_MODIFY_REQ(msg_p, msg_name_p, instance);
-      break;
+      case S1AP_E_RAB_SETUP_REQ:
+        rrc_eNB_process_S1AP_E_RAB_SETUP_REQ(msg_p, msg_name_p, instance);
+        LOG_D(RRC, "[eNB %d] Received the message %s\n", instance, msg_name_p);
+        break;
 
-    case S1AP_E_RAB_RELEASE_COMMAND:
-      rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(msg_p, msg_name_p, instance);
-      break;
-    
-    case S1AP_UE_CONTEXT_RELEASE_REQ:
-      rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_REQ(msg_p, msg_name_p, instance);
-      break;
+      case S1AP_E_RAB_MODIFY_REQ:
+        rrc_eNB_process_S1AP_E_RAB_MODIFY_REQ(msg_p, msg_name_p, instance);
+        break;
 
-    case S1AP_UE_CONTEXT_RELEASE_COMMAND:
-      rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_COMMAND(msg_p, msg_name_p, instance);
-      break;
+      case S1AP_E_RAB_RELEASE_COMMAND:
+        rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(msg_p, msg_name_p, instance);
+        break;
 
-    case GTPV1U_ENB_DELETE_TUNNEL_RESP:
-      /* Nothing to do. Apparently everything is done in S1AP processing */
-      //LOG_I(RRC, "[eNB %d] Received message %s, not processed because procedure not synched\n",
-      //instance, msg_name_p);
-      if (rrc_eNB_get_ue_context(RC.rrc[instance], GTPV1U_ENB_DELETE_TUNNEL_RESP(msg_p).rnti)
-          && rrc_eNB_get_ue_context(RC.rrc[instance], GTPV1U_ENB_DELETE_TUNNEL_RESP(msg_p).rnti)->ue_context.ue_release_timer_rrc > 0) {
-        rrc_eNB_get_ue_context(RC.rrc[instance], GTPV1U_ENB_DELETE_TUNNEL_RESP(msg_p).rnti)->ue_context.ue_release_timer_rrc =
-        rrc_eNB_get_ue_context(RC.rrc[instance], GTPV1U_ENB_DELETE_TUNNEL_RESP(msg_p).rnti)->ue_context.ue_release_timer_thres_rrc;
-      }
-      break;
+      case S1AP_UE_CONTEXT_RELEASE_REQ:
+        rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_REQ(msg_p, msg_name_p, instance);
+        break;
+
+      case S1AP_UE_CONTEXT_RELEASE_COMMAND:
+        rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_COMMAND(msg_p, msg_name_p, instance);
+        break;
+
+      case GTPV1U_ENB_DELETE_TUNNEL_RESP:
+
+        /* Nothing to do. Apparently everything is done in S1AP processing */
+        //LOG_I(RRC, "[eNB %d] Received message %s, not processed because procedure not synched\n",
+        //instance, msg_name_p);
+        if (rrc_eNB_get_ue_context(RC.rrc[instance], GTPV1U_ENB_DELETE_TUNNEL_RESP(msg_p).rnti)
+            && rrc_eNB_get_ue_context(RC.rrc[instance], GTPV1U_ENB_DELETE_TUNNEL_RESP(msg_p).rnti)->ue_context.ue_release_timer_rrc > 0) {
+          rrc_eNB_get_ue_context(RC.rrc[instance], GTPV1U_ENB_DELETE_TUNNEL_RESP(msg_p).rnti)->ue_context.ue_release_timer_rrc =
+            rrc_eNB_get_ue_context(RC.rrc[instance], GTPV1U_ENB_DELETE_TUNNEL_RESP(msg_p).rnti)->ue_context.ue_release_timer_thres_rrc;
+        }
 
+        break;
 #   endif
 
       /* Messages from eNB app */
-    case RRC_CONFIGURATION_REQ:
-      LOG_I(RRC, "[eNB %d] Received %s : %p\n", instance, msg_name_p,&RRC_CONFIGURATION_REQ(msg_p));
-      openair_rrc_eNB_configuration(ENB_INSTANCE_TO_MODULE_ID(instance), &RRC_CONFIGURATION_REQ(msg_p));
-      break;
+      case RRC_CONFIGURATION_REQ:
+        LOG_I(RRC, "[eNB %d] Received %s : %p\n", instance, msg_name_p,&RRC_CONFIGURATION_REQ(msg_p));
+        openair_rrc_eNB_configuration(ENB_INSTANCE_TO_MODULE_ID(instance), &RRC_CONFIGURATION_REQ(msg_p));
+        break;
 
-    default:
-      LOG_E(RRC, "[eNB %d] Received unexpected message %s\n", instance, msg_name_p);
-      break;
+      default:
+        LOG_E(RRC, "[eNB %d] Received unexpected message %s\n", instance, msg_name_p);
+        break;
     }
 
     result = itti_free(ITTI_MSG_ORIGIN_ID(msg_p), msg_p);
@@ -7233,13 +6721,10 @@ void
 openair_rrc_top_init_eNB(int eMBMS_active,uint8_t HO_active)
 //-----------------------------------------------------------------------------
 {
-
   module_id_t         module_id;
   int                 CC_id;
-
   /* for no gcc warnings */
   (void)CC_id;
-
   LOG_D(RRC, "[OPENAIR][INIT] Init function start: NB_eNB_INST=%d\n", RC.nb_inst);
 
   if (RC.nb_inst > 0) {
@@ -7268,9 +6753,7 @@ openair_rrc_top_init_eNB(int eMBMS_active,uint8_t HO_active)
     }
 
 #endif
-  } 
-
-
+  }
 }
 
 //-----------------------------------------------------------------------------
@@ -7280,8 +6763,8 @@ rrc_top_cleanup_eNB(
 )
 //-----------------------------------------------------------------------------
 {
+  for (int i=0; i<RC.nb_inst; i++) free (RC.rrc[i]);
 
-  for (int i=0;i<RC.nb_inst;i++) free (RC.rrc[i]);
   free(RC.rrc);
 }
 
@@ -7289,7 +6772,7 @@ rrc_top_cleanup_eNB(
 //-----------------------------------------------------------------------------
 RRC_status_t
 rrc_rx_tx(
-  protocol_ctxt_t* const ctxt_pP,
+  protocol_ctxt_t *const ctxt_pP,
   const int          CC_id
 )
 //-----------------------------------------------------------------------------
@@ -7298,129 +6781,134 @@ rrc_rx_tx(
   int32_t        current_timestamp_ms, ref_timestamp_ms;
   struct timeval ts;
   struct rrc_eNB_ue_context_s   *ue_context_p = NULL,*ue_to_be_removed = NULL;
-
 #ifdef LOCALIZATION
   double                         estimated_distance;
   protocol_ctxt_t                ctxt;
 #endif
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_IN);
+  check_handovers(ctxt_pP);
+  // counetr, and get the value and aggregate
+  // check for UL failure
+  RB_FOREACH(ue_context_p, rrc_ue_tree_s, &(RC.rrc[ctxt_pP->module_id]->rrc_ue_head)) {
+    if ((ctxt_pP->frame == 0) && (ctxt_pP->subframe==0)) {
+      if (ue_context_p->ue_context.Initialue_identity_s_TMSI.presence == TRUE) {
+        LOG_I(RRC,"UE rnti %x:S-TMSI %x failure timer %d/8\n",
+              ue_context_p->ue_context.rnti,
+              ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi,
+              ue_context_p->ue_context.ul_failure_timer);
+      }
+      else {
+        LOG_I(RRC,"UE rnti %x failure timer %d/8\n",
+              ue_context_p->ue_context.rnti,
+              ue_context_p->ue_context.ul_failure_timer);
+      }
+    }
 
-    check_handovers(ctxt_pP);
-    // counetr, and get the value and aggregate
+    if (ue_context_p->ue_context.ul_failure_timer>0) {
+      ue_context_p->ue_context.ul_failure_timer++;
 
-    // check for UL failure
-    RB_FOREACH(ue_context_p, rrc_ue_tree_s, &(RC.rrc[ctxt_pP->module_id]->rrc_ue_head)) {
-      if ((ctxt_pP->frame == 0) && (ctxt_pP->subframe==0)) {
-	if (ue_context_p->ue_context.Initialue_identity_s_TMSI.presence == TRUE) {
-	  LOG_I(RRC,"UE rnti %x:S-TMSI %x failure timer %d/8\n",
-		ue_context_p->ue_context.rnti,
-		ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi,
-		ue_context_p->ue_context.ul_failure_timer);
-	}
-	else {
-	  LOG_I(RRC,"UE rnti %x failure timer %d/8\n",
-		ue_context_p->ue_context.rnti,
-		ue_context_p->ue_context.ul_failure_timer);
-	}
-      }
-      if (ue_context_p->ue_context.ul_failure_timer>0) {
-	ue_context_p->ue_context.ul_failure_timer++;
-	if (ue_context_p->ue_context.ul_failure_timer >= 8) {
-	  // remove UE after 20 seconds after MAC has indicated UL failure
-	  LOG_I(RRC,"Removing UE %x instance\n",ue_context_p->ue_context.rnti);
-	  ue_to_be_removed = ue_context_p;
-	  break;
-	}
+      if (ue_context_p->ue_context.ul_failure_timer >= 8) {
+        // remove UE after 20 seconds after MAC has indicated UL failure
+        LOG_I(RRC,"Removing UE %x instance\n",ue_context_p->ue_context.rnti);
+        ue_to_be_removed = ue_context_p;
+        break;
       }
-      if (ue_context_p->ue_context.ue_release_timer_s1>0) {
-        ue_context_p->ue_context.ue_release_timer_s1++;
-        if (ue_context_p->ue_context.ue_release_timer_s1 >=
-            ue_context_p->ue_context.ue_release_timer_thres_s1) {
-          LOG_I(RRC,"Removing UE %x instance Because of UE_CONTEXT_RELEASE_COMMAND not received after %d ms from sending request\n",
-                         ue_context_p->ue_context.rnti, ue_context_p->ue_context.ue_release_timer_thres_s1);
-          ue_to_be_removed = ue_context_p;
-          break;
-        }
+    }
+
+    if (ue_context_p->ue_context.ue_release_timer_s1>0) {
+      ue_context_p->ue_context.ue_release_timer_s1++;
+
+      if (ue_context_p->ue_context.ue_release_timer_s1 >=
+          ue_context_p->ue_context.ue_release_timer_thres_s1) {
+        LOG_I(RRC,"Removing UE %x instance Because of UE_CONTEXT_RELEASE_COMMAND not received after %d ms from sending request\n",
+              ue_context_p->ue_context.rnti, ue_context_p->ue_context.ue_release_timer_thres_s1);
+        ue_to_be_removed = ue_context_p;
+        break;
       }
+    }
 
-      if (ue_context_p->ue_context.ue_release_timer_rrc>0) {
-        ue_context_p->ue_context.ue_release_timer_rrc++;
-        if (ue_context_p->ue_context.ue_release_timer_rrc >=
+    if (ue_context_p->ue_context.ue_release_timer_rrc>0) {
+      ue_context_p->ue_context.ue_release_timer_rrc++;
+
+      if (ue_context_p->ue_context.ue_release_timer_rrc >=
           ue_context_p->ue_context.ue_release_timer_thres_rrc) {
-          LOG_I(RRC,"Removing UE %x instance After UE_CONTEXT_RELEASE_Complete\n", ue_context_p->ue_context.rnti);
-          ue_to_be_removed = ue_context_p;
-          break;
-        }
+        LOG_I(RRC,"Removing UE %x instance After UE_CONTEXT_RELEASE_Complete\n", ue_context_p->ue_context.rnti);
+        ue_to_be_removed = ue_context_p;
+        break;
       }
+    }
 
-      if (ue_context_p->ue_context.ue_reestablishment_timer>0) {
-        ue_context_p->ue_context.ue_reestablishment_timer++;
-        if (ue_context_p->ue_context.ue_reestablishment_timer >=
-            ue_context_p->ue_context.ue_reestablishment_timer_thres) {
-          LOG_I(RRC,"UE %d reestablishment_timer max\n",ue_context_p->ue_context.rnti);
-          ue_context_p->ue_context.ul_failure_timer = 20000;
-          ue_to_be_removed = ue_context_p;
-          ue_context_p->ue_context.ue_reestablishment_timer = 0;
-          break;
-        }
-      }
-      if (ue_context_p->ue_context.ue_release_timer>0) {
-	ue_context_p->ue_context.ue_release_timer++;
-	if (ue_context_p->ue_context.ue_release_timer >= 
-	    ue_context_p->ue_context.ue_release_timer_thres) {
-	  LOG_I(RRC,"Removing UE %x instance\n",ue_context_p->ue_context.rnti);
-	  ue_to_be_removed = ue_context_p;
-	  break;
-	}
+    if (ue_context_p->ue_context.ue_reestablishment_timer>0) {
+      ue_context_p->ue_context.ue_reestablishment_timer++;
+
+      if (ue_context_p->ue_context.ue_reestablishment_timer >=
+          ue_context_p->ue_context.ue_reestablishment_timer_thres) {
+        LOG_I(RRC,"UE %d reestablishment_timer max\n",ue_context_p->ue_context.rnti);
+        ue_context_p->ue_context.ul_failure_timer = 20000;
+        ue_to_be_removed = ue_context_p;
+        ue_context_p->ue_context.ue_reestablishment_timer = 0;
+        break;
       }
     }
-    if (ue_to_be_removed) {
-      if(ue_to_be_removed->ue_context.ul_failure_timer >= 8) {
-          ue_to_be_removed->ue_context.ue_release_timer_s1 = 1;
-          ue_to_be_removed->ue_context.ue_release_timer_thres_s1 = 100;
-          ue_to_be_removed->ue_context.ue_release_timer = 0;
-          ue_to_be_removed->ue_context.ue_reestablishment_timer = 0;
-      }
-      rrc_eNB_free_UE(ctxt_pP->module_id,ue_to_be_removed);
-      if(ue_to_be_removed->ue_context.ul_failure_timer >= 8){
-        ue_to_be_removed->ue_context.ul_failure_timer = 0;
+
+    if (ue_context_p->ue_context.ue_release_timer>0) {
+      ue_context_p->ue_context.ue_release_timer++;
+
+      if (ue_context_p->ue_context.ue_release_timer >=
+          ue_context_p->ue_context.ue_release_timer_thres) {
+        LOG_I(RRC,"Removing UE %x instance\n",ue_context_p->ue_context.rnti);
+        ue_to_be_removed = ue_context_p;
+        break;
       }
     }
+  }
 
-#ifdef RRC_LOCALIZATION
+  if (ue_to_be_removed) {
+    if(ue_to_be_removed->ue_context.ul_failure_timer >= 8) {
+      ue_to_be_removed->ue_context.ue_release_timer_s1 = 1;
+      ue_to_be_removed->ue_context.ue_release_timer_thres_s1 = 100;
+      ue_to_be_removed->ue_context.ue_release_timer = 0;
+      ue_to_be_removed->ue_context.ue_reestablishment_timer = 0;
+    }
 
-    /* for the localization, only primary CC_id might be relevant*/
-    gettimeofday(&ts, NULL);
-    current_timestamp_ms = ts.tv_sec * 1000 + ts.tv_usec / 1000;
-    ref_timestamp_ms = RC.rrc[ctxt_pP->module_id]->reference_timestamp_ms;
-    RB_FOREACH(ue_context_p, rrc_ue_tree_s, &(RC.rrc[ctxt_pP->module_id]->rrc_ue_head)) {
-      ctxt = *ctxt_pP;
-      ctxt.rnti = ue_context_p->ue_context.rnti;
-      estimated_distance = rrc_get_estimated_ue_distance(
-                             &ctxt,
-                             CC_id,
-                             RC.rrc[ctxt_pP->module_id]->loc_type);
-
-      if ((current_timestamp_ms - ref_timestamp_ms > RC.rrc[ctxt_pP->module_id]->aggregation_period_ms) &&
-          estimated_distance != -1) {
-        LOG_D(LOCALIZE, " RRC [UE/id %d -> eNB/id %d] timestamp %d frame %d estimated r = %f\n",
-              ctxt.rnti,
-              ctxt_pP->module_id,
-              current_timestamp_ms,
-              ctxt_pP->frame,
-              estimated_distance);
-        LOG_D(LOCALIZE, " RRC status %d\n", ue_context_p->ue_context.Status);
-        push_front(&RC.rrc[ctxt_pP->module_id]->loc_list,
-                   estimated_distance);
-        RC.rrc[ctxt_pP->module_id]->reference_timestamp_ms = current_timestamp_ms;
-      }
+    rrc_eNB_free_UE(ctxt_pP->module_id,ue_to_be_removed);
+
+    if(ue_to_be_removed->ue_context.ul_failure_timer >= 8) {
+      ue_to_be_removed->ue_context.ul_failure_timer = 0;
     }
+  }
 
+#ifdef RRC_LOCALIZATION
+  /* for the localization, only primary CC_id might be relevant*/
+  gettimeofday(&ts, NULL);
+  current_timestamp_ms = ts.tv_sec * 1000 + ts.tv_usec / 1000;
+  ref_timestamp_ms = RC.rrc[ctxt_pP->module_id]->reference_timestamp_ms;
+  RB_FOREACH(ue_context_p, rrc_ue_tree_s, &(RC.rrc[ctxt_pP->module_id]->rrc_ue_head)) {
+    ctxt = *ctxt_pP;
+    ctxt.rnti = ue_context_p->ue_context.rnti;
+    estimated_distance = rrc_get_estimated_ue_distance(
+                           &ctxt,
+                           CC_id,
+                           RC.rrc[ctxt_pP->module_id]->loc_type);
+
+    if ((current_timestamp_ms - ref_timestamp_ms > RC.rrc[ctxt_pP->module_id]->aggregation_period_ms) &&
+        estimated_distance != -1) {
+      LOG_D(LOCALIZE, " RRC [UE/id %d -> eNB/id %d] timestamp %d frame %d estimated r = %f\n",
+            ctxt.rnti,
+            ctxt_pP->module_id,
+            current_timestamp_ms,
+            ctxt_pP->frame,
+            estimated_distance);
+      LOG_D(LOCALIZE, " RRC status %d\n", ue_context_p->ue_context.Status);
+      push_front(&RC.rrc[ctxt_pP->module_id]->loc_list,
+                 estimated_distance);
+      RC.rrc[ctxt_pP->module_id]->reference_timestamp_ms = current_timestamp_ms;
+    }
+  }
 #endif
-    (void)ts; /* remove gcc warning "unused variable" */
-    (void)ref_timestamp_ms; /* remove gcc warning "unused variable" */
-    (void)current_timestamp_ms; /* remove gcc warning "unused variable" */
-
+  (void)ts; /* remove gcc warning "unused variable" */
+  (void)ref_timestamp_ms; /* remove gcc warning "unused variable" */
+  (void)current_timestamp_ms; /* remove gcc warning "unused variable" */
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
   return (RRC_OK);
 }
diff --git a/openair2/RRC/LITE/rrc_eNB_S1AP.c b/openair2/RRC/LITE/rrc_eNB_S1AP.c
index 80ae1c9ba57e9e276f5f4581c6dea7c9c7e49bec..0ef840ee4269cb079d8053de6ae75bb867869a67 100644
--- a/openair2/RRC/LITE/rrc_eNB_S1AP.c
+++ b/openair2/RRC/LITE/rrc_eNB_S1AP.c
@@ -60,7 +60,7 @@
 #include "RRC/LITE/rrc_eNB_GTPV1U.h"
 
 #include "TLVDecoder.h"
-#include "S1ap-NAS-PDU.h"
+#include "S1AP_NAS-PDU.h"
 #include "flexran_agent_common_internal.h"
 
 extern RAN_CONTEXT_t RC;
@@ -91,18 +91,16 @@ void extract_imsi(uint8_t *pdu_buf, uint32_t pdu_len, rrc_eNB_ue_context_t *ue_c
   /* Process NAS message locally to get the IMSI */
   nas_message_t nas_msg;
   memset(&nas_msg, 0, sizeof(nas_message_t));
-
   int size = 0;
-
   nas_message_security_header_t *header = &nas_msg.header;
   /* Decode the first octet of the header (security header type or EPS
   * bearer identity, and protocol discriminator) */
-  DECODE_U8((char *) pdu_buf, *(uint8_t*) (header), size);
+  DECODE_U8((char *) pdu_buf, *(uint8_t *) (header), size);
 
   /* Decode NAS message only if decodable*/
   if (!(header->security_header_type <= SECURITY_HEADER_TYPE_INTEGRITY_PROTECTED
-      && header->protocol_discriminator == EPS_MOBILITY_MANAGEMENT_MESSAGE
-      && pdu_len > NAS_MESSAGE_SECURITY_HEADER_SIZE))
+        && header->protocol_discriminator == EPS_MOBILITY_MANAGEMENT_MESSAGE
+        && pdu_len > NAS_MESSAGE_SECURITY_HEADER_SIZE))
     return;
 
   if (header->security_header_type != SECURITY_HEADER_TYPE_NOT_PROTECTED) {
@@ -116,11 +114,9 @@ void extract_imsi(uint8_t *pdu_buf, uint32_t pdu_len, rrc_eNB_ue_context_t *ue_c
    * can modify it as we want. The callee retains the original address! */
   pdu_buf += size;
   pdu_len -= size;
-
   /* Decode plain NAS message */
   EMM_msg *e_msg = &nas_msg.plain.emm;
   emm_msg_header_t *emm_header = &e_msg->header;
-
   /* First decode the EMM message header */
   int e_head_size = 0;
 
@@ -163,9 +159,9 @@ void extract_imsi(uint8_t *pdu_buf, uint32_t pdu_len, rrc_eNB_ue_context_t *ue_c
 
 # if defined(ENABLE_ITTI)
 //------------------------------------------------------------------------------
-struct rrc_ue_s1ap_ids_s*
+struct rrc_ue_s1ap_ids_s *
 rrc_eNB_S1AP_get_ue_ids(
-  eNB_RRC_INST* const rrc_instance_pP,
+  eNB_RRC_INST *const rrc_instance_pP,
   const uint16_t ue_initial_id,
   const uint32_t eNB_ue_s1ap_id
 )
@@ -177,44 +173,51 @@ rrc_eNB_S1AP_get_ue_ids(
 
   // we assume that a rrc_ue_s1ap_ids_s is initially inserted in initial_id2_s1ap_ids
   if (eNB_ue_s1ap_id > 0) {
-	h_rc = hashtable_get(rrc_instance_pP->s1ap_id2_s1ap_ids, (hash_key_t)eNB_ue_s1ap_id, (void**)&result);
+    h_rc = hashtable_get(rrc_instance_pP->s1ap_id2_s1ap_ids, (hash_key_t)eNB_ue_s1ap_id, (void **)&result);
   }
+
   if (ue_initial_id != UE_INITIAL_ID_INVALID) {
-    h_rc = hashtable_get(rrc_instance_pP->initial_id2_s1ap_ids, (hash_key_t)ue_initial_id, (void**)&result);
-	if  (h_rc == HASH_TABLE_OK) {
-	  if (eNB_ue_s1ap_id > 0) {
-	    h_rc = hashtable_get(rrc_instance_pP->s1ap_id2_s1ap_ids, (hash_key_t)eNB_ue_s1ap_id, (void**)&result2);
-	    if  (h_rc != HASH_TABLE_OK) {
-		  result2 = malloc(sizeof(*result2));
-		  if (NULL != result2) {
-		    *result2 = *result;
-		    result2->eNB_ue_s1ap_id = eNB_ue_s1ap_id;
-		    result->eNB_ue_s1ap_id  = eNB_ue_s1ap_id;
+    h_rc = hashtable_get(rrc_instance_pP->initial_id2_s1ap_ids, (hash_key_t)ue_initial_id, (void **)&result);
+
+    if  (h_rc == HASH_TABLE_OK) {
+      if (eNB_ue_s1ap_id > 0) {
+        h_rc = hashtable_get(rrc_instance_pP->s1ap_id2_s1ap_ids, (hash_key_t)eNB_ue_s1ap_id, (void **)&result2);
+
+        if  (h_rc != HASH_TABLE_OK) {
+          result2 = malloc(sizeof(*result2));
+
+          if (NULL != result2) {
+            *result2 = *result;
+            result2->eNB_ue_s1ap_id = eNB_ue_s1ap_id;
+            result->eNB_ue_s1ap_id  = eNB_ue_s1ap_id;
             h_rc = hashtable_insert(rrc_instance_pP->s1ap_id2_s1ap_ids,
-		    		               (hash_key_t)eNB_ue_s1ap_id,
-		    		               result2);
+                                    (hash_key_t)eNB_ue_s1ap_id,
+                                    result2);
+
             if (h_rc != HASH_TABLE_OK) {
               LOG_E(S1AP, "[eNB %ld] Error while hashtable_insert in s1ap_id2_s1ap_ids eNB_ue_s1ap_id %"PRIu32"\n",
-		    		  rrc_instance_pP - RC.rrc[0], eNB_ue_s1ap_id);
+                    rrc_instance_pP - RC.rrc[0], eNB_ue_s1ap_id);
             }
-		  }
-		}
-	  }
-	}
+          }
+        }
+      }
+    }
   }
+
   return result;
 }
 //------------------------------------------------------------------------------
 void
 rrc_eNB_S1AP_remove_ue_ids(
-  eNB_RRC_INST*              const rrc_instance_pP,
-  struct rrc_ue_s1ap_ids_s* const ue_ids_pP
+  eNB_RRC_INST              *const rrc_instance_pP,
+  struct rrc_ue_s1ap_ids_s *const ue_ids_pP
 )
 //------------------------------------------------------------------------------
 {
   const uint16_t ue_initial_id  = ue_ids_pP->ue_initial_id;
   const uint32_t eNB_ue_s1ap_id = ue_ids_pP->eNB_ue_s1ap_id;
   hashtable_rc_t h_rc;
+
   if (rrc_instance_pP == NULL) {
     LOG_E(RRC, "Bad RRC instance\n");
     return;
@@ -226,21 +229,23 @@ rrc_eNB_S1AP_remove_ue_ids(
   }
 
   if (eNB_ue_s1ap_id > 0) {
-	h_rc = hashtable_remove(rrc_instance_pP->s1ap_id2_s1ap_ids, (hash_key_t)eNB_ue_s1ap_id);
-	if (h_rc != HASH_TABLE_OK) {
-	  LOG_W(RRC, "S1AP Did not find entry in hashtable s1ap_id2_s1ap_ids for eNB_ue_s1ap_id %u\n", eNB_ue_s1ap_id);
-	} else {
-	  LOG_W(RRC, "S1AP removed entry in hashtable s1ap_id2_s1ap_ids for eNB_ue_s1ap_id %u\n", eNB_ue_s1ap_id);
-	}
+    h_rc = hashtable_remove(rrc_instance_pP->s1ap_id2_s1ap_ids, (hash_key_t)eNB_ue_s1ap_id);
+
+    if (h_rc != HASH_TABLE_OK) {
+      LOG_W(RRC, "S1AP Did not find entry in hashtable s1ap_id2_s1ap_ids for eNB_ue_s1ap_id %u\n", eNB_ue_s1ap_id);
+    } else {
+      LOG_W(RRC, "S1AP removed entry in hashtable s1ap_id2_s1ap_ids for eNB_ue_s1ap_id %u\n", eNB_ue_s1ap_id);
+    }
   }
 
   if (ue_initial_id != UE_INITIAL_ID_INVALID) {
     h_rc = hashtable_remove(rrc_instance_pP->initial_id2_s1ap_ids, (hash_key_t)ue_initial_id);
-	if (h_rc != HASH_TABLE_OK) {
-	  LOG_W(RRC, "S1AP Did not find entry in hashtable initial_id2_s1ap_ids for ue_initial_id %u\n", ue_initial_id);
-	} else {
-	  LOG_W(RRC, "S1AP removed entry in hashtable initial_id2_s1ap_ids for ue_initial_id %u\n", ue_initial_id);
-	}
+
+    if (h_rc != HASH_TABLE_OK) {
+      LOG_W(RRC, "S1AP Did not find entry in hashtable initial_id2_s1ap_ids for ue_initial_id %u\n", ue_initial_id);
+    } else {
+      LOG_W(RRC, "S1AP removed entry in hashtable initial_id2_s1ap_ids for ue_initial_id %u\n", ue_initial_id);
+    }
   }
 }
 
@@ -278,14 +283,14 @@ get_next_ue_initial_id(
  *\param eNB_ue_s1ap_id The value sent by S1AP.
  *\return the UE index or UE_INDEX_INVALID if not found.
  */
-static struct rrc_eNB_ue_context_s*
+static struct rrc_eNB_ue_context_s *
 rrc_eNB_get_ue_context_from_s1ap_ids(
   const instance_t  instanceP,
   const uint16_t    ue_initial_idP,
   const uint32_t    eNB_ue_s1ap_idP
 )
 {
-  rrc_ue_s1ap_ids_t* temp = NULL;
+  rrc_ue_s1ap_ids_t *temp = NULL;
   temp =
     rrc_eNB_S1AP_get_ue_ids(
       RC.rrc[ENB_INSTANCE_TO_MODULE_ID(instanceP)],
@@ -293,7 +298,6 @@ rrc_eNB_get_ue_context_from_s1ap_ids(
       eNB_ue_s1ap_idP);
 
   if (temp) {
-
     return rrc_eNB_get_ue_context(
              RC.rrc[ENB_INSTANCE_TO_MODULE_ID(instanceP)],
              temp->ue_rnti);
@@ -309,8 +313,7 @@ rrc_eNB_get_ue_context_from_s1ap_ids(
  */
 static CipheringAlgorithm_r12_t rrc_eNB_select_ciphering(uint16_t algorithms)
 {
-
-//#warning "Forced   return SecurityAlgorithmConfig__cipheringAlgorithm_eea0, to be deleted in future"
+  //#warning "Forced   return SecurityAlgorithmConfig__cipheringAlgorithm_eea0, to be deleted in future"
   return CipheringAlgorithm_r12_eea0;
 
   if (algorithms & S1AP_ENCRYPTION_EEA2_MASK) {
@@ -331,7 +334,6 @@ static CipheringAlgorithm_r12_t rrc_eNB_select_ciphering(uint16_t algorithms)
  */
 static e_SecurityAlgorithmConfig__integrityProtAlgorithm rrc_eNB_select_integrity(uint16_t algorithms)
 {
-
   if (algorithms & S1AP_INTEGRITY_EIA2_MASK) {
     return SecurityAlgorithmConfig__integrityProtAlgorithm_eia2;
   }
@@ -352,18 +354,16 @@ static e_SecurityAlgorithmConfig__integrityProtAlgorithm rrc_eNB_select_integrit
  */
 static int
 rrc_eNB_process_security(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*          const ue_context_pP,
-  security_capabilities_t* security_capabilities_pP
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t          *const ue_context_pP,
+  security_capabilities_t *security_capabilities_pP
 )
 {
   boolean_t                                         changed = FALSE;
   CipheringAlgorithm_r12_t                          cipheringAlgorithm;
   e_SecurityAlgorithmConfig__integrityProtAlgorithm integrityProtAlgorithm;
-
   /* Save security parameters */
   ue_context_pP->ue_context.security_capabilities = *security_capabilities_pP;
-
   // translation
   LOG_D(RRC,
         "[eNB %d] NAS security_capabilities.encryption_algorithms %u AS ciphering_algorithm %lu NAS security_capabilities.integrity_algorithms %u AS integrity_algorithm %u\n",
@@ -394,7 +394,6 @@ rrc_eNB_process_security(
          (unsigned long)cipheringAlgorithm,
          integrityProtAlgorithm,
          changed ? "changed" : "same");
-
   return changed;
 }
 
@@ -406,16 +405,15 @@ rrc_eNB_process_security(
  */
 //------------------------------------------------------------------------------
 static void process_eNB_security_key (
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*          const ue_context_pP,
-  uint8_t*               security_key_pP
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t          *const ue_context_pP,
+  uint8_t               *security_key_pP
 )
 //------------------------------------------------------------------------------
 {
 #if defined(ENABLE_SECURITY)
   char ascii_buffer[65];
   uint8_t i;
-
   /* Saves the security key */
   memcpy (ue_context_pP->ue_context.kenb, security_key_pP, SECURITY_KEY_LENGTH);
   memset (ue_context_pP->ue_context.nh, 0, SECURITY_KEY_LENGTH);
@@ -426,7 +424,6 @@ static void process_eNB_security_key (
   }
 
   ascii_buffer[2 * i] = '\0';
-
   LOG_I (RRC, "[eNB %d][UE %x] Saved security key %s\n", ctxt_pP->module_id, ue_context_pP->ue_context.rnti, ascii_buffer);
 #endif
 }
@@ -435,17 +432,14 @@ static void process_eNB_security_key (
 //------------------------------------------------------------------------------
 void
 rrc_pdcp_config_security(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*          const ue_context_pP,
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t          *const ue_context_pP,
   const uint8_t send_security_mode_command
 )
 //------------------------------------------------------------------------------
 {
-
 #if defined(ENABLE_SECURITY)
-
-
-  SRB_ToAddModList_t*                 SRB_configList = ue_context_pP->ue_context.SRB_configList;
+  SRB_ToAddModList_t                 *SRB_configList = ue_context_pP->ue_context.SRB_configList;
   uint8_t                            *kRRCenc = NULL;
   uint8_t                            *kRRCint = NULL;
   uint8_t                            *kUPenc = NULL;
@@ -467,11 +461,9 @@ rrc_pdcp_config_security(
   derive_key_rrc_int(ue_context_pP->ue_context.integrity_algorithm,
                      ue_context_pP->ue_context.kenb,
                      &kRRCint);
-
 #if !defined(USRP_REC_PLAY)
 #define DEBUG_SECURITY 1
 #endif
-  
 #if defined (DEBUG_SECURITY)
 #undef msg
 #define msg printf
@@ -486,7 +478,6 @@ rrc_pdcp_config_security(
     }
 
     msg("\n");
-
     msg("\nKRRCenc:");
 
     for(i = 0; i < 32; i++) {
@@ -494,7 +485,6 @@ rrc_pdcp_config_security(
     }
 
     msg("\n");
-
     msg("\nKRRCint:");
 
     for(i = 0; i < 32; i++) {
@@ -502,13 +492,11 @@ rrc_pdcp_config_security(
     }
 
     msg("\n");
-
   }
 
 #endif //DEBUG_SECURITY
   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);
-
+  h_rc = hashtable_get(pdcp_coll_p, key, (void **)&pdcp_p);
 
   if (h_rc == HASH_TABLE_OK) {
     pdcp_config_set_security(
@@ -536,8 +524,8 @@ rrc_pdcp_config_security(
 //------------------------------------------------------------------------------
 void
 rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*          const ue_context_pP
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t          *const ue_context_pP
 )
 //------------------------------------------------------------------------------
 {
@@ -545,7 +533,6 @@ rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP(
   int e_rab;
   int e_rabs_done = 0;
   int e_rabs_failed = 0;
-
   msg_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_INITIAL_CONTEXT_SETUP_RESP);
   S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
 
@@ -576,11 +563,8 @@ rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP(
     ue_context_pP->ue_id_rnti,
     S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).eNB_ue_s1ap_id,
     e_rabs_done, e_rabs_failed);
-
-
   S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).nb_of_e_rabs = e_rabs_done;
   S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).nb_of_e_rabs_failed = e_rabs_failed;
-
   itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
 }
 # endif
@@ -588,9 +572,9 @@ rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP(
 //------------------------------------------------------------------------------
 void
 rrc_eNB_send_S1AP_UPLINK_NAS(
-  const protocol_ctxt_t*    const ctxt_pP,
-  rrc_eNB_ue_context_t*             const ue_context_pP,
-  UL_DCCH_Message_t*        const ul_dcch_msg
+  const protocol_ctxt_t    *const ctxt_pP,
+  rrc_eNB_ue_context_t             *const ue_context_pP,
+  UL_DCCH_Message_t        *const ul_dcch_msg
 )
 //------------------------------------------------------------------------------
 {
@@ -605,23 +589,19 @@ rrc_eNB_send_S1AP_UPLINK_NAS(
     == ULInformationTransfer_r8_IEs__dedicatedInfoType_PR_dedicatedInfoNAS)) {
       /* This message hold a dedicated info NAS payload, forward it to NAS */
       struct ULInformationTransfer_r8_IEs__dedicatedInfoType *dedicatedInfoType =
-          &ulInformationTransfer->criticalExtensions.choice.c1.choice.ulInformationTransfer_r8.dedicatedInfoType;
+        &ulInformationTransfer->criticalExtensions.choice.c1.choice.ulInformationTransfer_r8.dedicatedInfoType;
       uint32_t pdu_length;
       uint8_t *pdu_buffer;
       MessageDef *msg_p;
-
       pdu_length = dedicatedInfoType->choice.dedicatedInfoNAS.size;
       pdu_buffer = dedicatedInfoType->choice.dedicatedInfoNAS.buf;
-
       msg_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_UPLINK_NAS);
       S1AP_UPLINK_NAS (msg_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
       S1AP_UPLINK_NAS (msg_p).nas_pdu.length = pdu_length;
       S1AP_UPLINK_NAS (msg_p).nas_pdu.buffer = pdu_buffer;
-
       extract_imsi(S1AP_UPLINK_NAS (msg_p).nas_pdu.buffer,
-                   S1AP_UPLINK_NAS (msg_p).nas_pdu.length,
-                   ue_context_pP);
-
+      S1AP_UPLINK_NAS (msg_p).nas_pdu.length,
+      ue_context_pP);
       itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
     }
   }
@@ -636,7 +616,6 @@ rrc_eNB_send_S1AP_UPLINK_NAS(
     ULInformationTransfer__criticalExtensions_PR_c1) {
       if (ulInformationTransfer->criticalExtensions.choice.c1.present ==
       ULInformationTransfer__criticalExtensions__c1_PR_ulInformationTransfer_r8) {
-
         ULInformationTransfer_r8_IEs_t
         *ulInformationTransferR8;
         ulInformationTransferR8 =
@@ -644,15 +623,13 @@ rrc_eNB_send_S1AP_UPLINK_NAS(
         c1.choice.ulInformationTransfer_r8;
 
         if (ulInformationTransferR8->dedicatedInfoType.present ==
-            ULInformationTransfer_r8_IEs__dedicatedInfoType_PR_dedicatedInfoNAS) {
-
+        ULInformationTransfer_r8_IEs__dedicatedInfoType_PR_dedicatedInfoNAS) {
           extract_imsi(ulInformationTransferR8->dedicatedInfoType.choice.dedicatedInfoNAS.buf,
-                       ulInformationTransferR8->dedicatedInfoType.choice.dedicatedInfoNAS.size,
-                       ue_context_pP);
-
+          ulInformationTransferR8->dedicatedInfoType.choice.dedicatedInfoNAS.size,
+          ue_context_pP);
           s1ap_eNB_new_data_request (mod_id, ue_index,
-              ulInformationTransferR8->dedicatedInfoType.choice.dedicatedInfoNAS.buf,
-              ulInformationTransferR8->dedicatedInfoType.choice.dedicatedInfoNAS.size);
+          ulInformationTransferR8->dedicatedInfoType.choice.dedicatedInfoNAS.buf,
+          ulInformationTransferR8->dedicatedInfoType.choice.dedicatedInfoNAS.size);
         }
       }
     }
@@ -662,9 +639,9 @@ rrc_eNB_send_S1AP_UPLINK_NAS(
 
 //------------------------------------------------------------------------------
 void rrc_eNB_send_S1AP_UE_CAPABILITIES_IND(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*          const ue_context_pP,
-  UL_DCCH_Message_t* ul_dcch_msg
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t          *const ue_context_pP,
+  UL_DCCH_Message_t *ul_dcch_msg
 )
 //------------------------------------------------------------------------------
 {
@@ -680,39 +657,39 @@ void rrc_eNB_send_S1AP_UE_CAPABILITIES_IND(
     return;
   }
 
-  asn_enc_rval_t ret = uper_encode_to_buffer(&asn_DEF_UECapabilityInformation, ueCapabilityInformation, buf, 4096);
+  asn_enc_rval_t ret = uper_encode_to_buffer(&asn_DEF_UECapabilityInformation, NULL, ueCapabilityInformation, buf, 4096);
+
   if (ret.encoded == -1) abort();
 
   memset(&rac, 0, sizeof(UERadioAccessCapabilityInformation_t));
-
   rac.criticalExtensions.present = UERadioAccessCapabilityInformation__criticalExtensions_PR_c1;
   rac.criticalExtensions.choice.c1.present = UERadioAccessCapabilityInformation__criticalExtensions__c1_PR_ueRadioAccessCapabilityInformation_r8;
   rac.criticalExtensions.choice.c1.choice.ueRadioAccessCapabilityInformation_r8.ue_RadioAccessCapabilityInfo.buf = buf;
   rac.criticalExtensions.choice.c1.choice.ueRadioAccessCapabilityInformation_r8.ue_RadioAccessCapabilityInfo.size = (ret.encoded+7)/8;
   rac.criticalExtensions.choice.c1.choice.ueRadioAccessCapabilityInformation_r8.nonCriticalExtension = NULL;
-
   /* 8192 is arbitrary, should be big enough */
   buf2 = malloc16(8192);
+
   if (buf2 == NULL) abort();
-  ret = uper_encode_to_buffer(&asn_DEF_UERadioAccessCapabilityInformation, &rac, buf2, 8192);
+
+  ret = uper_encode_to_buffer(&asn_DEF_UERadioAccessCapabilityInformation, NULL, &rac, buf2, 8192);
+
   if (ret.encoded == -1) abort();
 
   MessageDef *msg_p;
-
   msg_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_UE_CAPABILITIES_IND);
   S1AP_UE_CAPABILITIES_IND (msg_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
   S1AP_UE_CAPABILITIES_IND (msg_p).ue_radio_cap.length = (ret.encoded+7)/8;
   S1AP_UE_CAPABILITIES_IND (msg_p).ue_radio_cap.buffer = buf2;
-
   itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
 }
 
 //------------------------------------------------------------------------------
 void
 rrc_eNB_send_S1AP_NAS_FIRST_REQ(
-  const protocol_ctxt_t* const ctxt_pP,
-  rrc_eNB_ue_context_t*          const ue_context_pP,
-  RRCConnectionSetupComplete_r8_IEs_t* rrcConnectionSetupComplete
+  const protocol_ctxt_t *const ctxt_pP,
+  rrc_eNB_ue_context_t          *const ue_context_pP,
+  RRCConnectionSetupComplete_r8_IEs_t *rrcConnectionSetupComplete
 )
 //------------------------------------------------------------------------------
 
@@ -721,67 +698,58 @@ rrc_eNB_send_S1AP_NAS_FIRST_REQ(
   eNB_RRC_INST *rrc=RC.rrc[ctxt_pP->module_id];
 #if defined(ENABLE_ITTI)
   {
-    MessageDef*         message_p         = NULL;
-    rrc_ue_s1ap_ids_t*  rrc_ue_s1ap_ids_p = NULL;
+    MessageDef         *message_p         = NULL;
+    rrc_ue_s1ap_ids_t  *rrc_ue_s1ap_ids_p = NULL;
     hashtable_rc_t      h_rc;
-
     message_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_NAS_FIRST_REQ);
     memset(&message_p->ittiMsg.s1ap_nas_first_req, 0, sizeof(s1ap_nas_first_req_t));
-
     ue_context_pP->ue_context.ue_initial_id = get_next_ue_initial_id (ctxt_pP->module_id);
     S1AP_NAS_FIRST_REQ (message_p).ue_initial_id = ue_context_pP->ue_context.ue_initial_id;
-
     rrc_ue_s1ap_ids_p = malloc(sizeof(*rrc_ue_s1ap_ids_p));
     rrc_ue_s1ap_ids_p->ue_initial_id  = ue_context_pP->ue_context.ue_initial_id;
     rrc_ue_s1ap_ids_p->eNB_ue_s1ap_id = UE_INITIAL_ID_INVALID;
     rrc_ue_s1ap_ids_p->ue_rnti        = ctxt_pP->rnti;
-
     h_rc = hashtable_insert(RC.rrc[ctxt_pP->module_id]->initial_id2_s1ap_ids,
-    		               (hash_key_t)ue_context_pP->ue_context.ue_initial_id,
-    		               rrc_ue_s1ap_ids_p);
+                            (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);
+            ctxt_pP->module_id, ue_context_pP->ue_context.ue_initial_id);
     }
 
     /* Assume that cause is coded in the same way in RRC and S1ap, just check that the value is in S1ap range */
     AssertFatal(ue_context_pP->ue_context.establishment_cause < RRC_CAUSE_LAST,
-    "Establishment cause invalid (%jd/%d) for eNB %d!",
-    ue_context_pP->ue_context.establishment_cause, RRC_CAUSE_LAST, ctxt_pP->module_id);
-
+                "Establishment cause invalid (%jd/%d) for eNB %d!",
+                ue_context_pP->ue_context.establishment_cause, RRC_CAUSE_LAST, ctxt_pP->module_id);
     S1AP_NAS_FIRST_REQ (message_p).establishment_cause = ue_context_pP->ue_context.establishment_cause;
-
     /* Forward NAS message */S1AP_NAS_FIRST_REQ (message_p).nas_pdu.buffer =
-    rrcConnectionSetupComplete->dedicatedInfoNAS.buf;
+      rrcConnectionSetupComplete->dedicatedInfoNAS.buf;
     S1AP_NAS_FIRST_REQ (message_p).nas_pdu.length = rrcConnectionSetupComplete->dedicatedInfoNAS.size;
-
     extract_imsi(S1AP_NAS_FIRST_REQ (message_p).nas_pdu.buffer,
                  S1AP_NAS_FIRST_REQ (message_p).nas_pdu.length,
                  ue_context_pP);
-
     /* Fill UE identities with available information */
     {
       S1AP_NAS_FIRST_REQ (message_p).ue_identity.presenceMask = UE_IDENTITIES_NONE;
 
       if (ue_context_pP->ue_context.Initialue_identity_s_TMSI.presence) {
         /* Fill s-TMSI */
-        UE_S_TMSI* s_TMSI = &ue_context_pP->ue_context.Initialue_identity_s_TMSI;
-
+        UE_S_TMSI *s_TMSI = &ue_context_pP->ue_context.Initialue_identity_s_TMSI;
         S1AP_NAS_FIRST_REQ (message_p).ue_identity.presenceMask |= UE_IDENTITIES_s_tmsi;
         S1AP_NAS_FIRST_REQ (message_p).ue_identity.s_tmsi.mme_code = s_TMSI->mme_code;
         S1AP_NAS_FIRST_REQ (message_p).ue_identity.s_tmsi.m_tmsi = s_TMSI->m_tmsi;
         LOG_I(S1AP, "[eNB %d] Build S1AP_NAS_FIRST_REQ with s_TMSI: MME code %u M-TMSI %u ue %x\n",
-            ctxt_pP->module_id,
-            S1AP_NAS_FIRST_REQ (message_p).ue_identity.s_tmsi.mme_code,
-            S1AP_NAS_FIRST_REQ (message_p).ue_identity.s_tmsi.m_tmsi,
-            ue_context_pP->ue_context.rnti);
+              ctxt_pP->module_id,
+              S1AP_NAS_FIRST_REQ (message_p).ue_identity.s_tmsi.mme_code,
+              S1AP_NAS_FIRST_REQ (message_p).ue_identity.s_tmsi.m_tmsi,
+              ue_context_pP->ue_context.rnti);
       }
 
       if (rrcConnectionSetupComplete->registeredMME != NULL) {
         /* Fill GUMMEI */
         struct RegisteredMME *r_mme = rrcConnectionSetupComplete->registeredMME;
         //int selected_plmn_identity = rrcConnectionSetupComplete->selectedPLMN_Identity;
-
         S1AP_NAS_FIRST_REQ (message_p).ue_identity.presenceMask |= UE_IDENTITIES_gummei;
 
         if (r_mme->plmn_Identity != NULL) {
@@ -789,9 +757,9 @@ rrc_eNB_send_S1AP_NAS_FIRST_REQ(
             /* Use first indicated PLMN MCC if it is defined */
             S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mcc = *r_mme->plmn_Identity->mcc->list.array[0];
             LOG_I(S1AP, "[eNB %d] Build S1AP_NAS_FIRST_REQ adding in s_TMSI: GUMMEI MCC %u ue %x\n",
-                ctxt_pP->module_id,
-                S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mcc,
-                ue_context_pP->ue_context.rnti);
+                  ctxt_pP->module_id,
+                  S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mcc,
+                  ue_context_pP->ue_context.rnti);
           }
 
           if (r_mme->plmn_Identity->mnc.list.count > 0) {
@@ -803,9 +771,8 @@ rrc_eNB_send_S1AP_NAS_FIRST_REQ(
                   ue_context_pP->ue_context.rnti);
           }
         } else {
-	  //          const Enb_properties_array_t   *enb_properties_p  = NULL;
-	  //          enb_properties_p = enb_config_get();
-
+          //          const Enb_properties_array_t   *enb_properties_p  = NULL;
+          //          enb_properties_p = enb_config_get();
           // actually the eNB configuration contains only one PLMN (can be up to 6)
           S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mcc = rrc->mcc;
           S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mnc = rrc->mnc;
@@ -814,7 +781,6 @@ rrc_eNB_send_S1AP_NAS_FIRST_REQ(
 
         S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mme_code     = BIT_STRING_to_uint8 (&r_mme->mmec);
         S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mme_group_id = BIT_STRING_to_uint16 (&r_mme->mmegi);
-
         MSC_LOG_TX_MESSAGE(
           MSC_S1AP_ENB,
           MSC_S1AP_MME,
@@ -824,7 +790,6 @@ rrc_eNB_send_S1AP_NAS_FIRST_REQ(
           MSC_AS_TIME_ARGS(ctxt_pP),
           ctxt_pP->module_id,
           ctxt_pP->rnti);
-
         LOG_I(S1AP, "[eNB %d] Build S1AP_NAS_FIRST_REQ adding in s_TMSI: GUMMEI mme_code %u mme_group_id %u ue %x\n",
               ctxt_pP->module_id,
               S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mme_code,
@@ -851,10 +816,10 @@ rrc_eNB_send_S1AP_NAS_FIRST_REQ(
 //------------------------------------------------------------------------------
 int
 rrc_eNB_process_S1AP_DOWNLINK_NAS(
-  MessageDef* msg_p,
-  const char* msg_name,
+  MessageDef *msg_p,
+  const char *msg_name,
   instance_t instance,
-  mui_t* rrc_eNB_mui
+  mui_t *rrc_eNB_mui
 )
 //------------------------------------------------------------------------------
 {
@@ -862,15 +827,12 @@ rrc_eNB_process_S1AP_DOWNLINK_NAS(
   uint32_t eNB_ue_s1ap_id;
   uint32_t length;
   uint8_t *buffer;
-  uint8_t srb_id; 
-  
-  struct rrc_eNB_ue_context_s* ue_context_p = NULL;
+  uint8_t srb_id;
+  struct rrc_eNB_ue_context_s *ue_context_p = NULL;
   protocol_ctxt_t              ctxt;
   ue_initial_id = S1AP_DOWNLINK_NAS (msg_p).ue_initial_id;
   eNB_ue_s1ap_id = S1AP_DOWNLINK_NAS (msg_p).eNB_ue_s1ap_id;
   ue_context_p = rrc_eNB_get_ue_context_from_s1ap_ids(instance, ue_initial_id, eNB_ue_s1ap_id);
-
-
   LOG_I(RRC, "[eNB %d] Received %s: ue_initial_id %d, eNB_ue_s1ap_id %d\n",
         instance,
         msg_name,
@@ -878,7 +840,6 @@ rrc_eNB_process_S1AP_DOWNLINK_NAS(
         eNB_ue_s1ap_id);
 
   if (ue_context_p == NULL) {
-
     MSC_LOG_RX_MESSAGE(
       MSC_RRC_ENB,
       MSC_S1AP_ENB,
@@ -888,20 +849,14 @@ rrc_eNB_process_S1AP_DOWNLINK_NAS(
       0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
       ue_initial_id,
       eNB_ue_s1ap_id);
-
     /* Can not associate this message to an UE index, send a failure to S1AP and discard it! */
     MessageDef *msg_fail_p;
-
     LOG_W(RRC, "[eNB %d] In S1AP_DOWNLINK_NAS: unknown UE from S1AP ids (%d, %d)\n", instance, ue_initial_id, eNB_ue_s1ap_id);
-
     msg_fail_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_NAS_NON_DELIVERY_IND);
     S1AP_NAS_NON_DELIVERY_IND (msg_fail_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
     S1AP_NAS_NON_DELIVERY_IND (msg_fail_p).nas_pdu.length = S1AP_DOWNLINK_NAS (msg_p).nas_pdu.length;
     S1AP_NAS_NON_DELIVERY_IND (msg_fail_p).nas_pdu.buffer = S1AP_DOWNLINK_NAS (msg_p).nas_pdu.buffer;
-
     // TODO add failure cause when defined!
-
-
     MSC_LOG_TX_MESSAGE(
       MSC_RRC_ENB,
       MSC_S1AP_ENB,
@@ -911,14 +866,11 @@ rrc_eNB_process_S1AP_DOWNLINK_NAS(
       0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
       ue_initial_id,
       eNB_ue_s1ap_id);
-
     itti_send_msg_to_task (TASK_S1AP, instance, msg_fail_p);
     return (-1);
   } else {
     PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
-
     srb_id = ue_context_p->ue_context.Srb2.Srb_info.Srb_id;
-  
 
     /* Is it the first income from S1AP ? */
     if (ue_context_p->ue_context.eNB_ue_s1ap_id == 0) {
@@ -934,8 +886,6 @@ rrc_eNB_process_S1AP_DOWNLINK_NAS(
       0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
       ue_initial_id,
       S1AP_DOWNLINK_NAS (msg_p).eNB_ue_s1ap_id);
-
-
     /* Create message for PDCP (DLInformationTransfer_t) */
     length = do_DLInformationTransfer (
                instance,
@@ -943,30 +893,28 @@ rrc_eNB_process_S1AP_DOWNLINK_NAS(
                rrc_eNB_get_next_transaction_identifier (instance),
                S1AP_DOWNLINK_NAS (msg_p).nas_pdu.length,
                S1AP_DOWNLINK_NAS (msg_p).nas_pdu.buffer);
-
 #ifdef RRC_MSG_PRINT
     int i=0;
     LOG_F(RRC,"[MSG] RRC DL Information Transfer\n");
 
     for (i = 0; i < length; i++) {
-      LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
+      LOG_F(RRC,"%02x ", ((uint8_t *)buffer)[i]);
     }
 
     LOG_F(RRC,"\n");
 #endif
-    /* 
-     * switch UL or DL NAS message without RRC piggybacked to SRB2 if active. 
+    /*
+     * switch UL or DL NAS message without RRC piggybacked to SRB2 if active.
      */
     /* Transfer data to PDCP */
     rrc_data_req (
-		  &ctxt,
-		  srb_id,
-		  *rrc_eNB_mui++,
-		  SDU_CONFIRM_NO,
-		  length,
-		  buffer,
-		  PDCP_TRANSMISSION_MODE_CONTROL);
-    
+      &ctxt,
+      srb_id,
+      *rrc_eNB_mui++,
+      SDU_CONFIRM_NO,
+      length,
+      buffer,
+      PDCP_TRANSMISSION_MODE_CONTROL);
     return (0);
   }
 }
@@ -979,9 +927,8 @@ int rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, const char
   //MessageDef                     *message_gtpv1u_p = NULL;
   gtpv1u_enb_create_tunnel_req_t  create_tunnel_req;
   gtpv1u_enb_create_tunnel_resp_t create_tunnel_resp;
-  uint8_t                         inde_list[NB_RB_MAX - 3]={0};
-
-  struct rrc_eNB_ue_context_s* ue_context_p = NULL;
+  uint8_t                         inde_list[NB_RB_MAX - 3]= {0};
+  struct rrc_eNB_ue_context_s *ue_context_p = NULL;
   protocol_ctxt_t              ctxt;
   ue_initial_id  = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).ue_initial_id;
   eNB_ue_s1ap_id = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).eNB_ue_s1ap_id;
@@ -992,63 +939,49 @@ int rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, const char
   if (ue_context_p == NULL) {
     /* Can not associate this message to an UE index, send a failure to S1AP and discard it! */
     MessageDef *msg_fail_p = NULL;
-
     LOG_W(RRC, "[eNB %d] In S1AP_INITIAL_CONTEXT_SETUP_REQ: unknown UE from S1AP ids (%d, %d)\n", instance, ue_initial_id, eNB_ue_s1ap_id);
-
     msg_fail_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_INITIAL_CONTEXT_SETUP_FAIL);
     S1AP_INITIAL_CONTEXT_SETUP_FAIL (msg_fail_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
-
     // TODO add failure cause when defined!
-
     itti_send_msg_to_task (TASK_S1AP, instance, msg_fail_p);
     return (-1);
   } else {
-
     PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
     ue_context_p->ue_context.eNB_ue_s1ap_id = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).eNB_ue_s1ap_id;
-
     /* Save e RAB information for later */
     {
       int i;
-
-      memset(&create_tunnel_req, 0 , sizeof(create_tunnel_req));
+      memset(&create_tunnel_req, 0, sizeof(create_tunnel_req));
       ue_context_p->ue_context.nb_of_e_rabs = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).nb_of_e_rabs;
-     
+
       for (i = 0; i < ue_context_p->ue_context.nb_of_e_rabs; i++) {
         ue_context_p->ue_context.e_rab[i].status = E_RAB_STATUS_NEW;
         ue_context_p->ue_context.e_rab[i].param = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).e_rab_param[i];
-
-
         create_tunnel_req.eps_bearer_id[i]       = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).e_rab_param[i].e_rab_id;
         create_tunnel_req.sgw_S1u_teid[i]        = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).e_rab_param[i].gtp_teid;
-
         memcpy(&create_tunnel_req.sgw_addr[i],
                &S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).e_rab_param[i].sgw_addr,
                sizeof(transport_layer_addr_t));
         inde_list[create_tunnel_req.num_tunnels]= i;
         create_tunnel_req.num_tunnels++;
       }
-    
-      create_tunnel_req.rnti       = ue_context_p->ue_context.rnti; // warning put zero above
-//      create_tunnel_req.num_tunnels    = i;
 
+      create_tunnel_req.rnti       = ue_context_p->ue_context.rnti; // warning put zero above
+      //      create_tunnel_req.num_tunnels    = i;
       gtpv1u_create_s1u_tunnel(
         instance,
         &create_tunnel_req,
         &create_tunnel_resp);
-
       rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP(
-          &ctxt,
-          &create_tunnel_resp,
-          &inde_list[0]); 
+        &ctxt,
+        &create_tunnel_resp,
+        &inde_list[0]);
       ue_context_p->ue_context.setup_e_rabs=ue_context_p->ue_context.nb_of_e_rabs;
     }
-
     /* TODO parameters yet to process ... */
     {
       //      S1AP_INITIAL_CONTEXT_SETUP_REQ(msg_p).ue_ambr;
     }
-
     rrc_eNB_process_security (
       &ctxt,
       ue_context_p,
@@ -1057,10 +990,8 @@ int rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, const char
       &ctxt,
       ue_context_p,
       S1AP_INITIAL_CONTEXT_SETUP_REQ(msg_p).security_key);
-
     {
       uint8_t send_security_mode_command = TRUE;
-
 #ifndef EXMIMO_IOT
 
       if ((ue_context_p->ue_context.ciphering_algorithm == SecurityAlgorithmConfig__cipheringAlgorithm_eea0)
@@ -1075,7 +1006,6 @@ int rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, const char
         send_security_mode_command);
 
       if (send_security_mode_command) {
-
         rrc_eNB_generate_SecurityModeCommand (
           &ctxt,
           ue_context_p);
@@ -1097,27 +1027,21 @@ int rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, const char
 int rrc_eNB_process_S1AP_UE_CTXT_MODIFICATION_REQ(MessageDef *msg_p, const char *msg_name, instance_t instance)
 {
   uint32_t eNB_ue_s1ap_id;
-  struct rrc_eNB_ue_context_s* ue_context_p = NULL;
+  struct rrc_eNB_ue_context_s *ue_context_p = NULL;
   protocol_ctxt_t              ctxt;
-
   eNB_ue_s1ap_id = S1AP_UE_CTXT_MODIFICATION_REQ (msg_p).eNB_ue_s1ap_id;
   ue_context_p   = rrc_eNB_get_ue_context_from_s1ap_ids(instance, UE_INITIAL_ID_INVALID, eNB_ue_s1ap_id);
 
   if (ue_context_p == NULL) {
     /* Can not associate this message to an UE index, send a failure to S1AP and discard it! */
     MessageDef *msg_fail_p;
-
     LOG_W(RRC, "[eNB %d] In S1AP_UE_CTXT_MODIFICATION_REQ: unknown UE from eNB_ue_s1ap_id (%d)\n", instance, eNB_ue_s1ap_id);
-
     msg_fail_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_UE_CTXT_MODIFICATION_FAIL);
     S1AP_UE_CTXT_MODIFICATION_FAIL (msg_fail_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
-
     // TODO add failure cause when defined!
-
     itti_send_msg_to_task (TASK_S1AP, instance, msg_fail_p);
     return (-1);
   } else {
-
     PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
     /* TODO parameters yet to process ... */
     {
@@ -1143,20 +1067,16 @@ int rrc_eNB_process_S1AP_UE_CTXT_MODIFICATION_REQ(MessageDef *msg_p, const char
         &ctxt,
         ue_context_p,
         S1AP_UE_CTXT_MODIFICATION_REQ(msg_p).security_key);
-
       /* TODO reconfigure lower layers... */
     }
 
     /* Send the response */
     {
       MessageDef *msg_resp_p;
-
       msg_resp_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CTXT_MODIFICATION_RESP);
       S1AP_UE_CTXT_MODIFICATION_RESP(msg_resp_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
-
       itti_send_msg_to_task(TASK_S1AP, instance, msg_resp_p);
     }
-
     return (0);
   }
 }
@@ -1165,39 +1085,30 @@ int rrc_eNB_process_S1AP_UE_CTXT_MODIFICATION_REQ(MessageDef *msg_p, const char
 int rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_REQ (MessageDef *msg_p, const char *msg_name, instance_t instance)
 {
   uint32_t eNB_ue_s1ap_id;
-  struct rrc_eNB_ue_context_s* ue_context_p = NULL;
-
+  struct rrc_eNB_ue_context_s *ue_context_p = NULL;
   eNB_ue_s1ap_id = S1AP_UE_CONTEXT_RELEASE_REQ(msg_p).eNB_ue_s1ap_id;
   ue_context_p   = rrc_eNB_get_ue_context_from_s1ap_ids(instance, UE_INITIAL_ID_INVALID, eNB_ue_s1ap_id);
 
   if (ue_context_p == NULL) {
     /* Can not associate this message to an UE index, send a failure to S1AP and discard it! */
     MessageDef *msg_fail_p;
-
     LOG_W(RRC, "[eNB %d] In S1AP_UE_CONTEXT_RELEASE_REQ: unknown UE from eNB_ue_s1ap_id (%d)\n",
           instance,
           eNB_ue_s1ap_id);
-
     msg_fail_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_RESP); /* TODO change message ID. */
     S1AP_UE_CONTEXT_RELEASE_RESP(msg_fail_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
-
     // TODO add failure cause when defined!
-
     itti_send_msg_to_task(TASK_S1AP, instance, msg_fail_p);
     return (-1);
   } else {
     /* TODO release context. */
-
     /* Send the response */
     {
       MessageDef *msg_resp_p;
-
       msg_resp_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_RESP);
       S1AP_UE_CONTEXT_RELEASE_RESP(msg_resp_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
-
       itti_send_msg_to_task(TASK_S1AP, instance, msg_resp_p);
     }
-
     return (0);
   }
 }
@@ -1205,7 +1116,7 @@ int rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_REQ (MessageDef *msg_p, const char *
 //------------------------------------------------------------------------------
 void rrc_eNB_send_S1AP_UE_CONTEXT_RELEASE_REQ (
   const module_id_t                        enb_mod_idP,
-  const rrc_eNB_ue_context_t*        const ue_context_pP,
+  const rrc_eNB_ue_context_t        *const ue_context_pP,
   const s1ap_Cause_t                       causeP,
   const long                               cause_valueP
 )
@@ -1215,13 +1126,12 @@ void rrc_eNB_send_S1AP_UE_CONTEXT_RELEASE_REQ (
     LOG_W(RRC,
           "[eNB] In S1AP_UE_CONTEXT_RELEASE_COMMAND: invalid  UE\n");
   } else {
-	  MSC_LOG_TX_MESSAGE(
-			  MSC_RRC_ENB,
-	  		  MSC_S1AP_ENB,
-	  		  NULL,0,
-	  		  "0 S1AP_UE_CONTEXT_RELEASE_REQ eNB_ue_s1ap_id 0x%06"PRIX32" ",
-	  		  ue_context_pP->ue_context.eNB_ue_s1ap_id);
-
+    MSC_LOG_TX_MESSAGE(
+      MSC_RRC_ENB,
+      MSC_S1AP_ENB,
+      NULL,0,
+      "0 S1AP_UE_CONTEXT_RELEASE_REQ eNB_ue_s1ap_id 0x%06"PRIX32" ",
+      ue_context_pP->ue_context.eNB_ue_s1ap_id);
     MessageDef *msg_context_release_req_p = NULL;
     msg_context_release_req_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_REQ);
     S1AP_UE_CONTEXT_RELEASE_REQ(msg_context_release_req_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
@@ -1239,47 +1149,40 @@ int rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_COMMAND (MessageDef *msg_p, const ch
   protocol_ctxt_t              ctxt;
   struct rrc_eNB_ue_context_s *ue_context_p = NULL;
   struct rrc_ue_s1ap_ids_s    *rrc_ue_s1ap_ids = NULL;
-
   eNB_ue_s1ap_id = S1AP_UE_CONTEXT_RELEASE_COMMAND(msg_p).eNB_ue_s1ap_id;
-
-
   ue_context_p   = rrc_eNB_get_ue_context_from_s1ap_ids(instance, UE_INITIAL_ID_INVALID, eNB_ue_s1ap_id);
 
   if (ue_context_p == NULL) {
     /* Can not associate this message to an UE index */
     MessageDef *msg_complete_p;
-
     LOG_W(RRC,
           "[eNB %d] In S1AP_UE_CONTEXT_RELEASE_COMMAND: unknown UE from eNB_ue_s1ap_id (%d)\n",
           instance,
           eNB_ue_s1ap_id);
-
     MSC_LOG_EVENT(
-          MSC_RRC_ENB,
-  		  "0 S1AP_UE_CONTEXT_RELEASE_COMPLETE eNB_ue_s1ap_id 0x%06"PRIX32" context not found",
-  		eNB_ue_s1ap_id);
-
+      MSC_RRC_ENB,
+      "0 S1AP_UE_CONTEXT_RELEASE_COMPLETE eNB_ue_s1ap_id 0x%06"PRIX32" context not found",
+      eNB_ue_s1ap_id);
     MSC_LOG_TX_MESSAGE(
-          MSC_RRC_ENB,
-  		  MSC_S1AP_ENB,
-  		  NULL,0,
-  		  "0 S1AP_UE_CONTEXT_RELEASE_COMPLETE eNB_ue_s1ap_id 0x%06"PRIX32" ",
-  		eNB_ue_s1ap_id);
-
+      MSC_RRC_ENB,
+      MSC_S1AP_ENB,
+      NULL,0,
+      "0 S1AP_UE_CONTEXT_RELEASE_COMPLETE eNB_ue_s1ap_id 0x%06"PRIX32" ",
+      eNB_ue_s1ap_id);
     msg_complete_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_COMPLETE);
     S1AP_UE_CONTEXT_RELEASE_COMPLETE(msg_complete_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
     itti_send_msg_to_task(TASK_S1AP, instance, msg_complete_p);
-
     rrc_ue_s1ap_ids = rrc_eNB_S1AP_get_ue_ids(
-    		RC.rrc[instance],
-    		UE_INITIAL_ID_INVALID,
-    		eNB_ue_s1ap_id);
+                        RC.rrc[instance],
+                        UE_INITIAL_ID_INVALID,
+                        eNB_ue_s1ap_id);
 
     if (NULL != rrc_ue_s1ap_ids) {
       rrc_eNB_S1AP_remove_ue_ids(
-    		  RC.rrc[instance],
-    		  rrc_ue_s1ap_ids);
+        RC.rrc[instance],
+        rrc_ue_s1ap_ids);
     }
+
     return (-1);
   } else {
     ue_context_p->ue_context.ue_release_timer_s1 = 0;
@@ -1295,19 +1198,16 @@ int rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_COMMAND (MessageDef *msg_p, const ch
       int      e_rab;
       //int      mod_id = 0;
       MessageDef *msg_delete_tunnels_p = NULL;
-
       MSC_LOG_TX_MESSAGE(
-            MSC_RRC_ENB,
-            MSC_GTPU_ENB,
-            NULL,0,
-            "0 GTPV1U_ENB_DELETE_TUNNEL_REQ rnti %x ",
-            eNB_ue_s1ap_id);
-
+        MSC_RRC_ENB,
+        MSC_GTPU_ENB,
+        NULL,0,
+        "0 GTPV1U_ENB_DELETE_TUNNEL_REQ rnti %x ",
+        eNB_ue_s1ap_id);
       msg_delete_tunnels_p = itti_alloc_new_message(TASK_RRC_ENB, GTPV1U_ENB_DELETE_TUNNEL_REQ);
       memset(&GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p),
              0,
              sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p)));
-
       // do not wait response
       GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).rnti = ue_context_p->ue_context.rnti;
 
@@ -1321,32 +1221,27 @@ int rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_COMMAND (MessageDef *msg_p, const ch
       }
 
       itti_send_msg_to_task(TASK_GTPV1_U, instance, msg_delete_tunnels_p);
-
-
       MSC_LOG_TX_MESSAGE(
-            MSC_RRC_ENB,
-            MSC_S1AP_ENB,
-            NULL,0,
-            "0 S1AP_UE_CONTEXT_RELEASE_COMPLETE eNB_ue_s1ap_id 0x%06"PRIX32" ",
-            eNB_ue_s1ap_id);
-
+        MSC_RRC_ENB,
+        MSC_S1AP_ENB,
+        NULL,0,
+        "0 S1AP_UE_CONTEXT_RELEASE_COMPLETE eNB_ue_s1ap_id 0x%06"PRIX32" ",
+        eNB_ue_s1ap_id);
       MessageDef *msg_complete_p = NULL;
       msg_complete_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_COMPLETE);
       S1AP_UE_CONTEXT_RELEASE_COMPLETE(msg_complete_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
       itti_send_msg_to_task(TASK_S1AP, instance, msg_complete_p);
-
       rrc_ue_s1ap_ids = rrc_eNB_S1AP_get_ue_ids(
-      		RC.rrc[instance],
-      		UE_INITIAL_ID_INVALID,
-      		eNB_ue_s1ap_id);
+                          RC.rrc[instance],
+                          UE_INITIAL_ID_INVALID,
+                          eNB_ue_s1ap_id);
 
       if (NULL != rrc_ue_s1ap_ids) {
         rrc_eNB_S1AP_remove_ue_ids(
-      		  RC.rrc[instance],
-      		  rrc_ue_s1ap_ids);
+          RC.rrc[instance],
+          rrc_ue_s1ap_ids);
       }
     }
-
     return (0);
   }
 }
@@ -1357,12 +1252,10 @@ int rrc_eNB_process_S1AP_E_RAB_SETUP_REQ(MessageDef *msg_p, const char *msg_name
   uint32_t                        eNB_ue_s1ap_id;
   gtpv1u_enb_create_tunnel_req_t  create_tunnel_req;
   gtpv1u_enb_create_tunnel_resp_t create_tunnel_resp;
-  uint8_t                         inde_list[NB_RB_MAX - 3]={0};
-
-  struct rrc_eNB_ue_context_s* ue_context_p = NULL;
+  uint8_t                         inde_list[NB_RB_MAX - 3]= {0};
+  struct rrc_eNB_ue_context_s *ue_context_p = NULL;
   protocol_ctxt_t              ctxt;
   uint8_t                      e_rab_done;
-
   ue_initial_id  = S1AP_E_RAB_SETUP_REQ (msg_p).ue_initial_id;
   eNB_ue_s1ap_id = S1AP_E_RAB_SETUP_REQ (msg_p).eNB_ue_s1ap_id;
   ue_context_p   = rrc_eNB_get_ue_context_from_s1ap_ids(instance, ue_initial_id, eNB_ue_s1ap_id);
@@ -1372,174 +1265,150 @@ int rrc_eNB_process_S1AP_E_RAB_SETUP_REQ(MessageDef *msg_p, const char *msg_name
   if (ue_context_p == NULL) {
     /* Can not associate this message to an UE index, send a failure to S1AP and discard it! */
     MessageDef *msg_fail_p = NULL;
-
     LOG_W(RRC, "[eNB %d] In S1AP_E_RAB_SETUP_REQ: unknown UE from S1AP ids (%d, %d)\n", instance, ue_initial_id, eNB_ue_s1ap_id);
-
     msg_fail_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_E_RAB_SETUP_REQUEST_FAIL);
     S1AP_E_RAB_SETUP_REQ  (msg_fail_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
-
     // TODO add failure cause when defined!
-
     itti_send_msg_to_task (TASK_S1AP, instance, msg_fail_p);
     return (-1);
   } else {
-
     PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
     ue_context_p->ue_context.eNB_ue_s1ap_id = S1AP_E_RAB_SETUP_REQ  (msg_p).eNB_ue_s1ap_id;
-
     /* Save e RAB information for later */
     {
       int i;
-
-      memset(&create_tunnel_req, 0 , sizeof(create_tunnel_req));
+      memset(&create_tunnel_req, 0, sizeof(create_tunnel_req));
       uint8_t nb_e_rabs_tosetup = S1AP_E_RAB_SETUP_REQ  (msg_p).nb_e_rabs_tosetup;
       e_rab_done = 0;
 
       // keep the previous bearer
       // the index for the rec
-      for (i = 0; 
-	  // i < nb_e_rabs_tosetup; 
-           i < NB_RB_MAX - 3;  // loop all e-rabs in e_rab[] 
-	   i++) {
-	//if (ue_context_p->ue_context.e_rab[i+ue_context_p->ue_context.setup_e_rabs].status == E_RAB_STATUS_DONE) 
-	//  LOG_W(RRC,"E-RAB already configured, reconfiguring\n");
+      for (i = 0;
+           // i < nb_e_rabs_tosetup;
+           i < NB_RB_MAX - 3;  // loop all e-rabs in e_rab[]
+           i++) {
+        //if (ue_context_p->ue_context.e_rab[i+ue_context_p->ue_context.setup_e_rabs].status == E_RAB_STATUS_DONE)
+        //  LOG_W(RRC,"E-RAB already configured, reconfiguring\n");
         // check e-rab status, if e rab status is greater than E_RAB_STATUS_DONE, don't not config this one
         if(ue_context_p->ue_context.e_rab[i].status >= E_RAB_STATUS_DONE)
-            continue;
+          continue;
+
         //ue_context_p->ue_context.e_rab[i+ue_context_p->ue_context.setup_e_rabs].status = E_RAB_STATUS_NEW;
         //ue_context_p->ue_context.e_rab[i+ue_context_p->ue_context.setup_e_rabs].param = S1AP_E_RAB_SETUP_REQ  (msg_p).e_rab_setup_params[i];
         ue_context_p->ue_context.e_rab[i].status = E_RAB_STATUS_NEW;
         ue_context_p->ue_context.e_rab[i].param = S1AP_E_RAB_SETUP_REQ  (msg_p).e_rab_setup_params[e_rab_done];
-
         create_tunnel_req.eps_bearer_id[e_rab_done]       = S1AP_E_RAB_SETUP_REQ  (msg_p).e_rab_setup_params[e_rab_done].e_rab_id;
         create_tunnel_req.sgw_S1u_teid[e_rab_done]        = S1AP_E_RAB_SETUP_REQ  (msg_p).e_rab_setup_params[e_rab_done].gtp_teid;
-
         memcpy(&create_tunnel_req.sgw_addr[e_rab_done],
                & S1AP_E_RAB_SETUP_REQ (msg_p).e_rab_setup_params[e_rab_done].sgw_addr,
                sizeof(transport_layer_addr_t));
-	
-	LOG_I(RRC,"E_RAB setup REQ: local index %d teid %u, eps id %d \n", 
-	      i,
-	      create_tunnel_req.sgw_S1u_teid[e_rab_done],
-	       create_tunnel_req.eps_bearer_id[i] );
+        LOG_I(RRC,"E_RAB setup REQ: local index %d teid %u, eps id %d \n",
+              i,
+              create_tunnel_req.sgw_S1u_teid[e_rab_done],
+              create_tunnel_req.eps_bearer_id[i] );
         inde_list[e_rab_done] = i;
-        e_rab_done++;        
-        if(e_rab_done >= nb_e_rabs_tosetup){
-            break;
+        e_rab_done++;
+
+        if(e_rab_done >= nb_e_rabs_tosetup) {
+          break;
         }
       }
+
       ue_context_p->ue_context.nb_of_e_rabs=nb_e_rabs_tosetup;
-     
-     
       create_tunnel_req.rnti       = ue_context_p->ue_context.rnti; // warning put zero above
       create_tunnel_req.num_tunnels    = e_rab_done;
-      
       // NN: not sure if we should create a new tunnel: need to check teid, etc.
       gtpv1u_create_s1u_tunnel(
         instance,
         &create_tunnel_req,
         &create_tunnel_resp);
-
       rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP(
-          &ctxt,
-          &create_tunnel_resp,
-          &inde_list[0]);
-
+        &ctxt,
+        &create_tunnel_resp,
+        &inde_list[0]);
       ue_context_p->ue_context.setup_e_rabs+=nb_e_rabs_tosetup;
-
     }
-
     /* TODO parameters yet to process ... */
     {
       //      S1AP_INITIAL_CONTEXT_SETUP_REQ(msg_p).ue_ambr;
     }
-
     rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(&ctxt, ue_context_p, 0);
-							 
     return (0);
   }
 }
 
 /*NN: careful about the typcast of xid (long -> uint8_t*/
-int rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP,
-				   rrc_eNB_ue_context_t*          const ue_context_pP,
-				   uint8_t xid ){  
-
+int rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t *const ctxt_pP,
+                                       rrc_eNB_ue_context_t          *const ue_context_pP,
+                                       uint8_t xid ) {
   MessageDef      *msg_p         = NULL;
   int e_rab;
   int e_rabs_done = 0;
   int e_rabs_failed = 0;
-    
   msg_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_E_RAB_SETUP_RESP);
   S1AP_E_RAB_SETUP_RESP (msg_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
- 
-  for (e_rab = 0; e_rab <  ue_context_pP->ue_context.setup_e_rabs ; e_rab++) {
 
-    /* only respond to the corresponding transaction */ 
+  for (e_rab = 0; e_rab <  ue_context_pP->ue_context.setup_e_rabs ; e_rab++) {
+    /* only respond to the corresponding transaction */
     //if (((xid+1)%4) == ue_context_pP->ue_context.e_rab[e_rab].xid) {
     if (xid == ue_context_pP->ue_context.e_rab[e_rab].xid) {
-      
       if (ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_DONE) {
-     
-	S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
-	// TODO add other information from S1-U when it will be integrated
-	S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].gtp_teid = ue_context_pP->ue_context.enb_gtp_teid[e_rab];
-	S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr = ue_context_pP->ue_context.enb_gtp_addrs[e_rab];
-	//S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rab].eNB_addr.length += 4;
-	ue_context_pP->ue_context.e_rab[e_rab].status = E_RAB_STATUS_ESTABLISHED;
-	
-	LOG_I (RRC,"enb_gtp_addr (msg index %d, e_rab index %d, status %d, xid %d): nb_of_e_rabs %d,  e_rab_id %d, teid: %u, addr: %d.%d.%d.%d \n ",
-	       e_rabs_done,  e_rab, ue_context_pP->ue_context.e_rab[e_rab].status, xid,
-	       ue_context_pP->ue_context.nb_of_e_rabs,
-	       S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].e_rab_id,
-	       S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].gtp_teid,
-	       S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[0],
-	       S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[1],
-	       S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[2],
-	       S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[3]);
-	
-	e_rabs_done++;
-      } else if ((ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_NEW)  || 
-		 (ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_ESTABLISHED)){
-	LOG_D (RRC,"E-RAB is NEW or already ESTABLISHED\n");
-      }else { /* to be improved */
-	ue_context_pP->ue_context.e_rab[e_rab].status = E_RAB_STATUS_FAILED;
-	S1AP_E_RAB_SETUP_RESP  (msg_p).e_rabs_failed[e_rabs_failed].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
-	e_rabs_failed++;
-	// TODO add cause when it will be integrated
-      } 
-      
+        S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
+        // TODO add other information from S1-U when it will be integrated
+        S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].gtp_teid = ue_context_pP->ue_context.enb_gtp_teid[e_rab];
+        S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr = ue_context_pP->ue_context.enb_gtp_addrs[e_rab];
+        //S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rab].eNB_addr.length += 4;
+        ue_context_pP->ue_context.e_rab[e_rab].status = E_RAB_STATUS_ESTABLISHED;
+        LOG_I (RRC,"enb_gtp_addr (msg index %d, e_rab index %d, status %d, xid %d): nb_of_e_rabs %d,  e_rab_id %d, teid: %u, addr: %d.%d.%d.%d \n ",
+               e_rabs_done,  e_rab, ue_context_pP->ue_context.e_rab[e_rab].status, xid,
+               ue_context_pP->ue_context.nb_of_e_rabs,
+               S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].e_rab_id,
+               S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].gtp_teid,
+               S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[0],
+               S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[1],
+               S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[2],
+               S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[3]);
+        e_rabs_done++;
+      } else if ((ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_NEW)  ||
+                 (ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_ESTABLISHED)) {
+        LOG_D (RRC,"E-RAB is NEW or already ESTABLISHED\n");
+      } else { /* to be improved */
+        ue_context_pP->ue_context.e_rab[e_rab].status = E_RAB_STATUS_FAILED;
+        S1AP_E_RAB_SETUP_RESP  (msg_p).e_rabs_failed[e_rabs_failed].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
+        e_rabs_failed++;
+        // TODO add cause when it will be integrated
+      }
+
       S1AP_E_RAB_SETUP_RESP (msg_p).nb_of_e_rabs = e_rabs_done;
       S1AP_E_RAB_SETUP_RESP (msg_p).nb_of_e_rabs_failed = e_rabs_failed;
-      // NN: add conditions for e_rabs_failed 
+      // NN: add conditions for e_rabs_failed
     } else {
-      /*debug info for the xid */ 
+      /*debug info for the xid */
       LOG_D(RRC,"xid does not corresponds  (context e_rab index %d, status %d, xid %d/%d) \n ",
-      	     e_rab, ue_context_pP->ue_context.e_rab[e_rab].status, xid, ue_context_pP->ue_context.e_rab[e_rab].xid);
-    } 
+            e_rab, ue_context_pP->ue_context.e_rab[e_rab].status, xid, ue_context_pP->ue_context.e_rab[e_rab].xid);
+    }
   }
-      if ((e_rabs_done > 0) ){  
-
-	LOG_I(RRC,"S1AP_E_RAB_SETUP_RESP: sending the message: nb_of_erabs %d, total e_rabs %d, index %d\n",
-	      ue_context_pP->ue_context.nb_of_e_rabs, ue_context_pP->ue_context.setup_e_rabs, e_rab);
-	MSC_LOG_TX_MESSAGE(
-			   MSC_RRC_ENB,
-			   MSC_S1AP_ENB,
-			   (const char *)&S1AP_E_RAB_SETUP_RESP (msg_p),
-			   sizeof(s1ap_e_rab_setup_resp_t),
-			   MSC_AS_TIME_FMT" E_RAB_SETUP_RESP UE %X eNB_ue_s1ap_id %u e_rabs:%u succ %u fail",
-			   MSC_AS_TIME_ARGS(ctxt_pP),
-			   ue_context_pP->ue_id_rnti,
-			   S1AP_E_RAB_SETUP_RESP (msg_p).eNB_ue_s1ap_id,
-			   e_rabs_done, e_rabs_failed);
-	
-	
-	itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
-      }
+
+  if ((e_rabs_done > 0) ) {
+    LOG_I(RRC,"S1AP_E_RAB_SETUP_RESP: sending the message: nb_of_erabs %d, total e_rabs %d, index %d\n",
+          ue_context_pP->ue_context.nb_of_e_rabs, ue_context_pP->ue_context.setup_e_rabs, e_rab);
+    MSC_LOG_TX_MESSAGE(
+      MSC_RRC_ENB,
+      MSC_S1AP_ENB,
+      (const char *)&S1AP_E_RAB_SETUP_RESP (msg_p),
+      sizeof(s1ap_e_rab_setup_resp_t),
+      MSC_AS_TIME_FMT" E_RAB_SETUP_RESP UE %X eNB_ue_s1ap_id %u e_rabs:%u succ %u fail",
+      MSC_AS_TIME_ARGS(ctxt_pP),
+      ue_context_pP->ue_id_rnti,
+      S1AP_E_RAB_SETUP_RESP (msg_p).eNB_ue_s1ap_id,
+      e_rabs_done, e_rabs_failed);
+    itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
+  }
+
   for(int i = 0; i < NB_RB_MAX; i++) {
-      ue_context_pP->ue_context.e_rab[i].xid = -1;
+    ue_context_pP->ue_context.e_rab[i].xid = -1;
   }
-  
+
   return 0;
 }
 
@@ -1548,9 +1417,8 @@ int rrc_eNB_process_S1AP_E_RAB_MODIFY_REQ(MessageDef *msg_p, const char *msg_nam
   int                             i;
   uint16_t                        ue_initial_id;
   uint32_t                        eNB_ue_s1ap_id;
-  struct rrc_eNB_ue_context_s* ue_context_p = NULL;
+  struct rrc_eNB_ue_context_s *ue_context_p = NULL;
   protocol_ctxt_t              ctxt;
-
   ue_initial_id  = S1AP_E_RAB_MODIFY_REQ (msg_p).ue_initial_id;
   eNB_ue_s1ap_id = S1AP_E_RAB_MODIFY_REQ (msg_p).eNB_ue_s1ap_id;
   ue_context_p   = rrc_eNB_get_ue_context_from_s1ap_ids(instance, ue_initial_id, eNB_ue_s1ap_id);
@@ -1562,27 +1430,23 @@ int rrc_eNB_process_S1AP_E_RAB_MODIFY_REQ(MessageDef *msg_p, const char *msg_nam
     LOG_W(RRC, "[eNB %d] In S1AP_E_RAB_MODIFY_REQ: unknown UE from S1AP ids (%d, %d)\n", instance, ue_initial_id, eNB_ue_s1ap_id);
     int nb_of_e_rabs_failed = 0;
     MessageDef *msg_fail_p = NULL;
-
     msg_fail_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_E_RAB_MODIFY_RESP);
-
     S1AP_E_RAB_MODIFY_RESP (msg_fail_p).eNB_ue_s1ap_id = S1AP_E_RAB_MODIFY_REQ (msg_p).eNB_ue_s1ap_id;
     S1AP_E_RAB_MODIFY_RESP (msg_fail_p).nb_of_e_rabs = 0;
 
     for (nb_of_e_rabs_failed = 0; nb_of_e_rabs_failed < S1AP_E_RAB_MODIFY_REQ (msg_p).nb_e_rabs_tomodify; nb_of_e_rabs_failed++) {
       S1AP_E_RAB_MODIFY_RESP (msg_fail_p).e_rabs_failed[nb_of_e_rabs_failed].e_rab_id =
-              S1AP_E_RAB_MODIFY_REQ (msg_p).e_rab_modify_params[nb_of_e_rabs_failed].e_rab_id;
+        S1AP_E_RAB_MODIFY_REQ (msg_p).e_rab_modify_params[nb_of_e_rabs_failed].e_rab_id;
       S1AP_E_RAB_MODIFY_RESP (msg_fail_p).e_rabs_failed[nb_of_e_rabs_failed].cause = S1AP_CAUSE_RADIO_NETWORK;
       S1AP_E_RAB_MODIFY_RESP (msg_fail_p).e_rabs_failed[nb_of_e_rabs_failed].cause_value = 31;//S1ap_CauseRadioNetwork_multiple_E_RAB_ID_instances;
     }
-    S1AP_E_RAB_MODIFY_RESP (msg_fail_p).nb_of_e_rabs_failed = nb_of_e_rabs_failed;
 
+    S1AP_E_RAB_MODIFY_RESP (msg_fail_p).nb_of_e_rabs_failed = nb_of_e_rabs_failed;
     itti_send_msg_to_task(TASK_S1AP, instance, msg_fail_p);
     return (-1);
-
   } else {
     PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
     ue_context_p->ue_context.eNB_ue_s1ap_id = eNB_ue_s1ap_id;
-
     /* Save e RAB information for later */
     {
       int j;
@@ -1596,9 +1460,10 @@ int rrc_eNB_process_S1AP_E_RAB_MODIFY_REQ(MessageDef *msg_p, const char *msg_nam
           // already treated
           continue;
         }
+
         for (j = i+1; j < S1AP_E_RAB_MODIFY_REQ (msg_p).nb_e_rabs_tomodify; j++) {
           if (is_treated[j] == FALSE &&
-            S1AP_E_RAB_MODIFY_REQ(msg_p).e_rab_modify_params[j].e_rab_id == S1AP_E_RAB_MODIFY_REQ(msg_p).e_rab_modify_params[i].e_rab_id) {
+              S1AP_E_RAB_MODIFY_REQ(msg_p).e_rab_modify_params[j].e_rab_id == S1AP_E_RAB_MODIFY_REQ(msg_p).e_rab_modify_params[i].e_rab_id) {
             // handle multiple E-RAB ID
             ue_context_p->ue_context.modify_e_rab[j].status = E_RAB_STATUS_NEW;
             ue_context_p->ue_context.modify_e_rab[j].param.e_rab_id = S1AP_E_RAB_MODIFY_REQ(msg_p).e_rab_modify_params[j].e_rab_id;
@@ -1609,6 +1474,7 @@ int rrc_eNB_process_S1AP_E_RAB_MODIFY_REQ(MessageDef *msg_p, const char *msg_nam
             is_treated[j] = TRUE;
           }
         }
+
         if (is_treated[i] == TRUE) {
           // handle multiple E-RAB ID
           ue_context_p->ue_context.modify_e_rab[i].status = E_RAB_STATUS_NEW;
@@ -1632,9 +1498,10 @@ int rrc_eNB_process_S1AP_E_RAB_MODIFY_REQ(MessageDef *msg_p, const char *msg_nam
 
         for (j = 0; j < NB_RB_MAX-3; j++) {
           if (ue_context_p->ue_context.e_rab[j].param.e_rab_id == S1AP_E_RAB_MODIFY_REQ(msg_p).e_rab_modify_params[i].e_rab_id) {
-            if(ue_context_p->ue_context.e_rab[j].status == E_RAB_STATUS_TORELEASE || ue_context_p->ue_context.e_rab[j].status == E_RAB_STATUS_DONE){
+            if(ue_context_p->ue_context.e_rab[j].status == E_RAB_STATUS_TORELEASE || ue_context_p->ue_context.e_rab[j].status == E_RAB_STATUS_DONE) {
               break;
             }
+
             ue_context_p->ue_context.modify_e_rab[i].status = E_RAB_STATUS_NEW;
             ue_context_p->ue_context.modify_e_rab[i].cause = S1AP_CAUSE_NOTHING;
             ue_context_p->ue_context.modify_e_rab[i].param.e_rab_id = S1AP_E_RAB_MODIFY_REQ(msg_p).e_rab_modify_params[i].e_rab_id;
@@ -1643,7 +1510,6 @@ int rrc_eNB_process_S1AP_E_RAB_MODIFY_REQ(MessageDef *msg_p, const char *msg_nam
             ue_context_p->ue_context.modify_e_rab[i].param.nas_pdu.buffer = S1AP_E_RAB_MODIFY_REQ(msg_p).e_rab_modify_params[i].nas_pdu.buffer;
             ue_context_p->ue_context.modify_e_rab[i].param.sgw_addr = ue_context_p->ue_context.e_rab[j].param.sgw_addr;
             ue_context_p->ue_context.modify_e_rab[i].param.gtp_teid = ue_context_p->ue_context.e_rab[j].param.gtp_teid;
-
             is_treated[i] = TRUE;
             break;
           }
@@ -1663,7 +1529,6 @@ int rrc_eNB_process_S1AP_E_RAB_MODIFY_REQ(MessageDef *msg_p, const char *msg_nam
       ue_context_p->ue_context.nb_of_modify_e_rabs = S1AP_E_RAB_MODIFY_REQ  (msg_p).nb_e_rabs_tomodify;
       ue_context_p->ue_context.nb_of_failed_e_rabs = nb_of_failed_e_rabs;
     }
-
     /* TODO parameters yet to process ... */
     {
       //      S1AP_INITIAL_CONTEXT_SETUP_REQ(msg_p).ue_ambr;
@@ -1678,36 +1543,31 @@ int rrc_eNB_process_S1AP_E_RAB_MODIFY_REQ(MessageDef *msg_p, const char *msg_nam
     {
       int nb_of_e_rabs_failed = 0;
       MessageDef *msg_fail_p = NULL;
-
       msg_fail_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_E_RAB_MODIFY_RESP);
-
       S1AP_E_RAB_MODIFY_RESP (msg_fail_p).eNB_ue_s1ap_id = S1AP_E_RAB_MODIFY_REQ (msg_p).eNB_ue_s1ap_id;
-//      S1AP_E_RAB_MODIFY_RESP (msg_fail_p).e_rabs[S1AP_MAX_E_RAB];
+      //      S1AP_E_RAB_MODIFY_RESP (msg_fail_p).e_rabs[S1AP_MAX_E_RAB];
       S1AP_E_RAB_MODIFY_RESP (msg_fail_p).nb_of_e_rabs = 0;
 
       for(nb_of_e_rabs_failed = 0; nb_of_e_rabs_failed < ue_context_p->ue_context.nb_of_failed_e_rabs; nb_of_e_rabs_failed++) {
         S1AP_E_RAB_MODIFY_RESP (msg_fail_p).e_rabs_failed[nb_of_e_rabs_failed].e_rab_id =
-                ue_context_p->ue_context.modify_e_rab[nb_of_e_rabs_failed].param.e_rab_id;
+          ue_context_p->ue_context.modify_e_rab[nb_of_e_rabs_failed].param.e_rab_id;
         S1AP_E_RAB_MODIFY_RESP (msg_fail_p).e_rabs_failed[nb_of_e_rabs_failed].cause = ue_context_p->ue_context.modify_e_rab[nb_of_e_rabs_failed].cause;
       }
-      S1AP_E_RAB_MODIFY_RESP (msg_fail_p).nb_of_e_rabs_failed = nb_of_e_rabs_failed;
 
+      S1AP_E_RAB_MODIFY_RESP (msg_fail_p).nb_of_e_rabs_failed = nb_of_e_rabs_failed;
       itti_send_msg_to_task (TASK_S1AP, instance, msg_fail_p);
-
       ue_context_p->ue_context.nb_of_modify_e_rabs = 0;
       ue_context_p->ue_context.nb_of_failed_e_rabs = 0;
       memset(ue_context_p->ue_context.modify_e_rab, 0, sizeof(ue_context_p->ue_context.modify_e_rab));
-
       return (0);
     }
   }  // end of ue_context_p != NULL
 }
 
 /*NN: careful about the typcast of xid (long -> uint8_t*/
-int rrc_eNB_send_S1AP_E_RAB_MODIFY_RESP(const protocol_ctxt_t* const ctxt_pP,
-           rrc_eNB_ue_context_t*          const ue_context_pP,
-           uint8_t xid ) {
-
+int rrc_eNB_send_S1AP_E_RAB_MODIFY_RESP(const protocol_ctxt_t *const ctxt_pP,
+                                        rrc_eNB_ue_context_t          *const ue_context_pP,
+                                        uint8_t xid ) {
   MessageDef      *msg_p         = NULL;
   int i;
   int e_rab;
@@ -1717,7 +1577,6 @@ int rrc_eNB_send_S1AP_E_RAB_MODIFY_RESP(const protocol_ctxt_t* const ctxt_pP,
   S1AP_E_RAB_MODIFY_RESP (msg_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
 
   for (e_rab = 0; e_rab < ue_context_pP->ue_context.nb_of_modify_e_rabs; e_rab++) {
-
     /* only respond to the corresponding transaction */
     if (xid == ue_context_pP->ue_context.modify_e_rab[e_rab].xid) {
       if (ue_context_pP->ue_context.modify_e_rab[e_rab].status == E_RAB_STATUS_DONE) {
@@ -1730,199 +1589,198 @@ int rrc_eNB_send_S1AP_E_RAB_MODIFY_RESP(const protocol_ctxt_t* const ctxt_pP,
             break;
           }
         }
+
         if (i < ue_context_pP->ue_context.setup_e_rabs) {
           S1AP_E_RAB_MODIFY_RESP (msg_p).e_rabs[e_rabs_done].e_rab_id = ue_context_pP->ue_context.modify_e_rab[e_rab].param.e_rab_id;
-              // TODO add other information from S1-U when it will be integrated
-
+          // TODO add other information from S1-U when it will be integrated
           LOG_D (RRC,"enb_gtp_addr (msg index %d, e_rab index %d, status %d, xid %d): nb_of_modify_e_rabs %d,  e_rab_id %d \n ",
-              e_rabs_done,  e_rab, ue_context_pP->ue_context.modify_e_rab[e_rab].status, xid,
-              ue_context_pP->ue_context.nb_of_modify_e_rabs,
-              S1AP_E_RAB_MODIFY_RESP (msg_p).e_rabs[e_rabs_done].e_rab_id);
-
+                 e_rabs_done,  e_rab, ue_context_pP->ue_context.modify_e_rab[e_rab].status, xid,
+                 ue_context_pP->ue_context.nb_of_modify_e_rabs,
+                 S1AP_E_RAB_MODIFY_RESP (msg_p).e_rabs[e_rabs_done].e_rab_id);
           e_rabs_done++;
         } else {
           // unexpected
           S1AP_E_RAB_MODIFY_RESP (msg_p).e_rabs_failed[e_rabs_failed].e_rab_id = ue_context_pP->ue_context.modify_e_rab[e_rab].param.e_rab_id;
-
           S1AP_E_RAB_MODIFY_RESP (msg_p).e_rabs_failed[e_rabs_failed].cause = S1AP_CAUSE_RADIO_NETWORK;
           S1AP_E_RAB_MODIFY_RESP (msg_p).e_rabs_failed[e_rabs_failed].cause_value = 30;//S1ap_CauseRadioNetwork_unknown_E_RAB_ID;
-
           e_rabs_failed++;
         }
       } else if ((ue_context_pP->ue_context.modify_e_rab[e_rab].status == E_RAB_STATUS_NEW) ||
-          (ue_context_pP->ue_context.modify_e_rab[e_rab].status == E_RAB_STATUS_ESTABLISHED)){
+                 (ue_context_pP->ue_context.modify_e_rab[e_rab].status == E_RAB_STATUS_ESTABLISHED)) {
         LOG_D (RRC,"E-RAB is NEW or already ESTABLISHED\n");
       } else {  /* status == E_RAB_STATUS_FAILED; */
         S1AP_E_RAB_MODIFY_RESP (msg_p).e_rabs_failed[e_rabs_failed].e_rab_id = ue_context_pP->ue_context.modify_e_rab[e_rab].param.e_rab_id;
         // add failure cause when defined
         S1AP_E_RAB_MODIFY_RESP (msg_p).e_rabs_failed[e_rabs_failed].cause = ue_context_pP->ue_context.modify_e_rab[e_rab].cause;
-
         e_rabs_failed++;
       }
     } else {
       /*debug info for the xid */
       LOG_D(RRC,"xid does not corresponds  (context e_rab index %d, status %d, xid %d/%d) \n ",
-             e_rab, ue_context_pP->ue_context.modify_e_rab[e_rab].status, xid, ue_context_pP->ue_context.modify_e_rab[e_rab].xid);
+            e_rab, ue_context_pP->ue_context.modify_e_rab[e_rab].status, xid, ue_context_pP->ue_context.modify_e_rab[e_rab].xid);
     }
   }
 
-
   S1AP_E_RAB_MODIFY_RESP (msg_p).nb_of_e_rabs = e_rabs_done;
   S1AP_E_RAB_MODIFY_RESP (msg_p).nb_of_e_rabs_failed = e_rabs_failed;
+
   // NN: add conditions for e_rabs_failed
   if (e_rabs_done > 0 || e_rabs_failed > 0) {
     LOG_D(RRC,"S1AP_E_RAB_MODIFY_RESP: sending the message: nb_of_modify_e_rabs %d, total e_rabs %d, index %d\n",
-    ue_context_pP->ue_context.nb_of_modify_e_rabs, ue_context_pP->ue_context.setup_e_rabs, e_rab);
-MSC_LOG_TX_MESSAGE(
-     MSC_RRC_ENB,
-     MSC_S1AP_ENB,
-     (const char *)&S1AP_E_RAB_SETUP_RESP (msg_p),
-     sizeof(s1ap_e_rab_setup_resp_t),
-     MSC_AS_TIME_FMT" E_RAB_MODIFY_RESP UE %X eNB_ue_s1ap_id %u e_rabs:%u succ %u fail",
-     MSC_AS_TIME_ARGS(ctxt_pP),
-     ue_context_pP->ue_id_rnti,
-     S1AP_E_RAB_MODIFY_RESP (msg_p).eNB_ue_s1ap_id,
-     e_rabs_done, e_rabs_failed);
-
+          ue_context_pP->ue_context.nb_of_modify_e_rabs, ue_context_pP->ue_context.setup_e_rabs, e_rab);
+    MSC_LOG_TX_MESSAGE(
+      MSC_RRC_ENB,
+      MSC_S1AP_ENB,
+      (const char *)&S1AP_E_RAB_SETUP_RESP (msg_p),
+      sizeof(s1ap_e_rab_setup_resp_t),
+      MSC_AS_TIME_FMT" E_RAB_MODIFY_RESP UE %X eNB_ue_s1ap_id %u e_rabs:%u succ %u fail",
+      MSC_AS_TIME_ARGS(ctxt_pP),
+      ue_context_pP->ue_id_rnti,
+      S1AP_E_RAB_MODIFY_RESP (msg_p).eNB_ue_s1ap_id,
+      e_rabs_done, e_rabs_failed);
     itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
   }
 
   return 0;
 }
-int rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(MessageDef *msg_p, const char *msg_name, instance_t instance){
-    uint16_t                        mme_ue_s1ap_id;
-    uint32_t                        eNB_ue_s1ap_id;
-    struct rrc_eNB_ue_context_s*    ue_context_p = NULL;
-    protocol_ctxt_t                 ctxt;
-    e_rab_release_t e_rab_release_params[S1AP_MAX_E_RAB];
-    uint8_t nb_e_rabs_torelease;
-    int erab;
-    int i;
-    uint8_t b_existed,is_existed;
-    uint8_t xid;
-    uint8_t e_rab_release_drb;
-    MessageDef *                    msg_delete_tunnels_p = NULL;
-    e_rab_release_drb = 0;
-    memcpy(&e_rab_release_params[0], &(S1AP_E_RAB_RELEASE_COMMAND (msg_p).e_rab_release_params[0]), sizeof(e_rab_release_t)*S1AP_MAX_E_RAB);
-
-    mme_ue_s1ap_id  = S1AP_E_RAB_RELEASE_COMMAND (msg_p).mme_ue_s1ap_id;
-    eNB_ue_s1ap_id = S1AP_E_RAB_RELEASE_COMMAND (msg_p).eNB_ue_s1ap_id;
-    nb_e_rabs_torelease = S1AP_E_RAB_RELEASE_COMMAND (msg_p).nb_e_rabs_torelease;
-    ue_context_p   = rrc_eNB_get_ue_context_from_s1ap_ids(instance, UE_INITIAL_ID_INVALID, eNB_ue_s1ap_id);
-    if(ue_context_p != NULL){
-        PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
-
-        xid = rrc_eNB_get_next_transaction_identifier(ctxt.module_id);
-
-        LOG_D(RRC,"S1AP-E-RAB Release Command: MME_UE_S1AP_ID %d  ENB_UE_S1AP_ID %d release_e_rabs %d \n",
-            mme_ue_s1ap_id, eNB_ue_s1ap_id,nb_e_rabs_torelease);
-        for(erab = 0; erab < nb_e_rabs_torelease; erab++){
-            b_existed = 0;
-            is_existed = 0;
-            for ( i = erab-1;  i>= 0; i--){
-                if (e_rab_release_params[erab].e_rab_id == e_rab_release_params[i].e_rab_id){
-                    is_existed = 1;
-                    break;
-                }
-            }
-            if(is_existed == 1){
-                //e_rab_id is existed
-                continue;
-            }
-            for ( i = 0;  i < NB_RB_MAX; i++){
-                if (e_rab_release_params[erab].e_rab_id == ue_context_p->ue_context.e_rab[i].param.e_rab_id){
-                    b_existed = 1;
-                    break;
-                }
-            }
-            if(b_existed == 0) {
-                //no e_rab_id
-                ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].e_rab_id = e_rab_release_params[erab].e_rab_id;
-                ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].cause = S1AP_CAUSE_RADIO_NETWORK;
-                ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].cause_value = 30;
-                ue_context_p->ue_context.nb_release_of_e_rabs++;
-            } else {
-                if(ue_context_p->ue_context.e_rab[i].status == E_RAB_STATUS_FAILED){
-                    ue_context_p->ue_context.e_rab[i].xid = xid;
-                    continue;
-                } else if(ue_context_p->ue_context.e_rab[i].status == E_RAB_STATUS_ESTABLISHED){
-                    ue_context_p->ue_context.e_rab[i].status = E_RAB_STATUS_TORELEASE;
-                    ue_context_p->ue_context.e_rab[i].xid = xid;
-                    e_rab_release_drb++;
-                }else{
-                    //e_rab_id status NG
-                    ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].e_rab_id = e_rab_release_params[erab].e_rab_id;
-                    ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].cause = S1AP_CAUSE_RADIO_NETWORK;
-                    ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].cause_value = 0;
-                    ue_context_p->ue_context.nb_release_of_e_rabs++;
-                }
-            }
+int rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(MessageDef *msg_p, const char *msg_name, instance_t instance) {
+  uint16_t                        mme_ue_s1ap_id;
+  uint32_t                        eNB_ue_s1ap_id;
+  struct rrc_eNB_ue_context_s    *ue_context_p = NULL;
+  protocol_ctxt_t                 ctxt;
+  e_rab_release_t e_rab_release_params[S1AP_MAX_E_RAB];
+  uint8_t nb_e_rabs_torelease;
+  int erab;
+  int i;
+  uint8_t b_existed,is_existed;
+  uint8_t xid;
+  uint8_t e_rab_release_drb;
+  MessageDef                     *msg_delete_tunnels_p = NULL;
+  e_rab_release_drb = 0;
+  memcpy(&e_rab_release_params[0], &(S1AP_E_RAB_RELEASE_COMMAND (msg_p).e_rab_release_params[0]), sizeof(e_rab_release_t)*S1AP_MAX_E_RAB);
+  mme_ue_s1ap_id  = S1AP_E_RAB_RELEASE_COMMAND (msg_p).mme_ue_s1ap_id;
+  eNB_ue_s1ap_id = S1AP_E_RAB_RELEASE_COMMAND (msg_p).eNB_ue_s1ap_id;
+  nb_e_rabs_torelease = S1AP_E_RAB_RELEASE_COMMAND (msg_p).nb_e_rabs_torelease;
+  ue_context_p   = rrc_eNB_get_ue_context_from_s1ap_ids(instance, UE_INITIAL_ID_INVALID, eNB_ue_s1ap_id);
+
+  if(ue_context_p != NULL) {
+    PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
+    xid = rrc_eNB_get_next_transaction_identifier(ctxt.module_id);
+    LOG_D(RRC,"S1AP-E-RAB Release Command: MME_UE_S1AP_ID %d  ENB_UE_S1AP_ID %d release_e_rabs %d \n",
+          mme_ue_s1ap_id, eNB_ue_s1ap_id,nb_e_rabs_torelease);
+
+    for(erab = 0; erab < nb_e_rabs_torelease; erab++) {
+      b_existed = 0;
+      is_existed = 0;
+
+      for ( i = erab-1;  i>= 0; i--) {
+        if (e_rab_release_params[erab].e_rab_id == e_rab_release_params[i].e_rab_id) {
+          is_existed = 1;
+          break;
         }
-        if(e_rab_release_drb > 0) {
-            //RRCConnectionReconfiguration To UE
-            rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_release(&ctxt, ue_context_p, xid, S1AP_E_RAB_RELEASE_COMMAND (msg_p).nas_pdu.length, S1AP_E_RAB_RELEASE_COMMAND (msg_p).nas_pdu.buffer);
-        } else {
-            //gtp tunnel delete
-            msg_delete_tunnels_p = itti_alloc_new_message(TASK_RRC_ENB, GTPV1U_ENB_DELETE_TUNNEL_REQ);
-            memset(&GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p), 0, sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p)));
-            GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).rnti = ue_context_p->ue_context.rnti;
-            for(i = 0; i < NB_RB_MAX; i++){
-               if(xid == ue_context_p->ue_context.e_rab[i].xid){
-                 GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).eps_bearer_id[GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).num_erab++] = ue_context_p->ue_context.enb_gtp_ebi[i];
-                 ue_context_p->ue_context.enb_gtp_teid[i] = 0;
-                 memset(&ue_context_p->ue_context.enb_gtp_addrs[i], 0, sizeof(ue_context_p->ue_context.enb_gtp_addrs[i]));
-                 ue_context_p->ue_context.enb_gtp_ebi[i]  = 0;
-               }
-            }
+      }
+
+      if(is_existed == 1) {
+        //e_rab_id is existed
+        continue;
+      }
 
-            itti_send_msg_to_task(TASK_GTPV1_U, instance, msg_delete_tunnels_p);
+      for ( i = 0;  i < NB_RB_MAX; i++) {
+        if (e_rab_release_params[erab].e_rab_id == ue_context_p->ue_context.e_rab[i].param.e_rab_id) {
+          b_existed = 1;
+          break;
+        }
+      }
 
-            //S1AP_E_RAB_RELEASE_RESPONSE
-            rrc_eNB_send_S1AP_E_RAB_RELEASE_RESPONSE(&ctxt, ue_context_p, xid);
+      if(b_existed == 0) {
+        //no e_rab_id
+        ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].e_rab_id = e_rab_release_params[erab].e_rab_id;
+        ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].cause = S1AP_CAUSE_RADIO_NETWORK;
+        ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].cause_value = 30;
+        ue_context_p->ue_context.nb_release_of_e_rabs++;
+      } else {
+        if(ue_context_p->ue_context.e_rab[i].status == E_RAB_STATUS_FAILED) {
+          ue_context_p->ue_context.e_rab[i].xid = xid;
+          continue;
+        } else if(ue_context_p->ue_context.e_rab[i].status == E_RAB_STATUS_ESTABLISHED) {
+          ue_context_p->ue_context.e_rab[i].status = E_RAB_STATUS_TORELEASE;
+          ue_context_p->ue_context.e_rab[i].xid = xid;
+          e_rab_release_drb++;
+        } else {
+          //e_rab_id status NG
+          ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].e_rab_id = e_rab_release_params[erab].e_rab_id;
+          ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].cause = S1AP_CAUSE_RADIO_NETWORK;
+          ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].cause_value = 0;
+          ue_context_p->ue_context.nb_release_of_e_rabs++;
         }
+      }
+    }
+
+    if(e_rab_release_drb > 0) {
+      //RRCConnectionReconfiguration To UE
+      rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_release(&ctxt, ue_context_p, xid, S1AP_E_RAB_RELEASE_COMMAND (msg_p).nas_pdu.length, S1AP_E_RAB_RELEASE_COMMAND (msg_p).nas_pdu.buffer);
     } else {
-        LOG_E(RRC,"S1AP-E-RAB Release Command: MME_UE_S1AP_ID %d  ENB_UE_S1AP_ID %d  Error ue_context_p NULL \n",
-            S1AP_E_RAB_RELEASE_COMMAND (msg_p).mme_ue_s1ap_id, S1AP_E_RAB_RELEASE_COMMAND (msg_p).eNB_ue_s1ap_id);
-         return -1;
+      //gtp tunnel delete
+      msg_delete_tunnels_p = itti_alloc_new_message(TASK_RRC_ENB, GTPV1U_ENB_DELETE_TUNNEL_REQ);
+      memset(&GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p), 0, sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p)));
+      GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).rnti = ue_context_p->ue_context.rnti;
+
+      for(i = 0; i < NB_RB_MAX; i++) {
+        if(xid == ue_context_p->ue_context.e_rab[i].xid) {
+          GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).eps_bearer_id[GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).num_erab++] = ue_context_p->ue_context.enb_gtp_ebi[i];
+          ue_context_p->ue_context.enb_gtp_teid[i] = 0;
+          memset(&ue_context_p->ue_context.enb_gtp_addrs[i], 0, sizeof(ue_context_p->ue_context.enb_gtp_addrs[i]));
+          ue_context_p->ue_context.enb_gtp_ebi[i]  = 0;
+        }
+      }
+
+      itti_send_msg_to_task(TASK_GTPV1_U, instance, msg_delete_tunnels_p);
+      //S1AP_E_RAB_RELEASE_RESPONSE
+      rrc_eNB_send_S1AP_E_RAB_RELEASE_RESPONSE(&ctxt, ue_context_p, xid);
     }
+  } else {
+    LOG_E(RRC,"S1AP-E-RAB Release Command: MME_UE_S1AP_ID %d  ENB_UE_S1AP_ID %d  Error ue_context_p NULL \n",
+          S1AP_E_RAB_RELEASE_COMMAND (msg_p).mme_ue_s1ap_id, S1AP_E_RAB_RELEASE_COMMAND (msg_p).eNB_ue_s1ap_id);
+    return -1;
+  }
 
-    return 0;
+  return 0;
 }
 
 
-int rrc_eNB_send_S1AP_E_RAB_RELEASE_RESPONSE(const protocol_ctxt_t* const ctxt_pP, rrc_eNB_ue_context_t* const ue_context_pP, uint8_t xid){
-    int e_rabs_released = 0;
-    MessageDef   *msg_p;
+int rrc_eNB_send_S1AP_E_RAB_RELEASE_RESPONSE(const protocol_ctxt_t *const ctxt_pP, rrc_eNB_ue_context_t *const ue_context_pP, uint8_t xid) {
+  int e_rabs_released = 0;
+  MessageDef   *msg_p;
+  msg_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_E_RAB_RELEASE_RESPONSE);
+  S1AP_E_RAB_RELEASE_RESPONSE (msg_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
 
-    msg_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_E_RAB_RELEASE_RESPONSE);
-    S1AP_E_RAB_RELEASE_RESPONSE (msg_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
-    
-    for (int i = 0;  i < NB_RB_MAX; i++){
-        if (xid == ue_context_pP->ue_context.e_rab[i].xid){
-            S1AP_E_RAB_RELEASE_RESPONSE (msg_p).e_rab_release[e_rabs_released].e_rab_id = ue_context_pP->ue_context.e_rab[i].param.e_rab_id;
-            e_rabs_released++;
-            //clear
-            memset(&ue_context_pP->ue_context.e_rab[i],0,sizeof(e_rab_param_t));
-        }
+  for (int i = 0;  i < NB_RB_MAX; i++) {
+    if (xid == ue_context_pP->ue_context.e_rab[i].xid) {
+      S1AP_E_RAB_RELEASE_RESPONSE (msg_p).e_rab_release[e_rabs_released].e_rab_id = ue_context_pP->ue_context.e_rab[i].param.e_rab_id;
+      e_rabs_released++;
+      //clear
+      memset(&ue_context_pP->ue_context.e_rab[i],0,sizeof(e_rab_param_t));
     }
-    S1AP_E_RAB_RELEASE_RESPONSE (msg_p).nb_of_e_rabs_released = e_rabs_released;
-    S1AP_E_RAB_RELEASE_RESPONSE (msg_p).nb_of_e_rabs_failed = ue_context_pP->ue_context.nb_release_of_e_rabs;
-    memcpy(&(S1AP_E_RAB_RELEASE_RESPONSE (msg_p).e_rabs_failed[0]),&ue_context_pP->ue_context.e_rabs_release_failed[0],sizeof(e_rab_failed_t)*ue_context_pP->ue_context.nb_release_of_e_rabs);
-
-    ue_context_pP->ue_context.setup_e_rabs -= e_rabs_released;
-    LOG_I(RRC,"S1AP-E-RAB RELEASE RESPONSE: ENB_UE_S1AP_ID %d release_e_rabs %d setup_e_rabs %d \n",
-              S1AP_E_RAB_RELEASE_RESPONSE (msg_p).eNB_ue_s1ap_id,
-              e_rabs_released, ue_context_pP->ue_context.setup_e_rabs);
-    
-    itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
-    //clear xid
-    for(int i = 0; i < NB_RB_MAX; i++) {
-        ue_context_pP->ue_context.e_rab[i].xid = -1;
-    }
-    //clear release e_rabs
-    ue_context_pP->ue_context.nb_release_of_e_rabs = 0;
-    memset(&ue_context_pP->ue_context.e_rabs_release_failed[0],0,sizeof(e_rab_failed_t)*S1AP_MAX_E_RAB);
-    return 0;
+  }
+
+  S1AP_E_RAB_RELEASE_RESPONSE (msg_p).nb_of_e_rabs_released = e_rabs_released;
+  S1AP_E_RAB_RELEASE_RESPONSE (msg_p).nb_of_e_rabs_failed = ue_context_pP->ue_context.nb_release_of_e_rabs;
+  memcpy(&(S1AP_E_RAB_RELEASE_RESPONSE (msg_p).e_rabs_failed[0]),&ue_context_pP->ue_context.e_rabs_release_failed[0],sizeof(e_rab_failed_t)*ue_context_pP->ue_context.nb_release_of_e_rabs);
+  ue_context_pP->ue_context.setup_e_rabs -= e_rabs_released;
+  LOG_I(RRC,"S1AP-E-RAB RELEASE RESPONSE: ENB_UE_S1AP_ID %d release_e_rabs %d setup_e_rabs %d \n",
+        S1AP_E_RAB_RELEASE_RESPONSE (msg_p).eNB_ue_s1ap_id,
+        e_rabs_released, ue_context_pP->ue_context.setup_e_rabs);
+  itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
+
+  //clear xid
+  for(int i = 0; i < NB_RB_MAX; i++) {
+    ue_context_pP->ue_context.e_rab[i].xid = -1;
+  }
+
+  //clear release e_rabs
+  ue_context_pP->ue_context.nb_release_of_e_rabs = 0;
+  memset(&ue_context_pP->ue_context.e_rabs_release_failed[0],0,sizeof(e_rab_failed_t)*S1AP_MAX_E_RAB);
+  return 0;
 }
 
 /*------------------------------------------------------------------------------*/
@@ -1935,125 +1793,142 @@ int rrc_eNB_process_PAGING_IND(MessageDef *msg_p, const char *msg_name, instance
   uint32_t Ns = 0;  /* Ns: max(1,nB/T) */
   uint8_t i_s;  /* i_s = floor(UE_ID/N) mod Ns */
   uint32_t T;  /* DRX cycle */
+
   for (uint16_t tai_size = 0; tai_size < S1AP_PAGING_IND(msg_p).tai_size; tai_size++) {
-       LOG_D(RRC,"[eNB %d] In S1AP_PAGING_IND: MCC %d, MNC %d, TAC %d\n", instance, S1AP_PAGING_IND(msg_p).plmn_identity[tai_size].mcc,
-             S1AP_PAGING_IND(msg_p).plmn_identity[tai_size].mnc, S1AP_PAGING_IND(msg_p).tac[tai_size]);
-      if (RC.rrc[instance]->configuration.mcc == S1AP_PAGING_IND(msg_p).plmn_identity[tai_size].mcc
-          && RC.rrc[instance]->configuration.mnc == S1AP_PAGING_IND(msg_p).plmn_identity[tai_size].mnc
-          && RC.rrc[instance]->configuration.tac == S1AP_PAGING_IND(msg_p).tac[tai_size]) {
-          for (uint8_t CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
-              lte_frame_type_t frame_type = RC.eNB[instance][CC_id]->frame_parms.frame_type;
-              /* get nB from configuration */
-              /* get default DRX cycle from configuration */
-              Tc = (uint8_t)RC.rrc[instance]->configuration.pcch_defaultPagingCycle[CC_id];
-              if (Tc < PCCH_Config__defaultPagingCycle_rf32 || Tc > PCCH_Config__defaultPagingCycle_rf256) {
-                  continue;
-              }
-              Tue = (uint8_t)S1AP_PAGING_IND(msg_p).paging_drx;
-              /* set T = min(Tc,Tue) */
-              T = Tc < Tue ? Ttab[Tc] : Ttab[Tue];
-              /* set pcch_nB = PCCH-Config->nB */
-              pcch_nB = (uint32_t)RC.rrc[instance]->configuration.pcch_nB[CC_id];
-              switch (pcch_nB) {
-                case PCCH_Config__nB_fourT:
-                    Ns = 4;
-                    break;
-                case PCCH_Config__nB_twoT:
-                    Ns = 2;
-                    break;
-                default:
-                    Ns = 1;
-                    break;
-              }
-              /* set N = min(T,nB) */
-              if (pcch_nB > PCCH_Config__nB_oneT) {
-                switch (pcch_nB) {
-                case PCCH_Config__nB_halfT:
-                  N = T/2;
-                  break;
-                case PCCH_Config__nB_quarterT:
-                  N = T/4;
-                  break;
-                case PCCH_Config__nB_oneEighthT:
-                  N = T/8;
-                  break;
-                case PCCH_Config__nB_oneSixteenthT:
-                  N = T/16;
-                  break;
-                case PCCH_Config__nB_oneThirtySecondT:
-                  N = T/32;
-                  break;
-                default:
-                  /* pcch_nB error */
-                  LOG_E(RRC, "[eNB %d] In S1AP_PAGING_IND:  pcch_nB error (pcch_nB %d) \n",
-                      instance, pcch_nB);
-                  return (-1);
-                }
-              } else {
-                N = T;
-              }
-
-              /* insert data to UE_PF_PO or update data in UE_PF_PO */
-              pthread_mutex_lock(&ue_pf_po_mutex);
-              uint8_t i = 0;
-              for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
-                if ((UE_PF_PO[CC_id][i].enable_flag == TRUE && UE_PF_PO[CC_id][i].ue_index_value == (uint16_t)(S1AP_PAGING_IND(msg_p).ue_index_value))
-                    || (UE_PF_PO[CC_id][i].enable_flag != TRUE)) {
-                    /* set T = min(Tc,Tue) */
-                    UE_PF_PO[CC_id][i].T = T;
-                    /* set UE_ID */
-                    UE_PF_PO[CC_id][i].ue_index_value = (uint16_t)S1AP_PAGING_IND(msg_p).ue_index_value;
-                    /* calculate PF and PO */
-                    /* set PF_min : SFN mod T = (T div N)*(UE_ID mod N) */
-                    UE_PF_PO[CC_id][i].PF_min = (T / N) * (UE_PF_PO[CC_id][i].ue_index_value % N);
-                    /* set PO */
-                    /* i_s = floor(UE_ID/N) mod Ns */
-                    i_s = (uint8_t)((UE_PF_PO[CC_id][i].ue_index_value / N) % Ns);
-                    if (Ns == 1) {
-                        UE_PF_PO[CC_id][i].PO = (frame_type==FDD) ? 9 : 0;
-                    } else if (Ns==2) {
-                        UE_PF_PO[CC_id][i].PO = (frame_type==FDD) ? (4+(5*i_s)) : (5*i_s);
-                    } else if (Ns==4) {
-                        UE_PF_PO[CC_id][i].PO = (frame_type==FDD) ? (4*(i_s&1)+(5*(i_s>>1))) : ((i_s&1)+(5*(i_s>>1)));
-                    }
-                    if (UE_PF_PO[CC_id][i].enable_flag == TRUE) {
-                        //paging exist UE log
-                        LOG_D(RRC,"[eNB %d] CC_id %d In S1AP_PAGING_IND: Update exist UE %d, T %d, PF %d, PO %d\n", instance, CC_id, UE_PF_PO[CC_id][i].ue_index_value, T, UE_PF_PO[CC_id][i].PF_min, UE_PF_PO[CC_id][i].PO);
-                    } else {
-                        /* set enable_flag */
-                        UE_PF_PO[CC_id][i].enable_flag = TRUE;
-                        //paging new UE log
-                        LOG_D(RRC,"[eNB %d] CC_id %d In S1AP_PAGING_IND: Insert a new UE %d, T %d, PF %d, PO %d\n", instance, CC_id, UE_PF_PO[CC_id][i].ue_index_value, T, UE_PF_PO[CC_id][i].PF_min, UE_PF_PO[CC_id][i].PO);
-                    }
-                    break;
-                }
-              }
-              pthread_mutex_unlock(&ue_pf_po_mutex);
-
-              uint32_t length;
-              uint8_t buffer[RRC_BUF_SIZE];
-              uint8_t *message_buffer;
-              /* Transfer data to PDCP */
-              MessageDef *message_p;
-              message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_PCCH_DATA_REQ);
-              /* Create message for PDCP (DLInformationTransfer_t) */
-              length = do_Paging (instance,
-                                  buffer,
-                                  S1AP_PAGING_IND(msg_p).ue_paging_identity,
-                                  S1AP_PAGING_IND(msg_p).cn_domain);
-              message_buffer = itti_malloc (TASK_RRC_ENB, TASK_PDCP_ENB, length);
-              /* Uses a new buffer to avoid issue with PDCP buffer content that could be changed by PDCP (asynchronous message handling). */
-              memcpy (message_buffer, buffer, length);
-              RRC_PCCH_DATA_REQ (message_p).sdu_size  = length;
-              RRC_PCCH_DATA_REQ (message_p).sdu_p     = message_buffer;
-              RRC_PCCH_DATA_REQ (message_p).mode      = PDCP_TRANSMISSION_MODE_TRANSPARENT;  /* not used */
-              RRC_PCCH_DATA_REQ (message_p).rnti      = P_RNTI;
-              RRC_PCCH_DATA_REQ (message_p).ue_index  = i;
-              RRC_PCCH_DATA_REQ (message_p).CC_id  = CC_id;
-              LOG_D(RRC, "[eNB %d] CC_id %d In S1AP_PAGING_IND: send encdoed buffer to PDCP buffer_size %d\n", instance, CC_id, length);
-              itti_send_msg_to_task (TASK_PDCP_ENB, instance, message_p);
+    LOG_D(RRC,"[eNB %d] In S1AP_PAGING_IND: MCC %d, MNC %d, TAC %d\n", instance, S1AP_PAGING_IND(msg_p).plmn_identity[tai_size].mcc,
+          S1AP_PAGING_IND(msg_p).plmn_identity[tai_size].mnc, S1AP_PAGING_IND(msg_p).tac[tai_size]);
+
+    if (RC.rrc[instance]->configuration.mcc == S1AP_PAGING_IND(msg_p).plmn_identity[tai_size].mcc
+        && RC.rrc[instance]->configuration.mnc == S1AP_PAGING_IND(msg_p).plmn_identity[tai_size].mnc
+        && RC.rrc[instance]->configuration.tac == S1AP_PAGING_IND(msg_p).tac[tai_size]) {
+      for (uint8_t CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
+        lte_frame_type_t frame_type = RC.eNB[instance][CC_id]->frame_parms.frame_type;
+        /* get nB from configuration */
+        /* get default DRX cycle from configuration */
+        Tc = (uint8_t)RC.rrc[instance]->configuration.pcch_defaultPagingCycle[CC_id];
+
+        if (Tc < PCCH_Config__defaultPagingCycle_rf32 || Tc > PCCH_Config__defaultPagingCycle_rf256) {
+          continue;
+        }
+
+        Tue = (uint8_t)S1AP_PAGING_IND(msg_p).paging_drx;
+        /* set T = min(Tc,Tue) */
+        T = Tc < Tue ? Ttab[Tc] : Ttab[Tue];
+        /* set pcch_nB = PCCH-Config->nB */
+        pcch_nB = (uint32_t)RC.rrc[instance]->configuration.pcch_nB[CC_id];
+
+        switch (pcch_nB) {
+          case PCCH_Config__nB_fourT:
+            Ns = 4;
+            break;
+
+          case PCCH_Config__nB_twoT:
+            Ns = 2;
+            break;
+
+          default:
+            Ns = 1;
+            break;
+        }
+
+        /* set N = min(T,nB) */
+        if (pcch_nB > PCCH_Config__nB_oneT) {
+          switch (pcch_nB) {
+            case PCCH_Config__nB_halfT:
+              N = T/2;
+              break;
+
+            case PCCH_Config__nB_quarterT:
+              N = T/4;
+              break;
+
+            case PCCH_Config__nB_oneEighthT:
+              N = T/8;
+              break;
+
+            case PCCH_Config__nB_oneSixteenthT:
+              N = T/16;
+              break;
+
+            case PCCH_Config__nB_oneThirtySecondT:
+              N = T/32;
+              break;
+
+            default:
+              /* pcch_nB error */
+              LOG_E(RRC, "[eNB %d] In S1AP_PAGING_IND:  pcch_nB error (pcch_nB %d) \n",
+                    instance, pcch_nB);
+              return (-1);
+          }
+        } else {
+          N = T;
+        }
+
+        /* insert data to UE_PF_PO or update data in UE_PF_PO */
+        pthread_mutex_lock(&ue_pf_po_mutex);
+        uint8_t i = 0;
+
+        for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
+          if ((UE_PF_PO[CC_id][i].enable_flag == TRUE && UE_PF_PO[CC_id][i].ue_index_value == (uint16_t)(S1AP_PAGING_IND(msg_p).ue_index_value))
+              || (UE_PF_PO[CC_id][i].enable_flag != TRUE)) {
+            /* set T = min(Tc,Tue) */
+            UE_PF_PO[CC_id][i].T = T;
+            /* set UE_ID */
+            UE_PF_PO[CC_id][i].ue_index_value = (uint16_t)S1AP_PAGING_IND(msg_p).ue_index_value;
+            /* calculate PF and PO */
+            /* set PF_min : SFN mod T = (T div N)*(UE_ID mod N) */
+            UE_PF_PO[CC_id][i].PF_min = (T / N) * (UE_PF_PO[CC_id][i].ue_index_value % N);
+            /* set PO */
+            /* i_s = floor(UE_ID/N) mod Ns */
+            i_s = (uint8_t)((UE_PF_PO[CC_id][i].ue_index_value / N) % Ns);
+
+            if (Ns == 1) {
+              UE_PF_PO[CC_id][i].PO = (frame_type==FDD) ? 9 : 0;
+            } else if (Ns==2) {
+              UE_PF_PO[CC_id][i].PO = (frame_type==FDD) ? (4+(5*i_s)) : (5*i_s);
+            } else if (Ns==4) {
+              UE_PF_PO[CC_id][i].PO = (frame_type==FDD) ? (4*(i_s&1)+(5*(i_s>>1))) : ((i_s&1)+(5*(i_s>>1)));
+            }
+
+            if (UE_PF_PO[CC_id][i].enable_flag == TRUE) {
+              //paging exist UE log
+              LOG_D(RRC,"[eNB %d] CC_id %d In S1AP_PAGING_IND: Update exist UE %d, T %d, PF %d, PO %d\n", instance, CC_id, UE_PF_PO[CC_id][i].ue_index_value, T, UE_PF_PO[CC_id][i].PF_min, UE_PF_PO[CC_id][i].PO);
+            } else {
+              /* set enable_flag */
+              UE_PF_PO[CC_id][i].enable_flag = TRUE;
+              //paging new UE log
+              LOG_D(RRC,"[eNB %d] CC_id %d In S1AP_PAGING_IND: Insert a new UE %d, T %d, PF %d, PO %d\n", instance, CC_id, UE_PF_PO[CC_id][i].ue_index_value, T, UE_PF_PO[CC_id][i].PF_min, UE_PF_PO[CC_id][i].PO);
+            }
+
+            break;
           }
+        }
+
+        pthread_mutex_unlock(&ue_pf_po_mutex);
+        uint32_t length;
+        uint8_t buffer[RRC_BUF_SIZE];
+        uint8_t *message_buffer;
+        /* Transfer data to PDCP */
+        MessageDef *message_p;
+        message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_PCCH_DATA_REQ);
+        /* Create message for PDCP (DLInformationTransfer_t) */
+        length = do_Paging (instance,
+                            buffer,
+                            S1AP_PAGING_IND(msg_p).ue_paging_identity,
+                            S1AP_PAGING_IND(msg_p).cn_domain);
+        message_buffer = itti_malloc (TASK_RRC_ENB, TASK_PDCP_ENB, length);
+        /* Uses a new buffer to avoid issue with PDCP buffer content that could be changed by PDCP (asynchronous message handling). */
+        memcpy (message_buffer, buffer, length);
+        RRC_PCCH_DATA_REQ (message_p).sdu_size  = length;
+        RRC_PCCH_DATA_REQ (message_p).sdu_p     = message_buffer;
+        RRC_PCCH_DATA_REQ (message_p).mode      = PDCP_TRANSMISSION_MODE_TRANSPARENT;  /* not used */
+        RRC_PCCH_DATA_REQ (message_p).rnti      = P_RNTI;
+        RRC_PCCH_DATA_REQ (message_p).ue_index  = i;
+        RRC_PCCH_DATA_REQ (message_p).CC_id  = CC_id;
+        LOG_D(RRC, "[eNB %d] CC_id %d In S1AP_PAGING_IND: send encdoed buffer to PDCP buffer_size %d\n", instance, CC_id, length);
+        itti_send_msg_to_task (TASK_PDCP_ENB, instance, message_p);
       }
+    }
   }
 
   return (0);
diff --git a/openair2/X2AP/MESSAGES/ASN1/R14.5/x2ap-14.5.0.asn1 b/openair2/X2AP/MESSAGES/ASN1/R14.5/x2ap-14.5.0.asn1
new file mode 100755
index 0000000000000000000000000000000000000000..acde008ffbfa556b37ee7488fbbe3592acac2e27
--- /dev/null
+++ b/openair2/X2AP/MESSAGES/ASN1/R14.5/x2ap-14.5.0.asn1
@@ -0,0 +1,5065 @@
+-- **************************************************************
+--
+-- Elementary Procedure definitions
+--
+-- **************************************************************
+
+X2AP-PDU-Descriptions {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-PDU-Descriptions (0) }
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+	Criticality,
+	ProcedureCode
+
+FROM X2AP-CommonDataTypes
+
+	CellActivationRequest,
+	CellActivationResponse,
+	CellActivationFailure,
+	ENBConfigurationUpdate,
+	ENBConfigurationUpdateAcknowledge,
+	ENBConfigurationUpdateFailure,
+	ErrorIndication,
+	HandoverCancel,
+	HandoverReport,
+	HandoverPreparationFailure,
+	HandoverRequest,
+	HandoverRequestAcknowledge,
+	LoadInformation,
+	PrivateMessage,
+	ResetRequest,
+	ResetResponse,
+	ResourceStatusFailure,
+	ResourceStatusRequest,
+	ResourceStatusResponse,
+	ResourceStatusUpdate, 
+	RLFIndication,
+	SNStatusTransfer,
+	UEContextRelease,
+	X2SetupFailure,
+	X2SetupRequest,
+	X2SetupResponse,
+	MobilityChangeRequest,
+	MobilityChangeAcknowledge,
+	MobilityChangeFailure,
+	X2Release,
+	X2APMessageTransfer,
+	SeNBAdditionRequest,
+	SeNBAdditionRequestAcknowledge,
+	SeNBAdditionRequestReject,
+	SeNBReconfigurationComplete,
+	SeNBModificationRequest,
+	SeNBModificationRequestAcknowledge,
+	SeNBModificationRequestReject,
+	SeNBModificationRequired,
+	SeNBModificationConfirm,
+	SeNBModificationRefuse,
+	SeNBReleaseRequest,
+	SeNBReleaseRequired,
+	SeNBReleaseConfirm,
+	SeNBCounterCheckRequest,
+	X2RemovalFailure,
+	X2RemovalRequest,
+	X2RemovalResponse,
+	RetrieveUEContextRequest,
+	RetrieveUEContextResponse,
+	RetrieveUEContextFailure
+
+FROM X2AP-PDU-Contents
+
+	id-cellActivation,
+	id-eNBConfigurationUpdate,
+	id-errorIndication,
+	id-handoverCancel, 
+	id-handoverReport,
+	id-handoverPreparation,
+	
+	id-loadIndication,
+	id-privateMessage,
+	id-reset,
+	
+	id-resourceStatusReporting,
+	id-resourceStatusReportingInitiation, 
+	id-rLFIndication,
+	id-snStatusTransfer,
+	id-uEContextRelease,
+	id-x2Setup,
+	id-mobilitySettingsChange,
+	id-x2Release,
+	id-x2APMessageTransfer,
+	id-seNBAdditionPreparation,
+	id-seNBReconfigurationCompletion,
+	id-meNBinitiatedSeNBModificationPreparation,
+	id-seNBinitiatedSeNBModification,
+	id-meNBinitiatedSeNBRelease,
+	id-seNBinitiatedSeNBRelease,
+	id-seNBCounterCheck,
+	id-x2Removal,
+	id-retrieveUEContext
+
+FROM X2AP-Constants;
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure Class
+--
+-- **************************************************************
+
+X2AP-ELEMENTARY-PROCEDURE ::= CLASS {
+	&InitiatingMessage				,
+	&SuccessfulOutcome				OPTIONAL,
+	&UnsuccessfulOutcome				OPTIONAL,
+	&procedureCode			ProcedureCode 	UNIQUE,
+	&criticality			Criticality 	DEFAULT ignore
+}
+WITH SYNTAX {
+	INITIATING MESSAGE		&InitiatingMessage
+	[SUCCESSFUL OUTCOME		&SuccessfulOutcome]
+	[UNSUCCESSFUL OUTCOME		&UnsuccessfulOutcome]
+	PROCEDURE CODE			&procedureCode
+	[CRITICALITY			&criticality]
+}
+
+-- **************************************************************
+--
+-- Interface PDU Definition
+--
+-- **************************************************************
+
+X2AP-PDU ::= CHOICE {
+	initiatingMessage	InitiatingMessage,
+	successfulOutcome	SuccessfulOutcome,
+	unsuccessfulOutcome	UnsuccessfulOutcome,
+	...
+}
+
+InitiatingMessage ::= SEQUENCE {
+	procedureCode	X2AP-ELEMENTARY-PROCEDURE.&procedureCode		({X2AP-ELEMENTARY-PROCEDURES}),
+	criticality		X2AP-ELEMENTARY-PROCEDURE.&criticality			({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+	value			X2AP-ELEMENTARY-PROCEDURE.&InitiatingMessage	({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+	procedureCode	X2AP-ELEMENTARY-PROCEDURE.&procedureCode		({X2AP-ELEMENTARY-PROCEDURES}),
+	criticality		X2AP-ELEMENTARY-PROCEDURE.&criticality			({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+	value			X2AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome	({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+	procedureCode	X2AP-ELEMENTARY-PROCEDURE.&procedureCode		({X2AP-ELEMENTARY-PROCEDURES}),
+	criticality		X2AP-ELEMENTARY-PROCEDURE.&criticality			({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+	value			X2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome	({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure List
+--
+-- **************************************************************
+
+X2AP-ELEMENTARY-PROCEDURES X2AP-ELEMENTARY-PROCEDURE ::= {
+	X2AP-ELEMENTARY-PROCEDURES-CLASS-1			|
+	X2AP-ELEMENTARY-PROCEDURES-CLASS-2			,
+	...
+}
+
+X2AP-ELEMENTARY-PROCEDURES-CLASS-1 X2AP-ELEMENTARY-PROCEDURE ::= {
+	handoverPreparation										|
+	reset													|
+	x2Setup													|
+	resourceStatusReportingInitiation						|
+	eNBConfigurationUpdate									|
+	mobilitySettingsChange									|
+	cellActivation											|
+	seNBAdditionPreparation									|
+	meNBinitiatedSeNBModificationPreparation				|
+	seNBinitiatedSeNBModification							|
+	seNBinitiatedSeNBRelease								|
+	x2Removal												|
+	retrieveUEContext,
+	...
+}
+
+X2AP-ELEMENTARY-PROCEDURES-CLASS-2 X2AP-ELEMENTARY-PROCEDURE ::= {
+	snStatusTransfer						|
+	uEContextRelease						|
+	handoverCancel							|
+	errorIndication							|
+	resourceStatusReporting					|
+	loadIndication							|
+	privateMessage							|
+	rLFIndication							|
+	handoverReport							|
+	x2Release								|
+	x2APMessageTransfer						|
+	seNBReconfigurationCompletion			|
+	meNBinitiatedSeNBRelease				|
+	seNBCounterCheck,
+	...
+
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedures
+--
+-- **************************************************************
+
+handoverPreparation X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		HandoverRequest
+	SUCCESSFUL OUTCOME		HandoverRequestAcknowledge
+	UNSUCCESSFUL OUTCOME	HandoverPreparationFailure
+	PROCEDURE CODE			id-handoverPreparation
+	CRITICALITY				reject
+}
+
+snStatusTransfer X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		SNStatusTransfer
+	PROCEDURE CODE			id-snStatusTransfer
+	CRITICALITY				ignore
+}
+
+uEContextRelease X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UEContextRelease
+	PROCEDURE CODE			id-uEContextRelease
+	CRITICALITY				ignore
+}
+
+
+handoverCancel X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		HandoverCancel
+	PROCEDURE CODE			id-handoverCancel
+	CRITICALITY				ignore
+}
+
+handoverReport X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		HandoverReport
+	PROCEDURE CODE			id-handoverReport
+	CRITICALITY				ignore
+}
+
+errorIndication X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		ErrorIndication
+	PROCEDURE CODE			id-errorIndication
+	CRITICALITY				ignore
+}
+
+reset	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		ResetRequest
+	SUCCESSFUL OUTCOME		ResetResponse
+	PROCEDURE CODE			id-reset
+	CRITICALITY				reject
+}
+
+x2Setup	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		X2SetupRequest
+	SUCCESSFUL OUTCOME		X2SetupResponse
+	UNSUCCESSFUL OUTCOME	X2SetupFailure
+	PROCEDURE CODE			id-x2Setup
+	CRITICALITY				reject
+}
+
+
+loadIndication X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		LoadInformation
+	PROCEDURE CODE			id-loadIndication
+	CRITICALITY				ignore
+}
+
+eNBConfigurationUpdate		X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		ENBConfigurationUpdate
+	SUCCESSFUL OUTCOME		ENBConfigurationUpdateAcknowledge
+	UNSUCCESSFUL OUTCOME	ENBConfigurationUpdateFailure
+	PROCEDURE CODE			id-eNBConfigurationUpdate
+	CRITICALITY				reject
+}
+
+resourceStatusReportingInitiation	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE				ResourceStatusRequest
+	SUCCESSFUL OUTCOME				ResourceStatusResponse
+	UNSUCCESSFUL OUTCOME			ResourceStatusFailure
+	PROCEDURE CODE					id-resourceStatusReportingInitiation
+	CRITICALITY						reject
+}
+
+resourceStatusReporting X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		ResourceStatusUpdate
+	PROCEDURE CODE			id-resourceStatusReporting
+	CRITICALITY				ignore
+}
+
+rLFIndication X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		RLFIndication
+	PROCEDURE CODE			id-rLFIndication
+	CRITICALITY				ignore
+}
+
+privateMessage			X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		PrivateMessage
+	PROCEDURE CODE			id-privateMessage
+	CRITICALITY				ignore
+}
+
+mobilitySettingsChange	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		MobilityChangeRequest
+	SUCCESSFUL OUTCOME		MobilityChangeAcknowledge
+	UNSUCCESSFUL OUTCOME	MobilityChangeFailure
+	PROCEDURE CODE			id-mobilitySettingsChange
+	CRITICALITY				reject
+}
+
+cellActivation	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		CellActivationRequest
+	SUCCESSFUL OUTCOME		CellActivationResponse
+	UNSUCCESSFUL OUTCOME	CellActivationFailure
+	PROCEDURE CODE			id-cellActivation
+	CRITICALITY				reject
+}
+
+x2Release X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		X2Release
+	PROCEDURE CODE			id-x2Release
+	CRITICALITY				reject
+}
+
+x2APMessageTransfer X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		X2APMessageTransfer
+	PROCEDURE CODE			id-x2APMessageTransfer
+	CRITICALITY				reject
+}
+
+seNBAdditionPreparation	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		SeNBAdditionRequest
+	SUCCESSFUL OUTCOME		SeNBAdditionRequestAcknowledge
+	UNSUCCESSFUL OUTCOME	SeNBAdditionRequestReject
+	PROCEDURE CODE			id-seNBAdditionPreparation
+	CRITICALITY				reject
+}
+
+seNBReconfigurationCompletion	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		SeNBReconfigurationComplete
+	PROCEDURE CODE			id-seNBReconfigurationCompletion
+	CRITICALITY				ignore
+}
+
+meNBinitiatedSeNBModificationPreparation	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		SeNBModificationRequest
+	SUCCESSFUL OUTCOME		SeNBModificationRequestAcknowledge
+	UNSUCCESSFUL OUTCOME	SeNBModificationRequestReject
+	PROCEDURE CODE			id-meNBinitiatedSeNBModificationPreparation
+	CRITICALITY				reject
+}
+
+seNBinitiatedSeNBModification	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		SeNBModificationRequired
+	SUCCESSFUL OUTCOME		SeNBModificationConfirm
+	UNSUCCESSFUL OUTCOME	SeNBModificationRefuse
+	PROCEDURE CODE			id-seNBinitiatedSeNBModification
+	CRITICALITY				reject
+}
+
+meNBinitiatedSeNBRelease	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		SeNBReleaseRequest
+	PROCEDURE CODE			id-meNBinitiatedSeNBRelease
+	CRITICALITY				ignore
+}
+
+seNBinitiatedSeNBRelease	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		SeNBReleaseRequired
+	SUCCESSFUL OUTCOME		SeNBReleaseConfirm
+	PROCEDURE CODE			id-seNBinitiatedSeNBRelease
+	CRITICALITY				reject
+}
+
+seNBCounterCheck	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		SeNBCounterCheckRequest
+	PROCEDURE CODE			id-seNBCounterCheck
+	CRITICALITY				reject
+}
+
+x2Removal	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		X2RemovalRequest
+	SUCCESSFUL OUTCOME		X2RemovalResponse
+	UNSUCCESSFUL OUTCOME	X2RemovalFailure
+	PROCEDURE CODE			id-x2Removal
+	CRITICALITY				reject
+}
+
+retrieveUEContext	X2AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		RetrieveUEContextRequest
+	SUCCESSFUL OUTCOME		RetrieveUEContextResponse
+	UNSUCCESSFUL OUTCOME	RetrieveUEContextFailure
+	PROCEDURE CODE			id-retrieveUEContext
+	CRITICALITY				reject
+}
+
+END
+
+
+-- **************************************************************
+--
+-- PDU definitions for X2AP.
+--
+-- **************************************************************
+
+X2AP-PDU-Contents {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-PDU-Contents (1) }
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+	ABSInformation,
+	ABS-Status,
+	AS-SecurityInformation,
+	BearerType,
+	Cause,
+	CompositeAvailableCapacityGroup,
+	Correlation-ID,
+	COUNTvalue,
+	CellReportingIndicator,
+	CriticalityDiagnostics,
+	CRNTI,
+	CSGMembershipStatus,
+	CSG-Id,
+	DeactivationIndication,
+	DL-Forwarding,
+	DynamicDLTransmissionInformation,
+	ECGI,
+	E-RAB-ID,
+	E-RAB-Level-QoS-Parameters,
+	E-RAB-List,
+	EUTRANTraceID,
+	GlobalENB-ID,
+	GTPtunnelEndpoint,
+	GUGroupIDList,
+	GUMMEI,
+	HandoverReportType,
+	HandoverRestrictionList,
+	Masked-IMEISV,
+	InvokeIndication,
+	LocationReportingInformation,
+	MDT-Configuration,
+	ManagementBasedMDTallowed,
+	MDTPLMNList,
+	Neighbour-Information,
+	PCI,
+	PDCP-SN,
+	PLMN-Identity,
+	ReceiveStatusofULPDCPSDUs,
+	Registration-Request,
+	RelativeNarrowbandTxPower,
+	RadioResourceStatus,
+	RRCConnReestabIndicator,
+	RRCConnSetupIndicator,
+	UE-RLF-Report-Container,
+	RRC-Context,
+	ServedCell-Information,
+	ServedCells,
+	ShortMAC-I,
+	SRVCCOperationPossible,
+	SubscriberProfileIDforRFP,
+	TargetCellInUTRAN,
+	TargeteNBtoSource-eNBTransparentContainer,
+	TimeToWait,
+	TraceActivation,
+	TraceDepth,
+	TransportLayerAddress,
+	UEAggregateMaximumBitRate,
+	UE-HistoryInformation,
+	UE-HistoryInformationFromTheUE,
+	UE-S1AP-ID,
+	UESecurityCapabilities,
+	UE-X2AP-ID,
+	UL-HighInterferenceIndicationInfo,
+	UL-InterferenceOverloadIndication,
+	HWLoadIndicator,
+	S1TNLLoadIndicator,
+	Measurement-ID,
+	ReportCharacteristics,
+	MobilityParametersInformation,
+	MobilityParametersModificationRange,
+	ReceiveStatusOfULPDCPSDUsExtended,
+	COUNTValueExtended,
+	SubframeAssignment,
+	ExtendedULInterferenceOverloadInfo,
+	ExpectedUEBehaviour,
+	SeNBSecurityKey,
+	MeNBtoSeNBContainer,
+	SeNBtoMeNBContainer,
+	SCGChangeIndication,
+	CoMPInformation,
+	ReportingPeriodicityRSRPMR,
+	RSRPMRList,
+	UE-RLF-Report-Container-for-extended-bands,
+	ProSeAuthorized,
+	CoverageModificationList,
+	ReportingPeriodicityCSIR,
+	CSIReportList,
+	ReceiveStatusOfULPDCPSDUsPDCP-SNlength18,
+	COUNTvaluePDCP-SNlength18,
+	LHN-ID,
+	UE-ContextKeptIndicator,
+	UE-X2AP-ID-Extension,
+	SIPTOBearerDeactivationIndication,
+	TunnelInformation,
+	V2XServicesAuthorized,
+	X2BenefitValue,
+	ResumeID,
+	EUTRANCellIdentifier,
+	MakeBeforeBreakIndicator,
+	WTID,
+	WT-UE-XwAP-ID,
+	UESidelinkAggregateMaximumBitRate
+
+FROM X2AP-IEs
+
+	PrivateIE-Container{},
+	ProtocolExtensionContainer{},
+	ProtocolIE-Container{},
+	ProtocolIE-ContainerList{},
+	ProtocolIE-ContainerPair{},
+	ProtocolIE-ContainerPairList{},
+	ProtocolIE-Single-Container{},
+	X2AP-PRIVATE-IES,
+	X2AP-PROTOCOL-EXTENSION,
+	X2AP-PROTOCOL-IES,
+	X2AP-PROTOCOL-IES-PAIR
+FROM X2AP-Containers
+
+	id-ABSInformation,
+	id-ActivatedCellList,
+	id-BearerType,
+	id-Cause,
+	id-CellInformation,
+	id-CellInformation-Item,
+	id-CellMeasurementResult,
+	id-CellMeasurementResult-Item,
+	id-CellToReport,
+	id-CellToReport-Item,
+	id-CompositeAvailableCapacityGroup,
+	id-CriticalityDiagnostics,
+	id-DeactivationIndication,
+	id-DynamicDLTransmissionInformation,
+	id-E-RABs-Admitted-Item,
+	id-E-RABs-Admitted-List,
+	id-E-RABs-NotAdmitted-List,
+	id-E-RABs-SubjectToStatusTransfer-List,
+	id-E-RABs-SubjectToStatusTransfer-Item,
+	id-E-RABs-ToBeSetup-Item,
+	id-GlobalENB-ID,
+	id-GUGroupIDList,
+	id-GUGroupIDToAddList,
+	id-GUGroupIDToDeleteList,
+	id-GUMMEI-ID,
+	id-Masked-IMEISV,
+	id-InvokeIndication,
+	id-New-eNB-UE-X2AP-ID,
+	id-Old-eNB-UE-X2AP-ID,
+	id-Registration-Request,
+	id-ReportingPeriodicity,
+	id-ServedCells,
+	id-ServedCellsToActivate,
+	id-ServedCellsToAdd,
+	id-ServedCellsToModify,
+	id-ServedCellsToDelete,
+	id-SRVCCOperationPossible,
+	id-TargetCell-ID,
+	id-TargeteNBtoSource-eNBTransparentContainer,
+	id-TimeToWait,
+	id-TraceActivation,
+	id-UE-ContextInformation,
+	id-UE-HistoryInformation,
+	id-UE-X2AP-ID,
+	id-Measurement-ID,
+	id-ReportCharacteristics,
+	id-ENB1-Measurement-ID,
+	id-ENB2-Measurement-ID,
+	id-ENB1-Cell-ID,
+	id-ENB2-Cell-ID,
+	id-ENB2-Proposed-Mobility-Parameters,
+	id-ENB1-Mobility-Parameters,
+	id-ENB2-Mobility-Parameters-Modification-Range,
+	id-FailureCellPCI,
+	id-Re-establishmentCellECGI,
+	id-FailureCellCRNTI,
+	id-ShortMAC-I,
+	id-SourceCellECGI,
+	id-FailureCellECGI,
+	id-HandoverReportType,
+	id-UE-RLF-Report-Container,
+	id-PartialSuccessIndicator,
+	id-MeasurementInitiationResult-List,
+	id-MeasurementInitiationResult-Item,
+	id-MeasurementFailureCause-Item,
+	id-CompleteFailureCauseInformation-List,
+	id-CompleteFailureCauseInformation-Item,
+	id-CSGMembershipStatus,
+	id-CSG-Id,
+	id-MDTConfiguration,
+	id-ManagementBasedMDTallowed,
+	id-ABS-Status,
+	id-RRCConnSetupIndicator,
+	id-RRCConnReestabIndicator,
+	id-TargetCellInUTRAN,
+	id-MobilityInformation,
+	id-SourceCellCRNTI,
+	id-ManagementBasedMDTPLMNList,
+	id-ReceiveStatusOfULPDCPSDUsExtended,
+	id-ULCOUNTValueExtended,
+	id-DLCOUNTValueExtended,
+	id-IntendedULDLConfiguration,
+	id-ExtendedULInterferenceOverloadInfo,
+	id-RNL-Header,
+	id-x2APMessage,
+	id-UE-HistoryInformationFromTheUE,
+	id-ExpectedUEBehaviour,
+	id-MeNB-UE-X2AP-ID,
+	id-SeNB-UE-X2AP-ID,
+	id-UE-SecurityCapabilities,
+	id-SeNBSecurityKey,
+	id-SeNBUEAggregateMaximumBitRate,
+	id-ServingPLMN,
+	id-E-RABs-ToBeAdded-List,
+	id-E-RABs-ToBeAdded-Item,
+	id-MeNBtoSeNBContainer,
+	id-E-RABs-Admitted-ToBeAdded-List,
+	id-E-RABs-Admitted-ToBeAdded-Item,
+	id-SeNBtoMeNBContainer,
+	id-ResponseInformationSeNBReconfComp,
+	id-UE-ContextInformationSeNBModReq,
+	id-E-RABs-ToBeAdded-ModReqItem,
+	id-E-RABs-ToBeModified-ModReqItem,
+	id-E-RABs-ToBeReleased-ModReqItem,
+	id-E-RABs-Admitted-ToBeAdded-ModAckList,
+	id-E-RABs-Admitted-ToBeModified-ModAckList,
+	id-E-RABs-Admitted-ToBeReleased-ModAckList,
+	id-E-RABs-Admitted-ToBeAdded-ModAckItem,
+	id-E-RABs-Admitted-ToBeModified-ModAckItem,
+	id-E-RABs-Admitted-ToBeReleased-ModAckItem,
+	id-SCGChangeIndication,
+	id-E-RABs-ToBeReleased-ModReqd,
+	id-E-RABs-ToBeReleased-ModReqdItem,
+	id-E-RABs-ToBeReleased-List-RelReq,
+	id-E-RABs-ToBeReleased-RelReqItem,
+	id-E-RABs-ToBeReleased-List-RelConf,
+	id-E-RABs-ToBeReleased-RelConfItem,
+	id-E-RABs-SubjectToCounterCheck-List,
+	id-E-RABs-SubjectToCounterCheckItem,
+	id-CoMPInformation,
+	id-ReportingPeriodicityRSRPMR,
+	id-RSRPMRList,
+	id-UE-RLF-Report-Container-for-extended-bands,
+	id-ProSeAuthorized,
+	id-CoverageModificationList,
+	id-ReportingPeriodicityCSIR,
+	id-CSIReportList,
+	id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18,
+	id-ULCOUNTValuePDCP-SNlength18,
+	id-DLCOUNTValuePDCP-SNlength18,
+	id-LHN-ID,
+	id-Correlation-ID,
+	id-SIPTO-Correlation-ID,
+	id-UE-ContextReferenceAtSeNB,
+	id-UE-ContextReferenceAtWT,
+	id-UE-ContextKeptIndicator,
+	id-WT-UE-ContextKeptIndicator,
+	id-New-eNB-UE-X2AP-ID-Extension,
+	id-Old-eNB-UE-X2AP-ID-Extension,
+	id-MeNB-UE-X2AP-ID-Extension,
+	id-SeNB-UE-X2AP-ID-Extension,
+	id-SIPTO-BearerDeactivationIndication,
+	id-Tunnel-Information-for-BBF,
+	id-SIPTO-L-GW-TransportLayerAddress,
+	id-GW-TransportLayerAddress,
+	id-X2RemovalThreshold,
+	id-CellReportingIndicator,
+	id-V2XServicesAuthorized,
+	id-resumeID,
+	id-UE-ContextInformationRetrieve,
+	id-E-RABs-ToBeSetupRetrieve-Item,
+	id-NewEUTRANCellIdentifier,
+	id-MakeBeforeBreakIndicator,
+	id-UESidelinkAggregateMaximumBitRate,
+	id-uL-GTPtunnelEndpoint,
+
+	maxCellineNB,
+	maxnoofBearers,
+	maxnoofPDCP-SN,
+	maxFailedMeasObjects,
+	maxnoofCellIDforMDT,
+	maxnoofTAforMDT
+FROM X2AP-Constants;
+
+-- **************************************************************
+--
+-- HANDOVER REQUEST
+--
+-- **************************************************************
+
+HandoverRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container	{{HandoverRequest-IEs}},
+	...
+}
+
+HandoverRequest-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-Old-eNB-UE-X2AP-ID				CRITICALITY reject	TYPE UE-X2AP-ID							PRESENCE mandatory}|
+	{ ID id-Cause							CRITICALITY ignore	TYPE Cause								PRESENCE mandatory}|
+	{ ID id-TargetCell-ID					CRITICALITY reject	TYPE ECGI								PRESENCE mandatory}|
+	{ ID id-GUMMEI-ID						CRITICALITY reject	TYPE GUMMEI								PRESENCE mandatory}|
+	{ ID id-UE-ContextInformation			CRITICALITY reject	TYPE UE-ContextInformation				PRESENCE mandatory}|
+	{ ID id-UE-HistoryInformation			CRITICALITY ignore	TYPE UE-HistoryInformation				PRESENCE mandatory}|
+	{ ID id-TraceActivation					CRITICALITY ignore	TYPE TraceActivation					PRESENCE optional}|
+	{ ID id-SRVCCOperationPossible			CRITICALITY ignore	TYPE SRVCCOperationPossible				PRESENCE optional}|
+	{ ID id-CSGMembershipStatus				CRITICALITY reject	TYPE CSGMembershipStatus				PRESENCE optional}|
+	{ ID id-MobilityInformation				CRITICALITY ignore	TYPE MobilityInformation				PRESENCE optional}|
+	{ ID id-Masked-IMEISV					CRITICALITY ignore	TYPE Masked-IMEISV						PRESENCE optional}|
+	{ ID id-UE-HistoryInformationFromTheUE	CRITICALITY ignore	TYPE UE-HistoryInformationFromTheUE	PRESENCE optional}|
+	{ ID id-ExpectedUEBehaviour				CRITICALITY ignore	TYPE ExpectedUEBehaviour				PRESENCE optional}|
+	{ ID id-ProSeAuthorized					CRITICALITY ignore	TYPE ProSeAuthorized					PRESENCE optional}|
+	{ ID id-UE-ContextReferenceAtSeNB		CRITICALITY ignore	TYPE UE-ContextReferenceAtSeNB			PRESENCE optional}|
+	{ ID id-Old-eNB-UE-X2AP-ID-Extension	CRITICALITY reject	TYPE UE-X2AP-ID-Extension				PRESENCE optional}|
+	{ ID id-V2XServicesAuthorized			CRITICALITY ignore	TYPE V2XServicesAuthorized				PRESENCE optional}|
+	{ ID id-UE-ContextReferenceAtWT			CRITICALITY ignore	TYPE UE-ContextReferenceAtWT			PRESENCE optional},
+	...
+}
+
+UE-ContextInformation ::= SEQUENCE {
+	mME-UE-S1AP-ID						UE-S1AP-ID,
+	uESecurityCapabilities				UESecurityCapabilities,
+	aS-SecurityInformation				AS-SecurityInformation,
+	uEaggregateMaximumBitRate			UEAggregateMaximumBitRate,
+	subscriberProfileIDforRFP			SubscriberProfileIDforRFP		OPTIONAL,
+	e-RABs-ToBeSetup-List				E-RABs-ToBeSetup-List,
+	rRC-Context							RRC-Context,
+	handoverRestrictionList				HandoverRestrictionList		OPTIONAL,
+	locationReportingInformation		LocationReportingInformation	OPTIONAL,
+	iE-Extensions						ProtocolExtensionContainer { {UE-ContextInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+UE-ContextInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+{ ID id-ManagementBasedMDTallowed	CRITICALITY ignore	EXTENSION ManagementBasedMDTallowed		PRESENCE optional }|
+{ ID id-ManagementBasedMDTPLMNList	CRITICALITY ignore	EXTENSION MDTPLMNList					PRESENCE optional }|
+{ ID id-UESidelinkAggregateMaximumBitRate	CRITICALITY ignore	EXTENSION UESidelinkAggregateMaximumBitRate		PRESENCE optional},
+	...
+}
+
+E-RABs-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeSetup-ItemIEs} }
+
+E-RABs-ToBeSetup-ItemIEs 	X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-ToBeSetup-Item	 CRITICALITY ignore 	TYPE E-RABs-ToBeSetup-Item 	PRESENCE mandatory },
+	...
+}
+
+E-RABs-ToBeSetup-Item ::= SEQUENCE {
+	e-RAB-ID					E-RAB-ID,
+	e-RAB-Level-QoS-Parameters		E-RAB-Level-QoS-Parameters,
+	dL-Forwarding					DL-Forwarding													OPTIONAL,
+	uL-GTPtunnelEndpoint			GTPtunnelEndpoint,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeSetup-ItemExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeSetup-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-BearerType		CRITICALITY reject	EXTENSION BearerType		PRESENCE optional},
+	...
+}
+
+MobilityInformation ::= BIT STRING (SIZE(32))
+
+UE-ContextReferenceAtSeNB ::= SEQUENCE {
+	source-GlobalSeNB-ID		GlobalENB-ID,
+	seNB-UE-X2AP-ID				UE-X2AP-ID,
+	seNB-UE-X2AP-ID-Extension	UE-X2AP-ID-Extension,
+	iE-Extensions				ProtocolExtensionContainer { {UE-ContextReferenceAtSeNB-ItemExtIEs} } OPTIONAL,
+	...
+}
+
+UE-ContextReferenceAtSeNB-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+UE-ContextReferenceAtWT ::= SEQUENCE {
+	wTID					WTID,
+	wT-UE-XwAP-ID			WT-UE-XwAP-ID,
+	iE-Extensions			ProtocolExtensionContainer { {UE-ContextReferenceAtWT-ItemExtIEs} } OPTIONAL,
+	...
+}
+
+UE-ContextReferenceAtWT-ItemExtIEs	X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- HANDOVER REQUEST ACKNOWLEDGE
+--
+-- **************************************************************
+
+HandoverRequestAcknowledge ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{HandoverRequestAcknowledge-IEs}},
+	...
+}
+
+HandoverRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-Old-eNB-UE-X2AP-ID							CRITICALITY ignore	TYPE UE-X2AP-ID		PRESENCE mandatory}|
+	{ ID id-New-eNB-UE-X2AP-ID							CRITICALITY ignore	TYPE UE-X2AP-ID		PRESENCE mandatory}|
+	{ ID id-E-RABs-Admitted-List						CRITICALITY ignore	TYPE E-RABs-Admitted-List	PRESENCE mandatory}|
+	{ ID id-E-RABs-NotAdmitted-List						CRITICALITY ignore	TYPE E-RAB-List		PRESENCE optional}|
+	{ ID id-TargeteNBtoSource-eNBTransparentContainer	CRITICALITY ignore	TYPE TargeteNBtoSource-eNBTransparentContainer	PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics						CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional}|
+	{ ID id-UE-ContextKeptIndicator						CRITICALITY ignore	TYPE UE-ContextKeptIndicator	PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension					CRITICALITY ignore	TYPE UE-X2AP-ID-Extension	PRESENCE optional}|
+	{ ID id-Old-eNB-UE-X2AP-ID-Extension				CRITICALITY ignore	TYPE UE-X2AP-ID-Extension	PRESENCE optional}|
+	{ ID id-New-eNB-UE-X2AP-ID-Extension				CRITICALITY reject	TYPE UE-X2AP-ID-Extension	PRESENCE optional}|
+	{ ID id-WT-UE-ContextKeptIndicator					CRITICALITY ignore	TYPE UE-ContextKeptIndicator	PRESENCE optional},
+	...
+}
+
+E-RABs-Admitted-List 		::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ItemIEs} }
+
+E-RABs-Admitted-ItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-Admitted-Item	CRITICALITY ignore	TYPE E-RABs-Admitted-Item 	PRESENCE mandatory	}
+}
+
+E-RABs-Admitted-Item ::= SEQUENCE {
+	e-RAB-ID					E-RAB-ID,
+	uL-GTP-TunnelEndpoint			GTPtunnelEndpoint	OPTIONAL,
+	dL-GTP-TunnelEndpoint			GTPtunnelEndpoint	OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-Admitted-Item-ExtIEs} }	OPTIONAL,
+	...
+}
+
+E-RABs-Admitted-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- HANDOVER PREPARATION FAILURE
+--
+-- **************************************************************
+
+HandoverPreparationFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{HandoverPreparationFailure-IEs}},
+	...
+}
+
+HandoverPreparationFailure-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-Old-eNB-UE-X2AP-ID				CRITICALITY ignore	TYPE UE-X2AP-ID					PRESENCE mandatory}|
+	{ ID id-Cause							CRITICALITY ignore	TYPE Cause						PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional}|
+	{ ID id-Old-eNB-UE-X2AP-ID-Extension	CRITICALITY ignore	TYPE UE-X2AP-ID-Extension		PRESENCE optional},
+
+	...
+}
+
+-- **************************************************************
+--
+-- Handover Report
+--
+-- **************************************************************
+
+HandoverReport ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{HandoverReport-IEs}},
+	...
+}
+
+HandoverReport-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-HandoverReportType							CRITICALITY ignore	TYPE HandoverReportType									PRESENCE mandatory}|
+	{ ID id-Cause										CRITICALITY ignore	TYPE Cause													PRESENCE mandatory}|
+	{ ID id-SourceCellECGI								CRITICALITY ignore	TYPE ECGI													PRESENCE mandatory}|
+	{ ID id-FailureCellECGI								CRITICALITY ignore	TYPE ECGI													PRESENCE mandatory}|
+	{ ID id-Re-establishmentCellECGI					CRITICALITY ignore	TYPE ECGI													PRESENCE conditional} -- The IE shall be present if the Handover Report Type IE is set to “HO to Wrong Cell” -- |
+	{ ID id-TargetCellInUTRAN							CRITICALITY ignore	TYPE TargetCellInUTRAN									PRESENCE conditional} -- The IE shall be present if the Handover Report Type IE is set to "InterRAT ping-pong" --|
+	{ ID id-SourceCellCRNTI								CRITICALITY ignore	TYPE CRNTI													PRESENCE optional}|
+	{ ID id-MobilityInformation							CRITICALITY ignore	TYPE MobilityInformation									PRESENCE optional}|
+	{ ID id-UE-RLF-Report-Container						CRITICALITY ignore	TYPE UE-RLF-Report-Container							PRESENCE optional}|
+	{ ID id-UE-RLF-Report-Container-for-extended-bands	CRITICALITY ignore	TYPE UE-RLF-Report-Container-for-extended-bands	PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- SN Status Transfer
+--
+-- **************************************************************
+
+SNStatusTransfer ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{SNStatusTransfer-IEs}},
+	...
+}
+
+SNStatusTransfer-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-Old-eNB-UE-X2AP-ID						CRITICALITY reject	TYPE UE-X2AP-ID										PRESENCE mandatory}|
+	{ ID id-New-eNB-UE-X2AP-ID						CRITICALITY reject	TYPE UE-X2AP-ID										PRESENCE mandatory}|
+	{ ID id-E-RABs-SubjectToStatusTransfer-List		CRITICALITY ignore	TYPE E-RABs-SubjectToStatusTransfer-List		PRESENCE mandatory}|
+	{ ID id-Old-eNB-UE-X2AP-ID-Extension			CRITICALITY reject	TYPE UE-X2AP-ID-Extension							PRESENCE optional}|
+	{ ID id-New-eNB-UE-X2AP-ID-Extension			CRITICALITY reject	TYPE UE-X2AP-ID-Extension							PRESENCE optional},
+	...
+}
+
+E-RABs-SubjectToStatusTransfer-List	::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { { E-RABs-SubjectToStatusTransfer-ItemIEs} }
+
+E-RABs-SubjectToStatusTransfer-ItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-SubjectToStatusTransfer-Item	CRITICALITY ignore	TYPE E-RABs-SubjectToStatusTransfer-Item 	PRESENCE mandatory	}
+}
+
+E-RABs-SubjectToStatusTransfer-Item ::= SEQUENCE {
+	e-RAB-ID								E-RAB-ID,
+	
+	receiveStatusofULPDCPSDUs				ReceiveStatusofULPDCPSDUs			OPTIONAL,
+	uL-COUNTvalue					COUNTvalue,
+	dL-COUNTvalue					COUNTvalue,
+	iE-Extensions							ProtocolExtensionContainer { {E-RABs-SubjectToStatusTransfer-ItemExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-SubjectToStatusTransfer-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-ReceiveStatusOfULPDCPSDUsExtended			CRITICALITY ignore	EXTENSION ReceiveStatusOfULPDCPSDUsExtended			PRESENCE optional}|
+	{ ID id-ULCOUNTValueExtended						CRITICALITY ignore	EXTENSION COUNTValueExtended								PRESENCE optional}|
+	{ ID id-DLCOUNTValueExtended						CRITICALITY ignore	EXTENSION COUNTValueExtended								PRESENCE optional}|
+	{ ID id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18	CRITICALITY ignore	EXTENSION ReceiveStatusOfULPDCPSDUsPDCP-SNlength18	PRESENCE optional}|
+	{ ID id-ULCOUNTValuePDCP-SNlength18					CRITICALITY ignore	EXTENSION COUNTvaluePDCP-SNlength18						PRESENCE optional}|
+	{ ID id-DLCOUNTValuePDCP-SNlength18					CRITICALITY ignore	EXTENSION COUNTvaluePDCP-SNlength18						PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- UE Context Release 
+--
+-- **************************************************************
+
+UEContextRelease ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{UEContextRelease-IEs}},
+	...
+}
+
+UEContextRelease-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-Old-eNB-UE-X2AP-ID					CRITICALITY reject	TYPE UE-X2AP-ID									PRESENCE mandatory}|
+	{ ID id-New-eNB-UE-X2AP-ID					CRITICALITY reject	TYPE UE-X2AP-ID									PRESENCE mandatory}|
+	{ ID id-Old-eNB-UE-X2AP-ID-Extension		CRITICALITY reject	TYPE UE-X2AP-ID-Extension						PRESENCE optional}|
+	{ ID id-New-eNB-UE-X2AP-ID-Extension		CRITICALITY reject	TYPE UE-X2AP-ID-Extension						PRESENCE optional}|
+	{ ID id-SIPTO-BearerDeactivationIndication	CRITICALITY ignore	TYPE SIPTOBearerDeactivationIndication		PRESENCE optional},
+	...
+}
+
+
+-- **************************************************************
+--
+-- HANDOVER CANCEL
+--
+-- **************************************************************
+
+HandoverCancel ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{HandoverCancel-IEs}},
+	...
+}
+
+HandoverCancel-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-Old-eNB-UE-X2AP-ID					CRITICALITY reject	TYPE UE-X2AP-ID					PRESENCE mandatory}|
+	{ ID id-New-eNB-UE-X2AP-ID					CRITICALITY ignore	TYPE UE-X2AP-ID					PRESENCE optional}|
+	{ ID id-Cause								CRITICALITY ignore	TYPE Cause						PRESENCE mandatory}|
+	{ ID id-Old-eNB-UE-X2AP-ID-Extension		CRITICALITY reject	TYPE UE-X2AP-ID-Extension		PRESENCE optional}|
+	{ ID id-New-eNB-UE-X2AP-ID-Extension		CRITICALITY ignore	TYPE UE-X2AP-ID-Extension		PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- ERROR INDICATION
+--
+-- **************************************************************
+
+ErrorIndication ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{ErrorIndication-IEs}},
+	...
+}
+
+ErrorIndication-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-Old-eNB-UE-X2AP-ID					CRITICALITY ignore	TYPE UE-X2AP-ID					PRESENCE optional}|
+	{ ID id-New-eNB-UE-X2AP-ID					CRITICALITY ignore	TYPE UE-X2AP-ID					PRESENCE optional}|
+	{ ID id-Cause								CRITICALITY ignore	TYPE Cause						PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics				CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional}|
+	{ ID id-Old-eNB-UE-X2AP-ID-Extension		CRITICALITY ignore	TYPE UE-X2AP-ID-Extension		PRESENCE optional}|
+	{ ID id-New-eNB-UE-X2AP-ID-Extension		CRITICALITY ignore	TYPE UE-X2AP-ID-Extension		PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- Reset Request
+--
+-- **************************************************************
+
+ResetRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{ResetRequest-IEs}},
+	...
+}
+
+ResetRequest-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-Cause				CRITICALITY ignore	TYPE Cause				PRESENCE mandatory},
+	...
+}
+
+-- **************************************************************
+--
+-- Reset Response
+--
+-- **************************************************************
+
+ResetResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{ResetResponse-IEs}},
+	...
+}
+
+ResetResponse-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional },
+	...
+}
+
+-- **************************************************************
+--
+-- X2 SETUP REQUEST
+--
+-- **************************************************************
+
+X2SetupRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{X2SetupRequest-IEs}},
+	...
+}
+
+X2SetupRequest-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-GlobalENB-ID			CRITICALITY reject	TYPE GlobalENB-ID			PRESENCE mandatory}|
+	{ ID id-ServedCells				CRITICALITY reject	TYPE ServedCells			PRESENCE mandatory}|
+	{ ID id-GUGroupIDList			CRITICALITY reject	TYPE GUGroupIDList			PRESENCE optional}|
+	{ ID id-LHN-ID					CRITICALITY ignore	TYPE LHN-ID					PRESENCE optional},
+...
+}
+
+
+
+-- **************************************************************
+--
+-- X2 SETUP RESPONSE
+--
+-- **************************************************************
+
+X2SetupResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{X2SetupResponse-IEs}},
+	...
+}
+
+X2SetupResponse-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-GlobalENB-ID				CRITICALITY reject	TYPE GlobalENB-ID			PRESENCE mandatory}|
+	{ ID id-ServedCells					CRITICALITY reject	TYPE ServedCells			PRESENCE mandatory}|
+	{ ID id-GUGroupIDList				CRITICALITY reject	TYPE GUGroupIDList			PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional}|
+	{ ID id-LHN-ID						CRITICALITY ignore	TYPE LHN-ID					PRESENCE optional},
+	...
+}
+
+
+
+-- **************************************************************
+--
+-- X2 SETUP FAILURE
+--
+-- **************************************************************
+
+X2SetupFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{X2SetupFailure-IEs}},
+	...
+}
+
+X2SetupFailure-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-Cause					CRITICALITY ignore		TYPE Cause								PRESENCE mandatory} |
+	{ ID id-TimeToWait				CRITICALITY ignore		TYPE TimeToWait							PRESENCE optional} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore		TYPE CriticalityDiagnostics				PRESENCE optional },
+
+	...
+}
+
+
+
+-- **************************************************************
+--
+-- LOAD INFORMATION
+--
+-- **************************************************************
+
+LoadInformation ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{LoadInformation-IEs}},
+	...
+}
+
+LoadInformation-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-CellInformation				CRITICALITY ignore	TYPE CellInformation-List		PRESENCE mandatory} ,
+	...
+}
+
+CellInformation-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellInformation-ItemIEs} }
+
+CellInformation-ItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-CellInformation-Item	CRITICALITY ignore	TYPE CellInformation-Item 	PRESENCE mandatory	}
+}
+
+CellInformation-Item ::= SEQUENCE {
+	cell-ID							ECGI,
+	ul-InterferenceOverloadIndication		UL-InterferenceOverloadIndication		OPTIONAL,
+	ul-HighInterferenceIndicationInfo		UL-HighInterferenceIndicationInfo		OPTIONAL,
+	relativeNarrowbandTxPower				RelativeNarrowbandTxPower				OPTIONAL,
+	iE-Extensions							ProtocolExtensionContainer { {CellInformation-Item-ExtIEs} }	OPTIONAL,
+	...
+}
+
+CellInformation-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+{ ID id-ABSInformation						CRITICALITY ignore	EXTENSION ABSInformation							PRESENCE optional }|
+{ ID id-InvokeIndication					CRITICALITY ignore	EXTENSION InvokeIndication							PRESENCE optional }|
+{ ID id-IntendedULDLConfiguration			CRITICALITY ignore	EXTENSION SubframeAssignment						PRESENCE optional }|
+{ ID id-ExtendedULInterferenceOverloadInfo	CRITICALITY ignore	EXTENSION ExtendedULInterferenceOverloadInfo	PRESENCE optional }|
+{ ID id-CoMPInformation						CRITICALITY ignore	EXTENSION CoMPInformation							PRESENCE optional }|
+{ ID id-DynamicDLTransmissionInformation	CRITICALITY ignore	EXTENSION DynamicDLTransmissionInformation		PRESENCE optional },
+	...
+}
+
+-- **************************************************************
+--
+-- ENB CONFIGURATION UPDATE
+--
+-- **************************************************************
+
+ENBConfigurationUpdate ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{ENBConfigurationUpdate-IEs}},
+	...
+}
+
+ENBConfigurationUpdate-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-ServedCellsToAdd			CRITICALITY reject	TYPE ServedCells					PRESENCE optional}|
+	{ ID id-ServedCellsToModify			CRITICALITY reject	TYPE ServedCellsToModify			PRESENCE optional}|
+	{ ID id-ServedCellsToDelete			CRITICALITY reject	TYPE Old-ECGIs						PRESENCE optional}|
+	{ ID id-GUGroupIDToAddList			CRITICALITY reject	TYPE GUGroupIDList					PRESENCE optional}|
+	{ ID id-GUGroupIDToDeleteList		CRITICALITY reject	TYPE GUGroupIDList					PRESENCE optional}|
+	{ ID id-CoverageModificationList	CRITICALITY reject	TYPE CoverageModificationList		PRESENCE optional},
+	...
+}
+
+ServedCellsToModify::= SEQUENCE (SIZE (1..maxCellineNB)) OF ServedCellsToModify-Item
+ 
+ServedCellsToModify-Item::= SEQUENCE {
+	old-ecgi						ECGI,
+	servedCellInfo					ServedCell-Information,
+	neighbour-Info					Neighbour-Information			OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { { ServedCellsToModify-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+ServedCellsToModify-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+{ ID id-DeactivationIndication			CRITICALITY ignore	EXTENSION DeactivationIndication				PRESENCE optional },
+	...
+}
+
+
+Old-ECGIs::= SEQUENCE (SIZE (1..maxCellineNB)) OF ECGI
+
+-- **************************************************************
+--
+-- ENB CONFIGURATION UPDATE ACKNOWLEDGE
+--
+-- **************************************************************
+
+ENBConfigurationUpdateAcknowledge ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{ENBConfigurationUpdateAcknowledge-IEs}},
+	...
+}
+
+ENBConfigurationUpdateAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional},
+...
+}
+
+-- **************************************************************
+--
+-- ENB CONFIGURATION UPDATE FAIURE
+--
+-- **************************************************************
+
+ENBConfigurationUpdateFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{ENBConfigurationUpdateFailure-IEs}},
+	...
+}
+
+ENBConfigurationUpdateFailure-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause						PRESENCE mandatory}|
+	{ ID id-TimeToWait					CRITICALITY ignore	TYPE TimeToWait					PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional},
+	...
+}
+
+
+
+-- **************************************************************
+--
+-- Resource Status Request
+--
+-- **************************************************************
+
+ResourceStatusRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{ResourceStatusRequest-IEs}},
+	...
+}
+
+ResourceStatusRequest-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-ENB1-Measurement-ID			CRITICALITY reject	TYPE Measurement-ID					PRESENCE mandatory}|
+	{ ID id-ENB2-Measurement-ID			CRITICALITY ignore	TYPE Measurement-ID					PRESENCE conditional}|-- The IE shall be present if the Registration Request IE is set to “Stop”, “Partial stop” or to “Add”--
+	{ ID id-Registration-Request		CRITICALITY reject	TYPE Registration-Request			PRESENCE mandatory}|
+	{ ID id-ReportCharacteristics		CRITICALITY reject	TYPE ReportCharacteristics			PRESENCE optional}|
+	{ ID id-CellToReport				CRITICALITY ignore	TYPE CellToReport-List				PRESENCE mandatory}|
+	{ ID id-ReportingPeriodicity		CRITICALITY ignore	TYPE ReportingPeriodicity			PRESENCE optional}|
+	{ ID id-PartialSuccessIndicator		CRITICALITY ignore	TYPE PartialSuccessIndicator		PRESENCE optional}|
+	{ ID id-ReportingPeriodicityRSRPMR	CRITICALITY ignore	TYPE ReportingPeriodicityRSRPMR		PRESENCE optional}|
+	{ ID id-ReportingPeriodicityCSIR	CRITICALITY ignore	TYPE ReportingPeriodicityCSIR		PRESENCE optional},
+	...
+}
+
+
+CellToReport-List 		::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellToReport-ItemIEs} }
+
+CellToReport-ItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-CellToReport-Item	CRITICALITY ignore	TYPE CellToReport-Item 	PRESENCE mandatory}
+}
+
+CellToReport-Item ::= SEQUENCE {
+	cell-ID									ECGI,
+	iE-Extensions							ProtocolExtensionContainer { {CellToReport-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+CellToReport-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+ReportingPeriodicity ::= ENUMERATED {
+	one-thousand-ms,
+	two-thousand-ms,
+	five-thousand-ms,
+	ten-thousand-ms,
+...
+}
+
+PartialSuccessIndicator ::= ENUMERATED {
+	partial-success-allowed,
+...
+}
+
+-- **************************************************************
+--
+-- Resource Status Response
+--
+-- **************************************************************
+
+ResourceStatusResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{ResourceStatusResponse-IEs}},
+	...
+}
+
+ResourceStatusResponse-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-ENB1-Measurement-ID					CRITICALITY reject	TYPE Measurement-ID							PRESENCE mandatory}|
+	{ ID id-ENB2-Measurement-ID					CRITICALITY reject	TYPE Measurement-ID							PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics				CRITICALITY ignore	TYPE CriticalityDiagnostics					PRESENCE optional}|
+	{ ID id-MeasurementInitiationResult-List	CRITICALITY ignore	TYPE MeasurementInitiationResult-List	PRESENCE optional},
+	...
+}
+
+
+MeasurementInitiationResult-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { { MeasurementInitiationResult-ItemIEs} }
+
+MeasurementInitiationResult-ItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeasurementInitiationResult-Item	CRITICALITY ignore	TYPE MeasurementInitiationResult-Item	PRESENCE mandatory}
+}
+
+MeasurementInitiationResult-Item ::= SEQUENCE {
+	cell-ID											ECGI,
+	measurementFailureCause-List					MeasurementFailureCause-List	OPTIONAL,
+	iE-Extensions									ProtocolExtensionContainer { { MeasurementInitiationResult-Item-ExtIEs} }	OPTIONAL,
+	...
+}
+
+MeasurementInitiationResult-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+MeasurementFailureCause-List ::= SEQUENCE (SIZE (1..maxFailedMeasObjects)) OF ProtocolIE-Single-Container { { MeasurementFailureCause-ItemIEs} }
+
+MeasurementFailureCause-ItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeasurementFailureCause-Item	CRITICALITY ignore	TYPE MeasurementFailureCause-Item		PRESENCE mandatory}
+}
+
+MeasurementFailureCause-Item ::= SEQUENCE {
+	measurementFailedReportCharacteristics			ReportCharacteristics,
+	cause											Cause,
+	iE-Extensions									ProtocolExtensionContainer { { MeasurementFailureCause-Item-ExtIEs} }	OPTIONAL,
+	...
+}
+
+MeasurementFailureCause-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- Resource Status Failure
+--
+-- **************************************************************
+
+ResourceStatusFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{ResourceStatusFailure-IEs}},
+	...
+}
+
+ResourceStatusFailure-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-ENB1-Measurement-ID						CRITICALITY reject	TYPE Measurement-ID									PRESENCE mandatory}|
+	{ ID id-ENB2-Measurement-ID						CRITICALITY reject	TYPE Measurement-ID									PRESENCE mandatory}|
+	{ ID id-Cause									CRITICALITY ignore	TYPE Cause											PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics					CRITICALITY ignore	TYPE CriticalityDiagnostics						PRESENCE optional}|
+	{ ID id-CompleteFailureCauseInformation-List	CRITICALITY ignore	TYPE CompleteFailureCauseInformation-List	PRESENCE optional},
+	...
+}
+
+CompleteFailureCauseInformation-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CompleteFailureCauseInformation-ItemIEs} }
+
+CompleteFailureCauseInformation-ItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-CompleteFailureCauseInformation-Item	CRITICALITY ignore	TYPE CompleteFailureCauseInformation-Item	PRESENCE mandatory}
+}
+
+CompleteFailureCauseInformation-Item ::= SEQUENCE {
+	cell-ID											ECGI,
+	measurementFailureCause-List					MeasurementFailureCause-List,
+	iE-Extensions									ProtocolExtensionContainer { { CompleteFailureCauseInformation-Item-ExtIEs} }	OPTIONAL,
+	...
+}
+
+CompleteFailureCauseInformation-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- Resource Status Update
+--
+-- **************************************************************
+
+ResourceStatusUpdate ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{ResourceStatusUpdate-IEs}},
+	...
+}
+
+ResourceStatusUpdate-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-ENB1-Measurement-ID		CRITICALITY reject	TYPE Measurement-ID					PRESENCE mandatory}|
+	{ ID id-ENB2-Measurement-ID		CRITICALITY reject	TYPE Measurement-ID					PRESENCE mandatory}|
+	{ ID id-CellMeasurementResult	CRITICALITY ignore	TYPE CellMeasurementResult-List		PRESENCE mandatory},
+	...
+}
+
+CellMeasurementResult-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellMeasurementResult-ItemIEs} }
+
+CellMeasurementResult-ItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-CellMeasurementResult-Item	CRITICALITY ignore	TYPE CellMeasurementResult-Item	PRESENCE mandatory}
+}
+
+CellMeasurementResult-Item ::= SEQUENCE {
+	cell-ID						ECGI,
+	hWLoadIndicator				HWLoadIndicator		OPTIONAL,
+	s1TNLLoadIndicator			S1TNLLoadIndicator	OPTIONAL,
+	radioResourceStatus			RadioResourceStatus	OPTIONAL,
+	iE-Extensions				ProtocolExtensionContainer { {CellMeasurementResult-Item-ExtIEs} }	OPTIONAL,
+	...
+}
+
+CellMeasurementResult-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-CompositeAvailableCapacityGroup	CRITICALITY ignore	EXTENSION CompositeAvailableCapacityGroup		PRESENCE optional}|
+	{ ID id-ABS-Status						CRITICALITY ignore	EXTENSION ABS-Status								PRESENCE optional}|
+	{ ID id-RSRPMRList						CRITICALITY ignore	EXTENSION RSRPMRList								PRESENCE optional}|
+	{ ID id-CSIReportList					CRITICALITY ignore	EXTENSION CSIReportList								PRESENCE optional}|
+	{ ID id-CellReportingIndicator			CRITICALITY ignore	EXTENSION CellReportingIndicator					PRESENCE optional},
+	...
+}
+
+
+-- **************************************************************
+--
+-- PRIVATE MESSAGE
+--
+-- **************************************************************
+
+PrivateMessage ::= SEQUENCE {
+	privateIEs		PrivateIE-Container	{{PrivateMessage-IEs}},
+	...
+}
+
+PrivateMessage-IEs X2AP-PRIVATE-IES ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MOBILITY CHANGE REQUEST
+--
+-- **************************************************************
+
+MobilityChangeRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{MobilityChangeRequest-IEs}},
+	...
+}
+
+MobilityChangeRequest-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-ENB1-Cell-ID						CRITICALITY reject	TYPE ECGI											PRESENCE mandatory}|
+	{ ID id-ENB2-Cell-ID						CRITICALITY reject	TYPE ECGI											PRESENCE mandatory}|
+	{ ID id-ENB1-Mobility-Parameters			CRITICALITY ignore	TYPE MobilityParametersInformation				PRESENCE optional}|
+	{ ID id-ENB2-Proposed-Mobility-Parameters	CRITICALITY reject	TYPE MobilityParametersInformation				PRESENCE mandatory}|
+	{ ID id-Cause								CRITICALITY reject	TYPE Cause											PRESENCE mandatory},
+	...
+}
+
+-- **************************************************************
+--
+-- MOBILITY CHANGE ACKNOWLEDGE
+--
+-- **************************************************************
+
+MobilityChangeAcknowledge ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{MobilityChangeAcknowledge-IEs}},
+	...
+}
+
+MobilityChangeAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-ENB1-Cell-ID			CRITICALITY reject	TYPE ECGI							PRESENCE mandatory}|
+	{ ID id-ENB2-Cell-ID			CRITICALITY reject	TYPE ECGI							PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional},
+	...
+}
+
+
+-- **************************************************************
+--
+-- MOBILITY CHANGE FAILURE
+--
+-- **************************************************************
+
+MobilityChangeFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{MobilityChangeFailure-IEs}},
+	...
+}
+
+MobilityChangeFailure-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-ENB1-Cell-ID									CRITICALITY ignore	TYPE ECGI												PRESENCE mandatory}|
+	{ ID id-ENB2-Cell-ID									CRITICALITY ignore	TYPE ECGI												PRESENCE mandatory}|
+	{ ID id-Cause											CRITICALITY ignore	TYPE Cause												PRESENCE mandatory}|
+	{ ID id-ENB2-Mobility-Parameters-Modification-Range		CRITICALITY ignore	TYPE MobilityParametersModificationRange		PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics							CRITICALITY ignore	TYPE CriticalityDiagnostics						PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- Radio Link Failure Indication
+--
+-- **************************************************************
+
+RLFIndication ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{RLFIndication-IEs}},
+	...
+}
+
+RLFIndication-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-FailureCellPCI								CRITICALITY ignore	TYPE PCI														PRESENCE mandatory}|
+	{ ID id-Re-establishmentCellECGI					CRITICALITY ignore	TYPE ECGI														PRESENCE mandatory}|
+	{ ID id-FailureCellCRNTI							CRITICALITY ignore	TYPE CRNTI														PRESENCE mandatory}|
+	{ ID id-ShortMAC-I									CRITICALITY ignore	TYPE ShortMAC-I													PRESENCE optional}|
+	{ ID id-UE-RLF-Report-Container						CRITICALITY ignore	TYPE UE-RLF-Report-Container								PRESENCE optional}|
+	{ ID id-RRCConnSetupIndicator						CRITICALITY reject	TYPE RRCConnSetupIndicator									PRESENCE optional}|
+	{ ID id-RRCConnReestabIndicator						CRITICALITY ignore	TYPE RRCConnReestabIndicator								PRESENCE optional}|
+	{ ID id-UE-RLF-Report-Container-for-extended-bands	CRITICALITY ignore	TYPE UE-RLF-Report-Container-for-extended-bands		PRESENCE optional},
+	...
+}
+
+
+-- **************************************************************
+--
+-- Cell Activation Request
+--
+-- **************************************************************
+
+CellActivationRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{CellActivationRequest-IEs}},
+	...
+}
+
+CellActivationRequest-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-ServedCellsToActivate 	CRITICALITY reject	TYPE ServedCellsToActivate		PRESENCE mandatory},
+	...
+}
+
+ServedCellsToActivate::= SEQUENCE (SIZE (1..maxCellineNB)) OF ServedCellsToActivate-Item
+ 
+ServedCellsToActivate-Item::= SEQUENCE {
+	ecgi						ECGI,
+	iE-Extensions					ProtocolExtensionContainer { { ServedCellsToActivate-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+ServedCellsToActivate-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- Cell Activation Response
+--
+-- **************************************************************
+
+CellActivationResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{CellActivationResponse-IEs}},
+	...
+}
+
+CellActivationResponse-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-ActivatedCellList		CRITICALITY ignore	TYPE ActivatedCellList				PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional},
+	...
+}
+
+ActivatedCellList ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ActivatedCellList-Item
+ 
+ActivatedCellList-Item::= SEQUENCE {
+	ecgi								ECGI,
+	iE-Extensions						ProtocolExtensionContainer { { ActivatedCellList-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+ActivatedCellList-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+--**************************************************************
+--
+-- CELL ACTIVATION FAILURE
+--
+-- **************************************************************
+
+CellActivationFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{CellActivationFailure-IEs}},
+	...
+}
+
+CellActivationFailure-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause						PRESENCE mandatory }|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional },
+	...
+}
+
+-- **************************************************************
+--
+-- X2 RELEASE
+--
+-- **************************************************************
+
+X2Release ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{X2Release-IEs}},
+	...
+}
+
+X2Release-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-GlobalENB-ID			CRITICALITY reject	TYPE GlobalENB-ID			PRESENCE mandatory},
+...
+}
+
+-- **************************************************************
+--
+-- X2AP Message Transfer 
+--
+-- **************************************************************
+
+X2APMessageTransfer ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{X2APMessageTransfer-IEs}},
+	...
+}
+
+X2APMessageTransfer-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-RNL-Header	CRITICALITY reject	TYPE RNL-Header				PRESENCE mandatory}|
+	{ ID id-x2APMessage	CRITICALITY reject	TYPE X2AP-Message			PRESENCE optional},
+	...
+}
+
+RNL-Header ::= SEQUENCE {
+	source-GlobalENB-ID	GlobalENB-ID,
+	target-GlobalENB-ID	GlobalENB-ID	OPTIONAL,
+	iE-Extensions						ProtocolExtensionContainer { { RNL-Header-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+RNL-Header-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+X2AP-Message ::= OCTET STRING
+
+-- **************************************************************
+--
+-- SENB ADDITION REQUEST
+--
+-- **************************************************************
+
+SeNBAdditionRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{SeNBAdditionRequest-IEs}},
+	...
+}
+
+SeNBAdditionRequest-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID					CRITICALITY reject	TYPE UE-X2AP-ID							PRESENCE mandatory}|
+	{ ID id-UE-SecurityCapabilities			CRITICALITY reject	TYPE UESecurityCapabilities				PRESENCE conditional}|
+	-- This IE shall be present if the Bearer Option IE is set to the value “SCG bearer” --
+	{ ID id-SeNBSecurityKey					CRITICALITY reject	TYPE SeNBSecurityKey					PRESENCE conditional}|
+	-- This IE shall be present if the Bearer Option IE is set to the value “SCG bearer” --
+	{ ID id-SeNBUEAggregateMaximumBitRate	CRITICALITY reject	TYPE UEAggregateMaximumBitRate			PRESENCE mandatory}|
+	{ ID id-ServingPLMN						CRITICALITY ignore	TYPE PLMN-Identity						PRESENCE optional}|
+	{ ID id-E-RABs-ToBeAdded-List			CRITICALITY reject	TYPE E-RABs-ToBeAdded-List				PRESENCE mandatory}|
+	{ ID id-MeNBtoSeNBContainer				CRITICALITY reject	TYPE MeNBtoSeNBContainer				PRESENCE mandatory}|
+	{ ID id-CSGMembershipStatus				CRITICALITY reject	TYPE CSGMembershipStatus				PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID					CRITICALITY reject	TYPE UE-X2AP-ID							PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension		CRITICALITY reject	TYPE UE-X2AP-ID-Extension				PRESENCE optional}|
+	{ ID id-ExpectedUEBehaviour				CRITICALITY ignore	TYPE ExpectedUEBehaviour				PRESENCE optional}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension		CRITICALITY reject	TYPE UE-X2AP-ID-Extension				PRESENCE optional},
+	...
+}
+
+E-RABs-ToBeAdded-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { { E-RABs-ToBeAdded-ItemIEs} }
+
+E-RABs-ToBeAdded-ItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-ToBeAdded-Item	CRITICALITY reject	TYPE E-RABs-ToBeAdded-Item		PRESENCE mandatory},
+	...
+}
+
+E-RABs-ToBeAdded-Item ::= CHOICE {
+	sCG-Bearer		E-RABs-ToBeAdded-Item-SCG-Bearer,
+	split-Bearer	E-RABs-ToBeAdded-Item-Split-Bearer,
+	...
+}
+
+E-RABs-ToBeAdded-Item-SCG-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	e-RAB-Level-QoS-Parameters		E-RAB-Level-QoS-Parameters,
+	dL-Forwarding					DL-Forwarding																	OPTIONAL,
+	s1-UL-GTPtunnelEndpoint			GTPtunnelEndpoint,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeAdded-Item-SCG-BearerExtIEs} }	OPTIONAL,
+	...
+}
+
+E-RABs-ToBeAdded-Item-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-Correlation-ID				CRITICALITY ignore	EXTENSION Correlation-ID		PRESENCE optional}|
+	{ ID id-SIPTO-Correlation-ID		CRITICALITY ignore	EXTENSION Correlation-ID		PRESENCE optional},
+	...
+}
+
+E-RABs-ToBeAdded-Item-Split-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	e-RAB-Level-QoS-Parameters		E-RAB-Level-QoS-Parameters,
+	meNB-GTPtunnelEndpoint			GTPtunnelEndpoint,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeAdded-Item-Split-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeAdded-Item-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- SENB ADDITION REQUEST ACKNOWLEDGE
+--
+-- **************************************************************
+
+SeNBAdditionRequestAcknowledge ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{SeNBAdditionRequestAcknowledge-IEs}},
+	...
+}
+
+SeNBAdditionRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID						CRITICALITY reject	TYPE UE-X2AP-ID							PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID						CRITICALITY reject	TYPE UE-X2AP-ID							PRESENCE mandatory}|
+	{ ID id-E-RABs-Admitted-ToBeAdded-List		CRITICALITY ignore	TYPE E-RABs-Admitted-ToBeAdded-List	PRESENCE mandatory}|
+	{ ID id-E-RABs-NotAdmitted-List				CRITICALITY ignore	TYPE E-RAB-List							PRESENCE optional}|
+	{ ID id-SeNBtoMeNBContainer					CRITICALITY reject	TYPE SeNBtoMeNBContainer				PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics				CRITICALITY ignore	TYPE CriticalityDiagnostics				PRESENCE optional}|
+	{ ID id-GW-TransportLayerAddress			CRITICALITY ignore	TYPE TransportLayerAddress				PRESENCE optional}|
+	{ ID id-SIPTO-L-GW-TransportLayerAddress	CRITICALITY ignore	TYPE TransportLayerAddress				PRESENCE optional}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension			CRITICALITY reject	TYPE UE-X2AP-ID-Extension				PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension			CRITICALITY reject	TYPE UE-X2AP-ID-Extension				PRESENCE optional}|
+	{ ID id-Tunnel-Information-for-BBF			CRITICALITY ignore	TYPE TunnelInformation					PRESENCE optional},
+	...
+}
+
+E-RABs-Admitted-ToBeAdded-List ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeAdded-ItemIEs} }
+
+E-RABs-Admitted-ToBeAdded-ItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-Admitted-ToBeAdded-Item	CRITICALITY ignore	TYPE E-RABs-Admitted-ToBeAdded-Item 		PRESENCE mandatory}
+}
+
+E-RABs-Admitted-ToBeAdded-Item ::= CHOICE {
+	sCG-Bearer		E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer,
+	split-Bearer	E-RABs-Admitted-ToBeAdded-Item-Split-Bearer,
+	...
+}
+
+E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer ::= SEQUENCE {
+	e-RAB-ID								E-RAB-ID,
+	s1-DL-GTPtunnelEndpoint					GTPtunnelEndpoint,
+	dL-Forwarding-GTPtunnelEndpoint			GTPtunnelEndpoint																	OPTIONAL,
+	uL-Forwarding-GTPtunnelEndpoint			GTPtunnelEndpoint																	OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-Item-SCG-BearerExtIEs} }	OPTIONAL,
+	...
+}
+
+E-RABs-Admitted-ToBeAdded-Item-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABs-Admitted-ToBeAdded-Item-Split-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	seNB-GTPtunnelEndpoint			GTPtunnelEndpoint,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-Item-Split-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-Admitted-ToBeAdded-Item-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- SENB ADDITION REQUEST REJECT
+--
+-- **************************************************************
+
+SeNBAdditionRequestReject ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{SeNBAdditionRequestReject-IEs}},
+	...
+}
+
+SeNBAdditionRequestReject-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID					CRITICALITY reject	TYPE UE-X2AP-ID					PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID					CRITICALITY reject	TYPE UE-X2AP-ID					PRESENCE mandatory}|
+	{ ID id-Cause							CRITICALITY ignore	TYPE Cause						PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension		CRITICALITY reject	TYPE UE-X2AP-ID-Extension		PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension		CRITICALITY reject	TYPE UE-X2AP-ID-Extension		PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- SENB RECONFIGURATION COMPLETE
+--
+-- **************************************************************
+
+SeNBReconfigurationComplete ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{SeNBReconfigurationComplete-IEs}},
+	...
+}
+
+SeNBReconfigurationComplete-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID							CRITICALITY reject	TYPE UE-X2AP-ID									PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID							CRITICALITY reject	TYPE UE-X2AP-ID									PRESENCE mandatory}|
+	{ ID id-ResponseInformationSeNBReconfComp		CRITICALITY ignore	TYPE ResponseInformationSeNBReconfComp	PRESENCE mandatory}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension				CRITICALITY reject	TYPE UE-X2AP-ID-Extension						PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension				CRITICALITY reject	TYPE UE-X2AP-ID-Extension						PRESENCE optional},
+	...
+}
+
+ResponseInformationSeNBReconfComp ::= CHOICE {
+	success				ResponseInformationSeNBReconfComp-SuccessItem,
+	reject-by-MeNB		ResponseInformationSeNBReconfComp-RejectByMeNBItem,
+	...
+}
+
+ResponseInformationSeNBReconfComp-SuccessItem ::= SEQUENCE {
+	meNBtoSeNBContainer				MeNBtoSeNBContainer OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {ResponseInformationSeNBReconfComp-SuccessItemExtIEs} }	OPTIONAL,
+	...
+}
+
+ResponseInformationSeNBReconfComp-SuccessItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ResponseInformationSeNBReconfComp-RejectByMeNBItem ::= SEQUENCE {
+	cause							Cause,
+	meNBtoSeNBContainer				MeNBtoSeNBContainer																						OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { { ResponseInformationSeNBReconfComp-RejectByMeNBItemExtIEs} }	OPTIONAL,
+	...
+}
+
+ResponseInformationSeNBReconfComp-RejectByMeNBItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- SENB MODIFICATION REQUEST
+--
+-- **************************************************************
+
+SeNBModificationRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{ SeNBModificationRequest-IEs}},
+	...
+}
+
+SeNBModificationRequest-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID						CRITICALITY reject	TYPE UE-X2AP-ID								PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID						CRITICALITY reject	TYPE UE-X2AP-ID								PRESENCE mandatory}|
+	{ ID id-Cause								CRITICALITY ignore	TYPE Cause									PRESENCE mandatory}|
+	{ ID id-SCGChangeIndication					CRITICALITY ignore	TYPE SCGChangeIndication					PRESENCE optional}|
+	{ ID id-ServingPLMN							CRITICALITY ignore	TYPE PLMN-Identity							PRESENCE optional}|
+	{ ID id-UE-ContextInformationSeNBModReq		CRITICALITY reject	TYPE UE-ContextInformationSeNBModReq	PRESENCE optional}|
+	{ ID id-MeNBtoSeNBContainer					CRITICALITY ignore	TYPE MeNBtoSeNBContainer					PRESENCE optional}|
+	{ ID id-CSGMembershipStatus					CRITICALITY reject	TYPE CSGMembershipStatus					PRESENCE optional}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension			CRITICALITY reject	TYPE UE-X2AP-ID-Extension					PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension			CRITICALITY reject	TYPE UE-X2AP-ID-Extension					PRESENCE optional},
+	...
+}
+
+UE-ContextInformationSeNBModReq ::= SEQUENCE {
+	uE-SecurityCapabilities			UESecurityCapabilities															OPTIONAL,
+	seNB-SecurityKey				SeNBSecurityKey 																OPTIONAL,
+	seNBUEAggregateMaximumBitRate	UEAggregateMaximumBitRate														OPTIONAL,
+	e-RABs-ToBeAdded				E-RABs-ToBeAdded-List-ModReq													OPTIONAL,
+	e-RABs-ToBeModified				E-RABs-ToBeModified-List-ModReq													OPTIONAL,
+	e-RABs-ToBeReleased				E-RABs-ToBeReleased-List-ModReq													OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { { UE-ContextInformationSeNBModReqExtIEs} }	OPTIONAL,
+	...
+}
+
+UE-ContextInformationSeNBModReqExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABs-ToBeAdded-List-ModReq ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeAdded-ModReqItemIEs} }
+
+E-RABs-ToBeAdded-ModReqItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-ToBeAdded-ModReqItem	CRITICALITY ignore	TYPE E-RABs-ToBeAdded-ModReqItem	PRESENCE mandatory},
+	...
+}
+
+E-RABs-ToBeAdded-ModReqItem ::= CHOICE {
+	sCG-Bearer		E-RABs-ToBeAdded-ModReqItem-SCG-Bearer,
+	split-Bearer	E-RABs-ToBeAdded-ModReqItem-Split-Bearer,
+	...
+}
+
+E-RABs-ToBeAdded-ModReqItem-SCG-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	e-RAB-Level-QoS-Parameters		E-RAB-Level-QoS-Parameters,
+	dL-Forwarding					DL-Forwarding																	OPTIONAL,
+	s1-UL-GTPtunnelEndpoint			GTPtunnelEndpoint,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeAdded-ModReqItem-SCG-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeAdded-ModReqItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-Correlation-ID				CRITICALITY ignore	EXTENSION Correlation-ID		PRESENCE optional}|
+	{ ID id-SIPTO-Correlation-ID		CRITICALITY ignore	EXTENSION Correlation-ID		PRESENCE optional},
+	...
+}
+
+E-RABs-ToBeAdded-ModReqItem-Split-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	e-RAB-Level-QoS-Parameters		E-RAB-Level-QoS-Parameters,
+	meNB-GTPtunnelEndpoint			GTPtunnelEndpoint,
+	iE-Extensions			ProtocolExtensionContainer { {E-RABs-ToBeAdded-ModReqItem-Split-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeAdded-ModReqItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABs-ToBeModified-List-ModReq ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeModified-ModReqItemIEs} }
+
+E-RABs-ToBeModified-ModReqItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-ToBeModified-ModReqItem	CRITICALITY ignore	TYPE E-RABs-ToBeModified-ModReqItem		PRESENCE mandatory},
+	...
+}
+
+
+E-RABs-ToBeModified-ModReqItem ::= CHOICE {
+	sCG-Bearer		E-RABs-ToBeModified-ModReqItem-SCG-Bearer,
+	split-Bearer	E-RABs-ToBeModified-ModReqItem-Split-Bearer,
+	...
+}
+
+E-RABs-ToBeModified-ModReqItem-SCG-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	e-RAB-Level-QoS-Parameters		E-RAB-Level-QoS-Parameters														OPTIONAL,
+	s1-UL-GTPtunnelEndpoint			GTPtunnelEndpoint																OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeModified-ModReqItem-SCG-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeModified-ModReqItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABs-ToBeModified-ModReqItem-Split-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	e-RAB-Level-QoS-Parameters		E-RAB-Level-QoS-Parameters																OPTIONAL,
+	meNB-GTPtunnelEndpoint			GTPtunnelEndpoint																		OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeModified-ModReqItem-Split-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeModified-ModReqItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABs-ToBeReleased-List-ModReq ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-ModReqItemIEs} }
+
+E-RABs-ToBeReleased-ModReqItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-ToBeReleased-ModReqItem	CRITICALITY ignore	TYPE E-RABs-ToBeReleased-ModReqItem		PRESENCE mandatory},
+	...
+}
+
+E-RABs-ToBeReleased-ModReqItem ::= CHOICE {
+	sCG-Bearer		E-RABs-ToBeReleased-ModReqItem-SCG-Bearer,
+	split-Bearer	E-RABs-ToBeReleased-ModReqItem-Split-Bearer,
+	...
+}
+
+E-RABs-ToBeReleased-ModReqItem-SCG-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	dL-GTPtunnelEndpoint			GTPtunnelEndpoint																OPTIONAL,
+	uL-GTPtunnelEndpoint			GTPtunnelEndpoint																OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeReleased-ModReqItem-SCG-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeReleased-ModReqItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABs-ToBeReleased-ModReqItem-Split-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID, 
+	dL-GTPtunnelEndpoint			GTPtunnelEndpoint																OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeReleased-ModReqItem-Split-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeReleased-ModReqItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- SENB MODIFICATION REQUEST ACKNOWLEDGE
+--
+-- **************************************************************
+
+SeNBModificationRequestAcknowledge ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{SeNBModificationRequestAcknowledge-IEs}},
+	...
+}
+
+SeNBModificationRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID								CRITICALITY ignore	TYPE UE-X2AP-ID											PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID								CRITICALITY ignore	TYPE UE-X2AP-ID											PRESENCE mandatory}|
+	{ ID id-E-RABs-Admitted-ToBeAdded-ModAckList		CRITICALITY ignore	TYPE E-RABs-Admitted-ToBeAdded-ModAckList		PRESENCE optional}|
+	{ ID id-E-RABs-Admitted-ToBeModified-ModAckList		CRITICALITY ignore	TYPE E-RABs-Admitted-ToBeModified-ModAckList	PRESENCE optional}|
+	{ ID id-E-RABs-Admitted-ToBeReleased-ModAckList		CRITICALITY ignore	TYPE E-RABs-Admitted-ToBeReleased-ModAckList	PRESENCE optional}|
+	{ ID id-E-RABs-NotAdmitted-List						CRITICALITY ignore	TYPE E-RAB-List											PRESENCE optional}|
+	{ ID id-SeNBtoMeNBContainer							CRITICALITY ignore	TYPE SeNBtoMeNBContainer								PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics						CRITICALITY ignore	TYPE CriticalityDiagnostics							PRESENCE optional}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension					CRITICALITY ignore	TYPE UE-X2AP-ID-Extension							PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension					CRITICALITY ignore	TYPE UE-X2AP-ID-Extension							PRESENCE optional},
+	...
+}
+
+E-RABs-Admitted-ToBeAdded-ModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeAdded-ModAckItemIEs} }
+
+E-RABs-Admitted-ToBeAdded-ModAckItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-Admitted-ToBeAdded-ModAckItem	CRITICALITY ignore	TYPE E-RABs-Admitted-ToBeAdded-ModAckItem		PRESENCE mandatory}
+}
+
+E-RABs-Admitted-ToBeAdded-ModAckItem ::= CHOICE {
+	sCG-Bearer		E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer,
+	split-Bearer	E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer,
+	...
+}
+
+E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer ::= SEQUENCE {
+	e-RAB-ID								E-RAB-ID,
+	s1-DL-GTPtunnelEndpoint					GTPtunnelEndpoint,
+	dL-Forwarding-GTPtunnelEndpoint			GTPtunnelEndpoint																	OPTIONAL,
+	uL-Forwarding-GTPtunnelEndpoint			GTPtunnelEndpoint																	OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-BearerExtIEs} }	OPTIONAL,
+	...
+}
+
+E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	seNB-GTPtunnelEndpoint			GTPtunnelEndpoint,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-ModAckItem-Split-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-Admitted-ToBeAdded-ModAckItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+E-RABs-Admitted-ToBeModified-ModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeModified-ModAckItemIEs} }
+
+E-RABs-Admitted-ToBeModified-ModAckItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-Admitted-ToBeModified-ModAckItem		CRITICALITY ignore	TYPE E-RABs-Admitted-ToBeModified-ModAckItem	PRESENCE mandatory}
+}
+
+E-RABs-Admitted-ToBeModified-ModAckItem ::= CHOICE {
+	sCG-Bearer		E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer,
+	split-Bearer	E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer,
+	...
+}
+
+E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	s1-DL-GTPtunnelEndpoint			GTPtunnelEndpoint																	OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-Admitted-ToBeModified-ModAckItem-SCG-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-Admitted-ToBeModified-ModAckItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	seNB-GTPtunnelEndpoint			GTPtunnelEndpoint																			OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-Admitted-ToBeModified-ModAckItem-Split-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-Admitted-ToBeModified-ModAckItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABs-Admitted-ToBeReleased-ModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeReleased-ModAckItemIEs} }
+
+E-RABs-Admitted-ToBeReleased-ModAckItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-Admitted-ToBeReleased-ModAckItem		CRITICALITY ignore	TYPE E-RABs-Admitted-ToReleased-ModAckItem		PRESENCE mandatory}
+}
+
+E-RABs-Admitted-ToReleased-ModAckItem ::= CHOICE {
+	sCG-Bearer		E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer,
+	split-Bearer	E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer,
+	...
+}
+
+E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer ::= SEQUENCE {
+	e-RAB-ID					E-RAB-ID,
+	iE-Extensions				ProtocolExtensionContainer { {E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-BearerExtIEs} }	OPTIONAL,
+	...
+}
+
+E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer ::= SEQUENCE {
+	e-RAB-ID					E-RAB-ID,
+	iE-Extensions				ProtocolExtensionContainer { {E-RABs-Admitted-ToBeReleased-ModAckItem-Split-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-Admitted-ToBeReleased-ModAckItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- SENB MODIFICATION REQUEST REJECT
+--
+-- **************************************************************
+
+SeNBModificationRequestReject ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{SeNBModificationRequestReject-IEs}},
+	...
+}
+
+SeNBModificationRequestReject-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID						CRITICALITY ignore	TYPE UE-X2AP-ID					PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID						CRITICALITY ignore	TYPE UE-X2AP-ID					PRESENCE mandatory}|
+	{ ID id-Cause								CRITICALITY ignore	TYPE Cause						PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics				CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension			CRITICALITY ignore	TYPE UE-X2AP-ID-Extension		PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension			CRITICALITY ignore	TYPE UE-X2AP-ID-Extension		PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- SENB MODIFICATION REQUIRED
+--
+-- **************************************************************
+
+SeNBModificationRequired ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{{SeNBModificationRequired-IEs}},
+	...
+}
+
+SeNBModificationRequired-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID						CRITICALITY reject	TYPE UE-X2AP-ID							PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID						CRITICALITY reject	TYPE UE-X2AP-ID							PRESENCE mandatory}|
+	{ ID id-Cause								CRITICALITY ignore	TYPE Cause								PRESENCE mandatory}|
+	{ ID id-SCGChangeIndication					CRITICALITY ignore	TYPE SCGChangeIndication				PRESENCE optional}|
+	{ ID id-E-RABs-ToBeReleased-ModReqd			CRITICALITY ignore	TYPE E-RABs-ToBeReleased-ModReqd		PRESENCE optional}|
+	{ ID id-SeNBtoMeNBContainer					CRITICALITY ignore	TYPE SeNBtoMeNBContainer				PRESENCE optional}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension			CRITICALITY reject	TYPE UE-X2AP-ID-Extension				PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension			CRITICALITY reject	TYPE UE-X2AP-ID-Extension				PRESENCE optional},
+	...
+}
+
+
+E-RABs-ToBeReleased-ModReqd ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-ModReqdItemIEs} }
+
+E-RABs-ToBeReleased-ModReqdItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-ToBeReleased-ModReqdItem	 CRITICALITY ignore		TYPE E-RABs-ToBeReleased-ModReqdItem	PRESENCE mandatory },
+	...
+}
+
+E-RABs-ToBeReleased-ModReqdItem ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	cause							Cause,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeReleased-ModReqdItemExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeReleased-ModReqdItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- SENB MODIFICATION CONFIRM
+--
+-- **************************************************************
+
+SeNBModificationConfirm ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{SeNBModificationConfirm-IEs}},
+	...
+}
+
+SeNBModificationConfirm-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID						CRITICALITY ignore	TYPE UE-X2AP-ID						PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID						CRITICALITY ignore	TYPE UE-X2AP-ID						PRESENCE mandatory}|
+	{ ID id-MeNBtoSeNBContainer					CRITICALITY ignore	TYPE MeNBtoSeNBContainer			PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics				CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension			CRITICALITY ignore	TYPE UE-X2AP-ID-Extension			PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension			CRITICALITY ignore	TYPE UE-X2AP-ID-Extension			PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- SENB MODIFICATION REFUSE
+--
+-- **************************************************************
+
+SeNBModificationRefuse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{{SeNBModificationRefuse-IEs}},
+	...
+}
+
+SeNBModificationRefuse-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID						CRITICALITY ignore	TYPE UE-X2AP-ID					PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID						CRITICALITY ignore	TYPE UE-X2AP-ID					PRESENCE mandatory}|
+	{ ID id-Cause								CRITICALITY ignore	TYPE Cause						PRESENCE mandatory}|
+	{ ID id-MeNBtoSeNBContainer					CRITICALITY ignore	TYPE MeNBtoSeNBContainer		PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics				CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension			CRITICALITY ignore	TYPE UE-X2AP-ID-Extension		PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension			CRITICALITY ignore	TYPE UE-X2AP-ID-Extension		PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- SENB RELEASE REQUEST
+--
+-- **************************************************************
+
+SeNBReleaseRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{{SeNBReleaseRequest-IEs}},
+	...
+}
+
+SeNBReleaseRequest-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID						CRITICALITY reject	TYPE UE-X2AP-ID									PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID						CRITICALITY reject	TYPE UE-X2AP-ID									PRESENCE optional}|
+	{ ID id-Cause								CRITICALITY ignore	TYPE Cause										PRESENCE optional}|
+	{ ID id-E-RABs-ToBeReleased-List-RelReq		CRITICALITY ignore	TYPE E-RABs-ToBeReleased-List-RelReq		PRESENCE optional}|
+	{ ID id-UE-ContextKeptIndicator				CRITICALITY ignore	TYPE UE-ContextKeptIndicator					PRESENCE optional}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension			CRITICALITY reject	TYPE UE-X2AP-ID-Extension						PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension			CRITICALITY reject	TYPE UE-X2AP-ID-Extension						PRESENCE optional}|
+	{ ID id-MakeBeforeBreakIndicator			CRITICALITY ignore	TYPE MakeBeforeBreakIndicator				PRESENCE optional},
+	...
+}
+E-RABs-ToBeReleased-List-RelReq ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-RelReqItemIEs} }
+
+E-RABs-ToBeReleased-RelReqItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-ToBeReleased-RelReqItem		CRITICALITY ignore	TYPE E-RABs-ToBeReleased-RelReqItem		PRESENCE mandatory},
+	...
+}
+
+E-RABs-ToBeReleased-RelReqItem ::= CHOICE {
+	sCG-Bearer		E-RABs-ToBeReleased-RelReqItem-SCG-Bearer,
+	split-Bearer	E-RABs-ToBeReleased-RelReqItem-Split-Bearer,
+	...
+}
+
+E-RABs-ToBeReleased-RelReqItem-SCG-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	uL-GTPtunnelEndpoint			GTPtunnelEndpoint																OPTIONAL,
+	dL-GTPtunnelEndpoint			GTPtunnelEndpoint																OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeReleased-RelReqItem-SCG-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeReleased-RelReqItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABs-ToBeReleased-RelReqItem-Split-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	dL-GTPtunnelEndpoint			GTPtunnelEndpoint																OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeReleased-RelReqItem-Split-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeReleased-RelReqItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- SENB RELEASE REQUIRED
+--
+-- **************************************************************
+
+SeNBReleaseRequired ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{SeNBReleaseRequired-IEs}},
+	...
+}
+
+SeNBReleaseRequired-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID					CRITICALITY reject	TYPE UE-X2AP-ID					PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID					CRITICALITY reject	TYPE UE-X2AP-ID					PRESENCE mandatory}|
+	{ ID id-Cause							CRITICALITY ignore	TYPE Cause						PRESENCE mandatory}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension		CRITICALITY reject	TYPE UE-X2AP-ID-Extension		PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension		CRITICALITY reject	TYPE UE-X2AP-ID-Extension		PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- SENB RELEASE CONFIRM
+--
+-- **************************************************************
+
+SeNBReleaseConfirm ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{SeNBReleaseConfirm-IEs}},
+	...
+}
+
+SeNBReleaseConfirm-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID							CRITICALITY ignore	TYPE UE-X2AP-ID									PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID							CRITICALITY ignore	TYPE UE-X2AP-ID									PRESENCE mandatory}|
+	{ ID id-E-RABs-ToBeReleased-List-RelConf		CRITICALITY ignore	TYPE E-RABs-ToBeReleased-List-RelConf		PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics					CRITICALITY ignore	TYPE CriticalityDiagnostics					PRESENCE optional}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension				CRITICALITY ignore	TYPE UE-X2AP-ID-Extension						PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension				CRITICALITY ignore	TYPE UE-X2AP-ID-Extension						PRESENCE optional},
+	...
+}
+E-RABs-ToBeReleased-List-RelConf ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-RelConfItemIEs} }
+
+E-RABs-ToBeReleased-RelConfItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-ToBeReleased-RelConfItem		CRITICALITY ignore		TYPE E-RABs-ToBeReleased-RelConfItem		PRESENCE mandatory},
+	...
+}
+
+E-RABs-ToBeReleased-RelConfItem ::= CHOICE {
+	sCG-Bearer		E-RABs-ToBeReleased-RelConfItem-SCG-Bearer,
+	split-Bearer	E-RABs-ToBeReleased-RelConfItem-Split-Bearer,
+	...
+}
+
+E-RABs-ToBeReleased-RelConfItem-SCG-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	uL-GTPtunnelEndpoint			GTPtunnelEndpoint																OPTIONAL,
+	dL-GTPtunnelEndpoint			GTPtunnelEndpoint																OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeReleased-RelConfItem-SCG-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeReleased-RelConfItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABs-ToBeReleased-RelConfItem-Split-Bearer ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	dL-GTPtunnelEndpoint			GTPtunnelEndpoint													OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeReleased-RelConfItem-Split-BearerExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeReleased-RelConfItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- SENB COUNTER CHECK REQUEST
+--
+-- **************************************************************
+
+SeNBCounterCheckRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{SeNBCounterCheckRequest-IEs}},
+	...
+}
+
+SeNBCounterCheckRequest-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-MeNB-UE-X2AP-ID						CRITICALITY ignore	TYPE UE-X2AP-ID									PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID						CRITICALITY ignore	TYPE UE-X2AP-ID									PRESENCE mandatory}|
+	{ ID id-E-RABs-SubjectToCounterCheck-List	CRITICALITY ignore	TYPE E-RABs-SubjectToCounterCheck-List		PRESENCE mandatory}|
+	{ ID id-MeNB-UE-X2AP-ID-Extension			CRITICALITY ignore	TYPE UE-X2AP-ID-Extension						PRESENCE optional}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension			CRITICALITY ignore	TYPE UE-X2AP-ID-Extension						PRESENCE optional},
+	...
+}
+E-RABs-SubjectToCounterCheck-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-SubjectToCounterCheckItemIEs} }
+
+E-RABs-SubjectToCounterCheckItemIEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-SubjectToCounterCheckItem	CRITICALITY ignore	TYPE E-RABs-SubjectToCounterCheckItem		PRESENCE mandatory},
+	...
+}
+
+E-RABs-SubjectToCounterCheckItem ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	uL-Count						INTEGER (0..4294967295),
+	dL-Count						INTEGER (0..4294967295),
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-SubjectToCounterCheckItemExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-SubjectToCounterCheckItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- X2 REMOVAL REQUEST
+--
+-- **************************************************************
+
+X2RemovalRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{X2RemovalRequest-IEs}},
+	...
+}
+
+X2RemovalRequest-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-GlobalENB-ID				CRITICALITY reject	TYPE GlobalENB-ID			PRESENCE mandatory}|
+	{ ID id-X2RemovalThreshold			CRITICALITY reject	TYPE X2BenefitValue			PRESENCE optional},
+...
+}
+
+
+
+-- **************************************************************
+--
+-- X2 REMOVAL RESPONSE
+--
+-- **************************************************************
+
+X2RemovalResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{X2RemovalResponse-IEs}},
+	...
+}
+
+X2RemovalResponse-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-GlobalENB-ID				CRITICALITY reject	TYPE GlobalENB-ID				PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional},
+	...
+}
+
+
+
+-- **************************************************************
+--
+-- X2 REMOVAL FAILURE
+--
+-- **************************************************************
+
+X2RemovalFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{X2RemovalFailure-IEs}},
+	...
+}
+
+X2RemovalFailure-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause							PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional},
+	...
+}
+
+
+-- **************************************************************
+--
+-- RETRIEVE UE CONTEXT REQUEST
+--
+-- **************************************************************
+
+RetrieveUEContextRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{ RetrieveUEContextRequest-IEs}},
+	...
+}
+
+RetrieveUEContextRequest-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-New-eNB-UE-X2AP-ID					CRITICALITY reject	TYPE UE-X2AP-ID				PRESENCE mandatory}|
+	{ ID id-SeNB-UE-X2AP-ID-Extension			CRITICALITY reject	TYPE UE-X2AP-ID-Extension	PRESENCE optional}|
+	{ ID id-resumeID							CRITICALITY reject	TYPE ResumeID				PRESENCE mandatory}|
+	{ ID id-ShortMAC-I							CRITICALITY reject	TYPE ShortMAC-I				PRESENCE mandatory}|
+	{ ID id-NewEUTRANCellIdentifier				CRITICALITY reject	TYPE EUTRANCellIdentifier	PRESENCE mandatory},
+	...
+}
+
+-- **************************************************************
+--
+-- RETRIEVE UE CONTEXT RESPONSE
+--
+-- **************************************************************
+
+RetrieveUEContextResponse ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container	{{ RetrieveUEContextResponse-IEs}},
+	...
+}
+
+RetrieveUEContextResponse-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-New-eNB-UE-X2AP-ID				CRITICALITY ignore	TYPE UE-X2AP-ID							PRESENCE mandatory}|
+	{ ID id-New-eNB-UE-X2AP-ID-Extension	CRITICALITY ignore	TYPE UE-X2AP-ID-Extension				PRESENCE optional}|
+	{ ID id-Old-eNB-UE-X2AP-ID				CRITICALITY ignore	TYPE UE-X2AP-ID							PRESENCE mandatory}|
+	{ ID id-Old-eNB-UE-X2AP-ID-Extension	CRITICALITY ignore	TYPE UE-X2AP-ID-Extension				PRESENCE optional}|
+	{ ID id-GUMMEI-ID						CRITICALITY reject	TYPE GUMMEI								PRESENCE mandatory}|
+	{ ID id-UE-ContextInformationRetrieve	CRITICALITY reject	TYPE UE-ContextInformationRetrieve	PRESENCE mandatory}|
+	{ ID id-TraceActivation					CRITICALITY ignore	TYPE TraceActivation					PRESENCE optional}|
+	{ ID id-SRVCCOperationPossible			CRITICALITY ignore	TYPE SRVCCOperationPossible				PRESENCE optional}|
+	{ ID id-Masked-IMEISV					CRITICALITY ignore	TYPE Masked-IMEISV						PRESENCE optional}|
+	{ ID id-ExpectedUEBehaviour				CRITICALITY ignore	TYPE ExpectedUEBehaviour				PRESENCE optional}|
+	{ ID id-ProSeAuthorized					CRITICALITY ignore	TYPE ProSeAuthorized					PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics				PRESENCE optional}|
+	{ ID id-V2XServicesAuthorized			CRITICALITY ignore	TYPE V2XServicesAuthorized				PRESENCE optional},
+	...
+}
+
+UE-ContextInformationRetrieve ::= SEQUENCE {
+	mME-UE-S1AP-ID						UE-S1AP-ID,
+	uESecurityCapabilities				UESecurityCapabilities,
+	aS-SecurityInformation				AS-SecurityInformation,
+	uEaggregateMaximumBitRate			UEAggregateMaximumBitRate,
+	subscriberProfileIDforRFP			SubscriberProfileIDforRFP		OPTIONAL,
+	e-RABs-ToBeSetup-ListRetrieve		E-RABs-ToBeSetup-ListRetrieve,
+	rRC-Context							RRC-Context,
+	handoverRestrictionList				HandoverRestrictionList			OPTIONAL,
+	locationReportingInformation		LocationReportingInformation	OPTIONAL,
+	managBasedMDTallowed				ManagementBasedMDTallowed		OPTIONAL,
+	managBasedMDTPLMNList				MDTPLMNList						OPTIONAL,
+	iE-Extensions						ProtocolExtensionContainer { {UE-ContextInformationRetrieve-ExtIEs} } OPTIONAL,
+	...
+}
+
+UE-ContextInformationRetrieve-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+{ ID id-UESidelinkAggregateMaximumBitRate	CRITICALITY ignore	EXTENSION UESidelinkAggregateMaximumBitRate		PRESENCE optional},
+	...
+}
+
+E-RABs-ToBeSetup-ListRetrieve ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeSetupRetrieve-ItemIEs} }
+
+E-RABs-ToBeSetupRetrieve-ItemIEs	X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABs-ToBeSetupRetrieve-Item	CRITICALITY ignore	TYPE E-RABs-ToBeSetupRetrieve-Item	PRESENCE mandatory},
+	...
+}
+
+E-RABs-ToBeSetupRetrieve-Item ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	e-RAB-Level-QoS-Parameters		E-RAB-Level-QoS-Parameters,
+	bearerType						BearerType	OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABs-ToBeSetupRetrieve-ItemExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABs-ToBeSetupRetrieve-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-uL-GTPtunnelEndpoint		CRITICALITY reject	EXTENSION GTPtunnelEndpoint		PRESENCE mandatory},
+	...
+}
+
+-- **************************************************************
+--
+-- RETRIEVE UE CONTEXT FAILURE
+--
+-- **************************************************************
+
+RetrieveUEContextFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container	{{ RetrieveUEContextFailure-IEs}},
+	...
+}
+
+RetrieveUEContextFailure-IEs X2AP-PROTOCOL-IES ::= {
+	{ ID id-New-eNB-UE-X2AP-ID				CRITICALITY ignore	TYPE UE-X2AP-ID					PRESENCE mandatory}|
+	{ ID id-New-eNB-UE-X2AP-ID-Extension	CRITICALITY ignore	TYPE UE-X2AP-ID-Extension		PRESENCE optional}|
+	{ ID id-Cause							CRITICALITY ignore	TYPE Cause						PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional},
+	...
+}
+
+END
+
+
+-- **************************************************************
+--
+-- Information Element Definitions
+--
+-- **************************************************************
+
+X2AP-IEs {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-IEs (2) }
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+IMPORTS
+	
+	id-E-RAB-Item,
+	id-Number-of-Antennaports,
+	id-MBSFN-Subframe-Info,
+	id-PRACH-Configuration,
+	id-CSG-Id,
+	id-MDTConfiguration,
+	id-SignallingBasedMDTPLMNList,
+	id-MultibandInfoList,
+	id-FreqBandIndicatorPriority,
+	id-NeighbourTAC,
+	id-Time-UE-StayedInCell-EnhancedGranularity,
+	id-MBMS-Service-Area-List,
+	id-HO-cause,
+	id-eARFCNExtension,
+	id-DL-EARFCNExtension,
+	id-UL-EARFCNExtension,
+	id-M3Configuration,
+	id-M4Configuration,
+	id-M5Configuration,
+	id-MDT-Location-Info,
+	id-AdditionalSpecialSubframe-Info,
+	id-UEID,
+	id-enhancedRNTP,
+	id-ProSeUEtoNetworkRelaying,
+	id-M6Configuration,
+	id-M7Configuration,
+	id-OffsetOfNbiotChannelNumberToDL-EARFCN,
+	id-OffsetOfNbiotChannelNumberToUL-EARFCN,
+	id-AdditionalSpecialSubframeExtension-Info,
+	id-BandwidthReducedSI,
+	id-DL-scheduling-PDCCH-CCE-usage,
+	id-UL-scheduling-PDCCH-CCE-usage,
+	maxnoofBearers,
+	maxCellineNB,
+	maxEARFCN,
+	maxEARFCNPlusOne,
+	newmaxEARFCN,
+	maxInterfaces,
+	
+	maxnoofBands,
+	maxnoofBPLMNs,
+	maxnoofCells,
+	maxnoofEPLMNs,
+	maxnoofEPLMNsPlusOne,
+	maxnoofForbLACs,
+	maxnoofForbTACs,
+	maxnoofNeighbours,
+	maxnoofPRBs,
+	maxNrOfErrors,
+	maxPools,
+	maxnoofMBSFN,
+	maxnoofTAforMDT,
+	maxnoofCellIDforMDT,
+	maxnoofMBMSServiceAreaIdentities,
+	maxnoofMDTPLMNs,
+	maxnoofCoMPHypothesisSet,
+	maxnoofCoMPCells,
+	maxUEReport,
+	maxCellReport,
+	maxnoofPA,
+	maxCSIProcess,
+	maxCSIReport,
+	maxSubband
+
+FROM X2AP-Constants
+
+	Criticality,
+	ProcedureCode,
+	ProtocolIE-ID,
+	TriggeringMessage
+FROM X2AP-CommonDataTypes
+
+	ProtocolExtensionContainer{},
+	ProtocolIE-Single-Container{},
+	
+	X2AP-PROTOCOL-EXTENSION,
+	X2AP-PROTOCOL-IES
+FROM X2AP-Containers;
+
+-- A
+
+ABSInformation ::= CHOICE {
+	fdd					ABSInformationFDD,
+	tdd					ABSInformationTDD,
+	abs-inactive		NULL,
+	...
+}
+
+ABSInformationFDD ::= SEQUENCE {
+	abs-pattern-info					BIT STRING (SIZE(40)),
+	numberOfCellSpecificAntennaPorts	ENUMERATED {one, two, four, ...},
+	measurement-subset					BIT STRING (SIZE(40)),
+	iE-Extensions						ProtocolExtensionContainer { { ABSInformationFDD-ExtIEs} } OPTIONAL,
+	...
+}
+
+ABSInformationFDD-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ABSInformationTDD ::= SEQUENCE {
+	abs-pattern-info					BIT STRING (SIZE(1..70, ...)),
+	numberOfCellSpecificAntennaPorts	ENUMERATED {one, two, four, ...},
+	measurement-subset					BIT STRING (SIZE(1..70, ...)),
+	iE-Extensions						ProtocolExtensionContainer { { ABSInformationTDD-ExtIEs} } OPTIONAL,
+	...
+}
+
+ABSInformationTDD-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ABS-Status ::= SEQUENCE {
+	dL-ABS-status								DL-ABS-status,
+	usableABSInformation						UsableABSInformation,
+	iE-Extensions								ProtocolExtensionContainer { {ABS-Status-ExtIEs} } OPTIONAL,
+	...
+}
+
+ABS-Status-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+AdditionalSpecialSubframe-Info ::=		SEQUENCE {
+	additionalspecialSubframePatterns		AdditionalSpecialSubframePatterns,
+	cyclicPrefixDL							CyclicPrefixDL,
+	cyclicPrefixUL							CyclicPrefixUL,
+	iE-Extensions							ProtocolExtensionContainer { { AdditionalSpecialSubframe-Info-ExtIEs} } OPTIONAL,
+	...
+}
+
+AdditionalSpecialSubframe-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+AdditionalSpecialSubframePatterns ::= ENUMERATED {
+	ssp0,
+	ssp1,
+	ssp2,
+	ssp3,
+	ssp4,
+	ssp5,
+	ssp6,
+	ssp7,
+	ssp8,
+	ssp9,
+	...
+}
+
+AdditionalSpecialSubframeExtension-Info ::=		SEQUENCE {
+	additionalspecialSubframePatternsExtension	AdditionalSpecialSubframePatternsExtension,
+	cyclicPrefixDL								CyclicPrefixDL,
+	cyclicPrefixUL								CyclicPrefixUL,
+	iE-Extensions								ProtocolExtensionContainer { { AdditionalSpecialSubframeExtension-Info-ExtIEs} } OPTIONAL,
+	...
+}
+
+AdditionalSpecialSubframeExtension-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+AdditionalSpecialSubframePatternsExtension ::= ENUMERATED {
+	ssp10,
+	...
+}
+
+AllocationAndRetentionPriority ::= SEQUENCE {
+	priorityLevel				PriorityLevel,
+	pre-emptionCapability		Pre-emptionCapability,
+	pre-emptionVulnerability	Pre-emptionVulnerability,
+	iE-Extensions				ProtocolExtensionContainer { {AllocationAndRetentionPriority-ExtIEs} } OPTIONAL,
+	...
+}
+
+AllocationAndRetentionPriority-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+AreaScopeOfMDT ::= CHOICE {	
+	cellBased					CellBasedMDT,
+	tABased						TABasedMDT,
+	pLMNWide					NULL,
+	...,
+	tAIBased					TAIBasedMDT
+}
+
+AS-SecurityInformation ::= SEQUENCE {
+	key-eNodeB-star		Key-eNodeB-Star,
+	nextHopChainingCount			NextHopChainingCount,
+	iE-Extensions						ProtocolExtensionContainer { { AS-SecurityInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+AS-SecurityInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+-- B
+
+BandwidthReducedSI::= ENUMERATED {
+	scheduled,
+	...
+}
+
+BearerType ::= ENUMERATED {
+	non-IP,
+	...
+}
+
+BenefitMetric ::= INTEGER (-101..100, ...)
+
+BitRate ::= INTEGER (0..10000000000)
+BroadcastPLMNs-Item ::= SEQUENCE (SIZE(1..maxnoofBPLMNs)) OF PLMN-Identity
+
+
+-- C
+
+CapacityValue ::= INTEGER (0..100)
+
+Cause ::= CHOICE {
+	radioNetwork		CauseRadioNetwork,
+	transport			CauseTransport,
+	protocol			CauseProtocol,
+	misc				CauseMisc,
+	...
+}
+
+CauseMisc ::= ENUMERATED {
+	control-processing-overload,
+	hardware-failure,
+	om-intervention,
+	not-enough-user-plane-processing-resources,
+	unspecified,
+	...
+}
+
+CauseProtocol ::= ENUMERATED {
+	transfer-syntax-error,
+	abstract-syntax-error-reject,
+	abstract-syntax-error-ignore-and-notify,
+	message-not-compatible-with-receiver-state,
+	semantic-error,
+	unspecified,
+	abstract-syntax-error-falsely-constructed-message,
+	...
+}
+
+CauseRadioNetwork ::= ENUMERATED {
+	handover-desirable-for-radio-reasons,
+	time-critical-handover,
+	resource-optimisation-handover,
+	reduce-load-in-serving-cell,
+	partial-handover,
+	unknown-new-eNB-UE-X2AP-ID, 
+	unknown-old-eNB-UE-X2AP-ID, 
+	unknown-pair-of-UE-X2AP-ID,
+	ho-target-not-allowed,
+	tx2relocoverall-expiry,
+	trelocprep-expiry,
+	cell-not-available,
+	no-radio-resources-available-in-target-cell,
+	invalid-MME-GroupID,
+	unknown-MME-Code,
+	encryption-and-or-integrity-protection-algorithms-not-supported,
+	reportCharacteristicsEmpty,
+	noReportPeriodicity,
+	existingMeasurementID,
+	unknown-eNB-Measurement-ID,
+	measurement-temporarily-not-available,
+	unspecified,
+	...,
+	load-balancing,
+	handover-optimisation,
+	value-out-of-allowed-range,
+	multiple-E-RAB-ID-instances,
+	switch-off-ongoing,
+	not-supported-QCI-value,
+	measurement-not-supported-for-the-object,
+	tDCoverall-expiry,
+	tDCprep-expiry,
+	action-desirable-for-radio-reasons,
+	reduce-load,
+	resource-optimisation,
+	time-critical-action,
+	target-not-allowed,
+	no-radio-resources-available,
+	invalid-QoS-combination,
+	encryption-algorithms-not-aupported,
+	procedure-cancelled,
+	rRM-purpose,
+	improve-user-bit-rate,
+	user-inactivity,
+	radio-connection-with-UE-lost,
+	failure-in-the-radio-interface-procedure,
+	bearer-option-not-supported
+
+}
+
+CauseTransport ::= ENUMERATED {
+	transport-resource-unavailable,
+	unspecified,
+	...
+}
+
+CellBasedMDT::= SEQUENCE {
+	cellIdListforMDT	CellIdListforMDT,
+	iE-Extensions		ProtocolExtensionContainer { {CellBasedMDT-ExtIEs} } OPTIONAL,
+	...
+}
+
+CellBasedMDT-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CellCapacityClassValue ::= INTEGER (1..100, ...)
+
+CellDeploymentStatusIndicator ::= ENUMERATED {pre-change-notification, ...}
+
+CellIdListforMDT ::= SEQUENCE (SIZE(1..maxnoofCellIDforMDT)) OF ECGI
+
+CellReplacingInfo ::= SEQUENCE {
+	replacingCellsList				ReplacingCellsList,
+	iE-Extensions					ProtocolExtensionContainer { { CellReplacingInfo-ExtIEs}}	OPTIONAL,
+	...
+}
+
+CellReplacingInfo-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CellReportingIndicator ::= ENUMERATED {stop-request, ... }
+
+Cell-Size ::= ENUMERATED {verysmall, small, medium, large, ... }
+
+
+CellType ::= SEQUENCE {
+	cell-Size						Cell-Size,
+	iE-Extensions					ProtocolExtensionContainer { { CellType-ExtIEs}}	OPTIONAL,
+	...
+}
+
+CellType-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CoMPHypothesisSet ::= SEQUENCE (SIZE(1..maxnoofCoMPCells)) OF CoMPHypothesisSetItem
+
+CoMPHypothesisSetItem ::= SEQUENCE {
+	coMPCellID						ECGI,
+	coMPHypothesis					BIT STRING (SIZE(6..4400, ...)),
+	iE-Extensions					ProtocolExtensionContainer { { CoMPHypothesisSetItem-ExtIEs} } OPTIONAL,
+	...
+}
+
+CoMPHypothesisSetItem-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CoMPInformation ::= SEQUENCE {
+	coMPInformationItem						CoMPInformationItem,
+	coMPInformationStartTime				CoMPInformationStartTime,
+	iE-Extensions							ProtocolExtensionContainer { { CoMPInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+CoMPInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CoMPInformationItem ::= SEQUENCE (SIZE(1..maxnoofCoMPHypothesisSet)) OF
+	SEQUENCE {
+		coMPHypothesisSet					CoMPHypothesisSet,
+		benefitMetric						BenefitMetric,
+		iE-Extensions						ProtocolExtensionContainer { { CoMPInformationItem-ExtIEs} } OPTIONAL,
+		...
+	}
+
+CoMPInformationItem-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CoMPInformationStartTime ::= SEQUENCE (SIZE(0..1)) OF
+	SEQUENCE {
+		startSFN							INTEGER (0..1023, ...),
+		startSubframeNumber					INTEGER (0..9, ...), 
+		iE-Extensions						ProtocolExtensionContainer { { CoMPInformationStartTime-ExtIEs} } OPTIONAL,
+		...
+	}
+
+CoMPInformationStartTime-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CompositeAvailableCapacity ::= SEQUENCE {
+	cellCapacityClassValue							CellCapacityClassValue				OPTIONAL,
+	capacityValue									CapacityValue,
+	iE-Extensions									ProtocolExtensionContainer { { CompositeAvailableCapacity-ExtIEs} } OPTIONAL,
+	...
+}
+
+CompositeAvailableCapacity-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CompositeAvailableCapacityGroup	::= SEQUENCE {
+	dL-CompositeAvailableCapacity					CompositeAvailableCapacity,
+	uL-CompositeAvailableCapacity					CompositeAvailableCapacity,
+	iE-Extensions									ProtocolExtensionContainer { { CompositeAvailableCapacityGroup-ExtIEs} } OPTIONAL,
+	...
+}
+
+CompositeAvailableCapacityGroup-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+Correlation-ID ::= OCTET STRING (SIZE (4))
+
+COUNTvalue ::= SEQUENCE {
+	pDCP-SN					PDCP-SN,
+	hFN						HFN,
+	iE-Extensions			ProtocolExtensionContainer { { COUNTvalue-ExtIEs} } OPTIONAL,
+	...
+}
+
+COUNTvalue-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+COUNTValueExtended ::= SEQUENCE {
+	pDCP-SNExtended			PDCP-SNExtended,
+	hFNModified				HFNModified,
+	iE-Extensions			ProtocolExtensionContainer { { COUNTValueExtended-ExtIEs} } OPTIONAL,
+	...
+}
+
+COUNTValueExtended-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+COUNTvaluePDCP-SNlength18 ::= SEQUENCE {
+	pDCP-SNlength18			PDCP-SNlength18,
+	hFNforPDCP-SNlength18	HFNforPDCP-SNlength18,
+	iE-Extensions			ProtocolExtensionContainer { { COUNTvaluePDCP-SNlength18-ExtIEs} } OPTIONAL,
+	...
+}
+
+COUNTvaluePDCP-SNlength18-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CoverageModificationList ::= SEQUENCE (SIZE (1..maxCellineNB)) OF CoverageModification-Item
+
+CoverageModification-Item ::= SEQUENCE {
+	eCGI							ECGI,
+	coverageState					INTEGER (0..15, ...),
+	cellDeploymentStatusIndicator	CellDeploymentStatusIndicator			OPTIONAL,
+	cellReplacingInfo				CellReplacingInfo						OPTIONAL,
+-- Included in case the Cell Deployment Status Indicator IE is present
+	...
+}
+
+CriticalityDiagnostics ::= SEQUENCE {
+	procedureCode					ProcedureCode					OPTIONAL,
+	triggeringMessage				TriggeringMessage				OPTIONAL,
+	procedureCriticality			Criticality						OPTIONAL,
+	iEsCriticalityDiagnostics		CriticalityDiagnostics-IE-List	OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} }	OPTIONAL,
+	...
+}
+
+
+CriticalityDiagnostics-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF
+	SEQUENCE {
+		iECriticality			Criticality,
+		iE-ID					ProtocolIE-ID,
+		typeOfError				TypeOfError,
+		iE-Extensions			ProtocolExtensionContainer { {CriticalityDiagnostics-IE-List-ExtIEs} } OPTIONAL,
+		...
+}
+
+CriticalityDiagnostics-IE-List-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CRNTI ::= BIT STRING (SIZE (16))
+
+CSGMembershipStatus ::= ENUMERATED { 
+	member,
+	not-member
+}
+
+CSG-Id ::= BIT STRING (SIZE (27))
+
+CSIReportList ::= SEQUENCE (SIZE(1..maxUEReport)) OF
+	SEQUENCE {
+		uEID							UEID,
+		cSIReportPerCSIProcess			CSIReportPerCSIProcess, 
+		iE-Extensions					ProtocolExtensionContainer { { CSIReportList-ExtIEs} } OPTIONAL,
+		...
+	}
+
+CSIReportList-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CSIReportPerCSIProcess ::= SEQUENCE (SIZE(1.. maxCSIProcess)) OF
+	SEQUENCE {
+		cSIProcessConfigurationIndex	INTEGER (1..7, ...),
+		cSIReportPerCSIProcessItem		CSIReportPerCSIProcessItem, 
+		iE-Extensions					ProtocolExtensionContainer { { CSIReportPerCSIProcess-ExtIEs} } OPTIONAL,
+		...
+	}
+
+CSIReportPerCSIProcess-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CSIReportPerCSIProcessItem ::= SEQUENCE (SIZE(1.. maxCSIReport)) OF
+	SEQUENCE {
+		rI								INTEGER (1..8, ...),
+		widebandCQI						WidebandCQI, 
+		subbandSize						SubbandSize,
+		subbandCQIList					SubbandCQIList	OPTIONAL,
+		iE-Extensions					ProtocolExtensionContainer { { CSIReportPerCSIProcessItem-ExtIEs} } OPTIONAL,
+		...
+	}
+
+CSIReportPerCSIProcessItem-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CyclicPrefixDL ::= ENUMERATED { 
+	normal,
+	extended,
+	...
+}
+
+CyclicPrefixUL ::= ENUMERATED { 
+	normal,
+	extended,
+	...
+}
+
+
+-- D
+
+DeactivationIndication::= ENUMERATED { 
+	deactivated,
+	...
+}
+
+DL-ABS-status::= INTEGER (0..100)
+
+DL-Forwarding ::= ENUMERATED {
+	dL-forwardingProposed,
+	...
+}
+
+DL-GBR-PRB-usage::= INTEGER (0..100)
+
+DL-non-GBR-PRB-usage::= INTEGER (0..100)
+
+DL-scheduling-PDCCH-CCE-usage::= INTEGER (0..100)
+
+DL-Total-PRB-usage::= INTEGER (0..100)
+
+DynamicDLTransmissionInformation ::= CHOICE {
+	naics-active			DynamicNAICSInformation,
+	naics-inactive			NULL,
+	...
+}
+
+DynamicNAICSInformation ::= SEQUENCE {
+	transmissionModes					BIT STRING (SIZE(8))												OPTIONAL,
+	pB-information						INTEGER(0..3)														OPTIONAL,
+	pA-list								SEQUENCE (SIZE(0..maxnoofPA)) OF PA-Values,
+	iE-Extensions						ProtocolExtensionContainer { {DynamicNAICSInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+DynamicNAICSInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- E
+
+EARFCN ::= INTEGER (0..maxEARFCN)
+
+EARFCNExtension ::= INTEGER(maxEARFCNPlusOne..newmaxEARFCN, ...)
+
+ECGI ::= SEQUENCE {
+	pLMN-Identity				PLMN-Identity,
+	eUTRANcellIdentifier		EUTRANCellIdentifier,
+	iE-Extensions				ProtocolExtensionContainer { {ECGI-ExtIEs} } OPTIONAL,
+	...
+}
+
+ECGI-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+EnhancedRNTP ::= SEQUENCE {
+	enhancedRNTPBitmap			BIT STRING (SIZE(12..8800, ...)),
+	rNTP-High-Power-Threshold	RNTP-Threshold,
+	enhancedRNTPStartTime		EnhancedRNTPStartTime  OPTIONAL,
+	iE-Extensions				ProtocolExtensionContainer { { EnhancedRNTP-ExtIEs} } OPTIONAL,
+	...
+}
+
+EnhancedRNTP-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+EnhancedRNTPStartTime ::= SEQUENCE {
+		startSFN				INTEGER (0..1023, ...),
+		startSubframeNumber		INTEGER (0..9, ...), 
+		iE-Extensions			ProtocolExtensionContainer { { EnhancedRNTPStartTime-ExtIEs} } OPTIONAL,
+		...
+	}
+
+EnhancedRNTPStartTime-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ENB-ID ::= CHOICE {
+	macro-eNB-ID	BIT STRING (SIZE (20)),
+	home-eNB-ID		BIT STRING (SIZE (28)),
+	... ,
+	short-Macro-eNB-ID		BIT STRING (SIZE(18)),
+	long-Macro-eNB-ID		BIT STRING (SIZE(21))
+}
+
+EncryptionAlgorithms ::= BIT STRING (SIZE (16, ...))
+
+EPLMNs ::= SEQUENCE (SIZE(1..maxnoofEPLMNs)) OF PLMN-Identity
+
+E-RAB-ID ::= INTEGER (0..15, ...)
+
+E-RAB-Level-QoS-Parameters ::= SEQUENCE {
+	qCI								QCI,
+	allocationAndRetentionPriority	AllocationAndRetentionPriority,
+	gbrQosInformation				GBR-QosInformation													OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { { E-RAB-Level-QoS-Parameters-ExtIEs} }	OPTIONAL,
+	...
+}
+
+E-RAB-Level-QoS-Parameters-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RAB-List ::= SEQUENCE (SIZE(1.. maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RAB-ItemIEs} }
+
+E-RAB-ItemIEs 	X2AP-PROTOCOL-IES ::= {
+	{ ID id-E-RAB-Item	 CRITICALITY ignore 	TYPE E-RAB-Item 	PRESENCE mandatory },
+	...
+}
+
+E-RAB-Item ::= SEQUENCE {
+	e-RAB-ID				E-RAB-ID,
+	cause						Cause,
+	iE-Extensions				ProtocolExtensionContainer { {E-RAB-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+E-RAB-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+EUTRA-Mode-Info ::= CHOICE {
+	fDD		FDD-Info,
+	tDD		TDD-Info,
+	...
+}
+
+EUTRANCellIdentifier ::= BIT STRING (SIZE (28))
+
+EUTRANTraceID		::= OCTET STRING (SIZE (8))
+
+EventType ::= ENUMERATED{
+	change-of-serving-cell,
+	...
+}
+
+ExpectedUEBehaviour ::= SEQUENCE {
+	expectedActivity		ExpectedUEActivityBehaviour OPTIONAL,
+	expectedHOInterval		ExpectedHOInterval			OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { { ExpectedUEBehaviour-ExtIEs} } OPTIONAL,
+	...
+}
+
+ExpectedUEBehaviour-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ExpectedUEActivityBehaviour ::= SEQUENCE {
+	expectedActivityPeriod					ExpectedActivityPeriod					OPTIONAL,
+	expectedIdlePeriod						ExpectedIdlePeriod						OPTIONAL,
+	sourceofUEActivityBehaviourInformation	SourceOfUEActivityBehaviourInformation	OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { { ExpectedUEActivityBehaviour-ExtIEs} } OPTIONAL,
+	...
+}
+
+ExpectedUEActivityBehaviour-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ExpectedActivityPeriod ::= INTEGER (1..30|40|50|60|80|100|120|150|180|181,...)
+
+ExpectedIdlePeriod ::= INTEGER (1..30|40|50|60|80|100|120|150|180|181,...)
+
+ExpectedHOInterval ::= ENUMERATED {
+	sec15, sec30, sec60, sec90, sec120, sec180, long-time,
+	...
+}
+
+ExtendedULInterferenceOverloadInfo ::= SEQUENCE {
+	associatedSubframes							BIT STRING (SIZE (5)),
+	extended-ul-InterferenceOverloadIndication	UL-InterferenceOverloadIndication,
+	iE-Extensions								ProtocolExtensionContainer { { ExtendedULInterferenceOverloadInfo-ExtIEs} } OPTIONAL,
+	...
+}
+
+ExtendedULInterferenceOverloadInfo-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- F
+
+FDD-Info ::= SEQUENCE {
+	uL-EARFCN						EARFCN,
+	dL-EARFCN						EARFCN,
+	uL-Transmission-Bandwidth		Transmission-Bandwidth,
+	dL-Transmission-Bandwidth		Transmission-Bandwidth,
+	iE-Extensions				ProtocolExtensionContainer { {FDD-Info-ExtIEs} } OPTIONAL,
+	...
+}
+
+FDD-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-UL-EARFCNExtension		CRITICALITY reject	EXTENSION EARFCNExtension		PRESENCE optional}|
+	{ ID id-DL-EARFCNExtension		CRITICALITY reject	EXTENSION EARFCNExtension		PRESENCE optional}|
+	{ ID id-OffsetOfNbiotChannelNumberToDL-EARFCN	CRITICALITY reject	EXTENSION OffsetOfNbiotChannelNumberToEARFCN		PRESENCE optional}|
+	{ ID id-OffsetOfNbiotChannelNumberToUL-EARFCN	CRITICALITY reject	EXTENSION OffsetOfNbiotChannelNumberToEARFCN		PRESENCE optional},
+	...
+}
+
+ForbiddenInterRATs ::= ENUMERATED {
+	all,
+	geran,
+	utran,
+	cdma2000,
+	...,
+	geranandutran,
+	cdma2000andutran
+
+}
+
+ForbiddenTAs ::= SEQUENCE (SIZE(1.. maxnoofEPLMNsPlusOne)) OF ForbiddenTAs-Item
+
+ForbiddenTAs-Item ::= SEQUENCE {
+	pLMN-Identity		PLMN-Identity,
+	forbiddenTACs		ForbiddenTACs,
+	iE-Extensions		ProtocolExtensionContainer { {ForbiddenTAs-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+ForbiddenTAs-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ForbiddenTACs ::= SEQUENCE (SIZE(1..maxnoofForbTACs)) OF TAC
+
+ForbiddenLAs ::= SEQUENCE (SIZE(1..maxnoofEPLMNsPlusOne)) OF ForbiddenLAs-Item
+
+ForbiddenLAs-Item ::= SEQUENCE {	
+	pLMN-Identity		PLMN-Identity,
+	forbiddenLACs		ForbiddenLACs,
+	iE-Extensions		ProtocolExtensionContainer { {ForbiddenLAs-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+ForbiddenLAs-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ForbiddenLACs ::= SEQUENCE (SIZE(1..maxnoofForbLACs)) OF LAC
+
+Fourframes ::= BIT STRING (SIZE (24))
+
+FreqBandIndicator ::= INTEGER (1..256, ...) 
+
+FreqBandIndicatorPriority ::= ENUMERATED {
+	not-broadcasted,
+	broadcasted, 
+	...
+}
+
+-- G
+
+GBR-QosInformation ::= SEQUENCE {
+	e-RAB-MaximumBitrateDL			BitRate,
+	e-RAB-MaximumBitrateUL			BitRate,
+	e-RAB-GuaranteedBitrateDL		BitRate,
+	e-RAB-GuaranteedBitrateUL		BitRate,
+	iE-Extensions					ProtocolExtensionContainer { { GBR-QosInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+GBR-QosInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GlobalENB-ID ::= SEQUENCE {
+	pLMN-Identity			PLMN-Identity,
+	eNB-ID					ENB-ID,
+	iE-Extensions			ProtocolExtensionContainer { {GlobalENB-ID-ExtIEs} } OPTIONAL,
+	...
+}
+
+GlobalENB-ID-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GTPtunnelEndpoint ::= SEQUENCE {
+	transportLayerAddress			TransportLayerAddress,
+	gTP-TEID						GTP-TEI,
+	iE-Extensions					ProtocolExtensionContainer { {GTPtunnelEndpoint-ExtIEs} } OPTIONAL,
+	...
+}
+
+GTPtunnelEndpoint-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GTP-TEI					::= OCTET STRING (SIZE (4))
+
+GUGroupIDList		::= SEQUENCE (SIZE (1..maxPools)) OF GU-Group-ID
+
+
+GU-Group-ID			::= SEQUENCE {
+	pLMN-Identity		PLMN-Identity,
+	mME-Group-ID		MME-Group-ID,
+	iE-Extensions		ProtocolExtensionContainer { {GU-Group-ID-ExtIEs} } OPTIONAL,
+	...
+}
+
+GU-Group-ID-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+GUMMEI			::= SEQUENCE {
+	
+	gU-Group-ID		GU-Group-ID,
+	mME-Code			MME-Code,
+	iE-Extensions					ProtocolExtensionContainer { {GUMMEI-ExtIEs} } OPTIONAL,
+	...
+}
+
+GUMMEI-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+
+-- H
+
+HandoverReportType ::= ENUMERATED {
+	hoTooEarly,
+	hoToWrongCell,
+	...,
+	interRATpingpong
+}
+
+HandoverRestrictionList ::= SEQUENCE {
+	servingPLMN					PLMN-Identity,
+	equivalentPLMNs				EPLMNs					OPTIONAL,
+	forbiddenTAs				ForbiddenTAs			OPTIONAL,
+	forbiddenLAs				ForbiddenLAs			OPTIONAL,
+	forbiddenInterRATs			ForbiddenInterRATs		OPTIONAL,
+	iE-Extensions				ProtocolExtensionContainer { {HandoverRestrictionList-ExtIEs} }	OPTIONAL,
+	...
+}
+
+HandoverRestrictionList-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+HFN ::= INTEGER (0..1048575)
+
+HFNModified ::= INTEGER (0..131071)
+
+HFNforPDCP-SNlength18 ::= INTEGER (0..16383)
+
+HWLoadIndicator ::= SEQUENCE {
+	dLHWLoadIndicator			LoadIndicator,
+	uLHWLoadIndicator			LoadIndicator,
+	iE-Extensions				ProtocolExtensionContainer { { HWLoadIndicator-ExtIEs} } OPTIONAL,
+	...
+}
+
+HWLoadIndicator-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+-- I
+
+IntegrityProtectionAlgorithms ::= BIT STRING (SIZE (16, ...))
+
+InterfacesToTrace ::= BIT STRING (SIZE (8)) 
+
+InvokeIndication ::= ENUMERATED{
+	abs-information,
+	...,
+	naics-information-start,
+	naics-information-stop
+}
+
+-- J
+-- K
+
+Key-eNodeB-Star ::= BIT STRING (SIZE(256))
+
+-- L
+
+LAC					::= OCTET STRING (SIZE (2)) --(EXCEPT ('0000'H|'FFFE'H))
+
+LastVisitedCell-Item ::= CHOICE {
+	e-UTRAN-Cell					LastVisitedEUTRANCellInformation,
+	uTRAN-Cell						LastVisitedUTRANCellInformation,
+	gERAN-Cell						LastVisitedGERANCellInformation,
+	...
+}
+
+LastVisitedEUTRANCellInformation ::= SEQUENCE {
+	global-Cell-ID					ECGI,
+	cellType						CellType,
+	time-UE-StayedInCell			Time-UE-StayedInCell,
+	iE-Extensions					ProtocolExtensionContainer { { LastVisitedEUTRANCellInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+LastVisitedEUTRANCellInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+-- Extension for Rel-11 to support enhanced granularity for time UE stayed in cell --
+	{ ID id-Time-UE-StayedInCell-EnhancedGranularity	CRITICALITY ignore	EXTENSION Time-UE-StayedInCell-EnhancedGranularity	PRESENCE optional}|
+	{ ID id-HO-cause									CRITICALITY ignore	EXTENSION Cause							PRESENCE optional},
+	...
+}
+
+LastVisitedGERANCellInformation ::= CHOICE {
+	undefined						NULL,
+	...
+}
+
+LastVisitedUTRANCellInformation	::= OCTET STRING
+
+LHN-ID ::=  OCTET STRING(SIZE (32..256))
+
+Links-to-log ::= ENUMERATED {uplink, downlink, both-uplink-and-downlink, ...}
+
+LoadIndicator ::= ENUMERATED {
+	lowLoad,
+	mediumLoad, 
+	highLoad,
+	overLoad,
+	...
+}
+
+LocationReportingInformation ::= SEQUENCE {
+	eventType		EventType,
+	reportArea		ReportArea,
+	iE-Extensions		ProtocolExtensionContainer { {LocationReportingInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+LocationReportingInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::={
+	...
+}
+
+-- M
+
+M1PeriodicReporting ::= SEQUENCE { 
+	reportInterval				ReportIntervalMDT,
+	reportAmount				ReportAmountMDT,
+	iE-Extensions				ProtocolExtensionContainer { { M1PeriodicReporting-ExtIEs} } OPTIONAL,
+	...
+}
+
+M1PeriodicReporting-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M1ReportingTrigger::= ENUMERATED{
+	periodic,
+	a2eventtriggered,
+	...,
+	a2eventtriggered-periodic
+}
+
+M1ThresholdEventA2 ::= SEQUENCE { 
+	measurementThreshold		MeasurementThresholdA2,
+	iE-Extensions				ProtocolExtensionContainer { { M1ThresholdEventA2-ExtIEs} } OPTIONAL,
+	...
+}
+
+M1ThresholdEventA2-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M3Configuration ::= SEQUENCE {
+	m3period			M3period,
+	iE-Extensions		ProtocolExtensionContainer { { M3Configuration-ExtIEs} } OPTIONAL,
+	...
+}
+
+M3Configuration-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M3period ::= ENUMERATED {ms100, ms1000, ms10000, ... } 
+
+M4Configuration ::= SEQUENCE {
+	m4period			M4period,
+	m4-links-to-log		Links-to-log,
+	iE-Extensions		ProtocolExtensionContainer { { M4Configuration-ExtIEs} } OPTIONAL,
+	...
+}
+
+M4Configuration-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M4period ::= ENUMERATED {ms1024, ms2048, ms5120, ms10240, min1, ... } 
+
+
+M5Configuration ::= SEQUENCE {
+	m5period			M5period,
+	m5-links-to-log		Links-to-log,
+	iE-Extensions		ProtocolExtensionContainer { { M5Configuration-ExtIEs} } OPTIONAL,
+	...
+}
+
+M5Configuration-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M5period ::= ENUMERATED {ms1024, ms2048, ms5120, ms10240, min1, ... }
+
+M6Configuration ::= SEQUENCE {
+	m6report-interval	M6report-interval,
+	m6delay-threshold	M6delay-threshold	OPTIONAL,
+-- This IE shall be present if the M6 Links to log IE is set to “uplink” or to “both-uplink-and-downlink” --
+	m6-links-to-log		Links-to-log,
+	iE-Extensions		ProtocolExtensionContainer { { M6Configuration-ExtIEs} } OPTIONAL,
+	...
+}
+
+M6Configuration-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M6report-interval ::= ENUMERATED { ms1024, ms2048, ms5120, ms10240, ... } 
+
+M6delay-threshold ::= ENUMERATED { ms30, ms40, ms50, ms60, ms70, ms80, ms90, ms100, ms150, ms300, ms500, ms750, ... }
+
+M7Configuration ::= SEQUENCE {
+	m7period			M7period,
+	m7-links-to-log		Links-to-log,
+	iE-Extensions		ProtocolExtensionContainer { { M7Configuration-ExtIEs} } OPTIONAL,
+	...
+}
+
+M7Configuration-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M7period ::= INTEGER(1..60, ...)
+
+MakeBeforeBreakIndicator::= ENUMERATED {true, ...}
+
+ManagementBasedMDTallowed ::= ENUMERATED {allowed, ...}
+
+Masked-IMEISV ::= BIT STRING (SIZE (64))
+
+MDT-Activation		::= ENUMERATED { 
+	immediate-MDT-only,
+	immediate-MDT-and-Trace,
+	...
+}
+
+MDT-Configuration ::= SEQUENCE {
+	mdt-Activation				MDT-Activation,
+	areaScopeOfMDT				AreaScopeOfMDT,
+	measurementsToActivate		MeasurementsToActivate,
+	m1reportingTrigger			M1ReportingTrigger,
+	m1thresholdeventA2			M1ThresholdEventA2			OPTIONAL,
+-- Included in case of event-triggered, or event-triggered periodic reporting for measurement M1
+	m1periodicReporting			M1PeriodicReporting			OPTIONAL,
+-- Included in case of periodic, or event-triggered periodic reporting for measurement M1
+	iE-Extensions				ProtocolExtensionContainer { { MDT-Configuration-ExtIEs} } OPTIONAL,
+	...
+}
+
+MDT-Configuration-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ID id-M3Configuration				CRITICALITY ignore	EXTENSION M3Configuration		PRESENCE conditional}|
+	{ID id-M4Configuration				CRITICALITY ignore	EXTENSION M4Configuration		PRESENCE conditional}|
+	{ID id-M5Configuration				CRITICALITY ignore	EXTENSION M5Configuration		PRESENCE conditional}|
+	{ID id-MDT-Location-Info			CRITICALITY ignore	EXTENSION MDT-Location-Info		PRESENCE optional}|
+	{ID id-SignallingBasedMDTPLMNList	CRITICALITY ignore	EXTENSION MDTPLMNList			PRESENCE optional}|
+	{ID id-M6Configuration				CRITICALITY ignore	EXTENSION M6Configuration		PRESENCE conditional}|
+	{ID id-M7Configuration				CRITICALITY ignore	EXTENSION M7Configuration		PRESENCE conditional},
+	...
+}
+
+MDTPLMNList ::= SEQUENCE (SIZE(1..maxnoofMDTPLMNs)) OF PLMN-Identity
+
+MDT-Location-Info ::= BIT STRING (SIZE (8))
+
+Measurement-ID	::= INTEGER (1..4095, ...) 
+
+MeasurementsToActivate::= BIT STRING (SIZE (8))
+
+MeasurementThresholdA2 ::= CHOICE { 
+	threshold-RSRP				Threshold-RSRP,
+	threshold-RSRQ				Threshold-RSRQ,
+	...
+}
+
+MeNBtoSeNBContainer  ::= OCTET STRING
+
+MME-Group-ID	::= OCTET STRING (SIZE (2))
+
+MME-Code		::= OCTET STRING (SIZE (1))
+
+MBMS-Service-Area-Identity-List ::= SEQUENCE (SIZE(1.. maxnoofMBMSServiceAreaIdentities)) OF MBMS-Service-Area-Identity
+
+MBMS-Service-Area-Identity ::= OCTET STRING (SIZE (2))
+
+MBSFN-Subframe-Infolist::= SEQUENCE (SIZE(1.. maxnoofMBSFN)) OF MBSFN-Subframe-Info
+
+MBSFN-Subframe-Info	::= SEQUENCE {
+	radioframeAllocationPeriod		RadioframeAllocationPeriod,
+	radioframeAllocationOffset		RadioframeAllocationOffset,
+	subframeAllocation				SubframeAllocation,
+	iE-Extensions			ProtocolExtensionContainer { { MBSFN-Subframe-Info-ExtIEs } } 	OPTIONAL,
+	...
+}
+
+MBSFN-Subframe-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+MobilityParametersModificationRange ::= SEQUENCE {
+	handoverTriggerChangeLowerLimit		INTEGER (-20..20),
+	handoverTriggerChangeUpperLimit		INTEGER (-20..20),
+	...
+}
+
+MobilityParametersInformation ::= SEQUENCE {
+	handoverTriggerChange			INTEGER (-20..20),
+	...
+}
+
+MultibandInfoList ::= SEQUENCE (SIZE(1..maxnoofBands)) OF BandInfo 
+
+
+BandInfo	::= SEQUENCE {
+	freqBandIndicator		FreqBandIndicator,
+	iE-Extensions			ProtocolExtensionContainer { { BandInfo-ExtIEs } } 	OPTIONAL,
+	...
+}
+
+BandInfo-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- N
+
+Neighbour-Information ::= SEQUENCE (SIZE (0..maxnoofNeighbours)) OF SEQUENCE {
+	eCGI						ECGI,
+	pCI					 		PCI,
+	eARFCN						EARFCN,
+	iE-Extensions		 ProtocolExtensionContainer { {Neighbour-Information-ExtIEs} } OPTIONAL,
+	...
+}
+
+Neighbour-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-NeighbourTAC		CRITICALITY ignore	EXTENSION TAC				PRESENCE optional}|
+	{ ID id-eARFCNExtension		CRITICALITY reject	EXTENSION EARFCNExtension	PRESENCE optional},
+	...
+}
+
+NextHopChainingCount ::= INTEGER (0..7)
+
+Number-of-Antennaports ::= ENUMERATED {
+		an1,
+	 	an2,
+		an4,
+		...
+}
+
+-- O
+
+OffsetOfNbiotChannelNumberToEARFCN ::= ENUMERATED {
+		minusTen,
+		minusNine,
+		minusEight,
+		minusSeven,
+		minusSix,
+		minusFive,
+		minusFour,
+		minusThree,
+		minusTwo,
+		minusOne,
+		minusZeroDotFive,
+		zero,
+		one,
+		two,
+		three,
+		four,
+		five,
+		six,
+		seven,
+		eight,
+		nine,
+		...
+}
+
+Oneframe ::= BIT STRING (SIZE (6))
+
+-- P
+
+PA-Values ::= ENUMERATED {
+	dB-6,
+	dB-4dot77,
+	dB-3,
+	dB-1dot77,
+	dB0,
+	dB1,
+	dB2,
+	dB3,
+	...
+}
+
+PDCP-SN ::= INTEGER (0..4095)
+
+PDCP-SNExtended ::= INTEGER (0..32767)
+
+PDCP-SNlength18 ::= INTEGER (0..262143)
+
+PCI ::= INTEGER (0..503, ...)
+
+PLMN-Identity ::= OCTET STRING (SIZE(3))
+
+Port-Number ::= OCTET STRING (SIZE (2))
+
+PRACH-Configuration ::= SEQUENCE {
+	rootSequenceIndex						INTEGER (0..837),
+	zeroCorrelationIndex					INTEGER (0..15),
+	highSpeedFlag							BOOLEAN,
+	prach-FreqOffset						INTEGER (0..94),
+	prach-ConfigIndex						INTEGER (0..63)		OPTIONAL,  -- present for TDD --
+	iE-Extensions							ProtocolExtensionContainer { {PRACH-Configuration-ExtIEs} }	OPTIONAL,
+	...
+}
+
+PRACH-Configuration-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+Pre-emptionCapability ::= ENUMERATED {
+	shall-not-trigger-pre-emption,
+	may-trigger-pre-emption
+}
+
+Pre-emptionVulnerability ::= ENUMERATED {
+	not-pre-emptable,
+	pre-emptable
+}
+
+PriorityLevel				::= INTEGER { spare (0), highest (1), lowest (14), no-priority (15) } (0..15)
+
+ProSeAuthorized ::= SEQUENCE {
+	proSeDirectDiscovery		ProSeDirectDiscovery			OPTIONAL,
+	proSeDirectCommunication	ProSeDirectCommunication		OPTIONAL,
+	iE-Extensions				ProtocolExtensionContainer { {ProSeAuthorized-ExtIEs} }	OPTIONAL,
+	...
+}
+
+ProSeAuthorized-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-ProSeUEtoNetworkRelaying	CRITICALITY ignore	EXTENSION ProSeUEtoNetworkRelaying		PRESENCE optional},
+	...
+}
+
+ProSeDirectDiscovery ::= ENUMERATED { 
+	authorized,
+	not-authorized,
+	...
+}
+
+ProSeDirectCommunication ::= ENUMERATED { 
+	authorized,
+	not-authorized,
+	...
+}
+
+ProSeUEtoNetworkRelaying ::= ENUMERATED { 
+	authorized,
+	not-authorized,
+	...
+}
+
+-- Q
+
+QCI ::= INTEGER (0..255)
+
+-- R
+
+RadioframeAllocationOffset ::= INTEGER (0..7, ...)
+
+RadioframeAllocationPeriod ::= ENUMERATED{
+	n1,
+	n2,
+	n4,
+	n8,
+	n16,
+	n32,
+	...
+}
+
+
+RadioResourceStatus	::= SEQUENCE {
+	dL-GBR-PRB-usage							DL-GBR-PRB-usage,
+	uL-GBR-PRB-usage							UL-GBR-PRB-usage,
+	dL-non-GBR-PRB-usage						DL-non-GBR-PRB-usage,
+	uL-non-GBR-PRB-usage						UL-non-GBR-PRB-usage,
+	dL-Total-PRB-usage							DL-Total-PRB-usage,
+	uL-Total-PRB-usage							UL-Total-PRB-usage,
+	iE-Extensions								ProtocolExtensionContainer { {RadioResourceStatus-ExtIEs} } OPTIONAL,
+	...
+}
+
+RadioResourceStatus-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ID id-DL-scheduling-PDCCH-CCE-usage		CRITICALITY ignore	EXTENSION DL-scheduling-PDCCH-CCE-usage		PRESENCE optional}|
+
+	{ID id-UL-scheduling-PDCCH-CCE-usage		CRITICALITY ignore	EXTENSION UL-scheduling-PDCCH-CCE-usage		PRESENCE optional},
+	...
+}
+
+ReceiveStatusofULPDCPSDUs ::= BIT STRING (SIZE(4096))
+
+ReceiveStatusOfULPDCPSDUsExtended ::= BIT STRING (SIZE(1..16384))
+
+ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 ::= BIT STRING (SIZE(1..131072))
+
+Registration-Request	::= ENUMERATED {
+	start,
+	stop,
+	...,
+	partial-stop,
+	add
+}
+ 
+RelativeNarrowbandTxPower ::= SEQUENCE {
+
+	rNTP-PerPRB							BIT STRING (SIZE(6..110, ...)),
+	rNTP-Threshold						RNTP-Threshold,
+	numberOfCellSpecificAntennaPorts	ENUMERATED {one, two, four, ...},
+	p-B									INTEGER (0..3,...),
+	pDCCH-InterferenceImpact			INTEGER (0..4,...),
+	iE-Extensions						ProtocolExtensionContainer { { RelativeNarrowbandTxPower-ExtIEs} } OPTIONAL,
+	...
+}
+
+RelativeNarrowbandTxPower-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-enhancedRNTP	CRITICALITY ignore	EXTENSION EnhancedRNTP		PRESENCE optional },
+	...
+}
+
+ReplacingCellsList ::= SEQUENCE (SIZE(0.. maxCellineNB)) OF ReplacingCellsList-Item
+
+ReplacingCellsList-Item ::= SEQUENCE {
+	eCGI			ECGI,
+	...
+}
+
+ReportAmountMDT ::= ENUMERATED{r1, r2, r4, r8, r16, r32, r64, rinfinity}
+
+ReportArea ::= ENUMERATED{
+	ecgi,
+	...
+}
+
+ReportCharacteristics	::= BIT STRING (SIZE (32))
+
+ReportingPeriodicityCSIR ::= ENUMERATED {
+	ms5,
+	ms10,
+	ms20,
+	ms40,
+	ms80,
+...
+}
+
+ReportingPeriodicityRSRPMR ::= ENUMERATED {
+	one-hundred-20-ms,
+	two-hundred-40-ms,
+	four-hundred-80-ms,
+	six-hundred-40-ms,
+...
+}
+
+ReportIntervalMDT ::= ENUMERATED {ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240, min1, min6, min12, min30, min60}
+
+ResumeID	::= CHOICE {
+	non-truncated	BIT STRING(SIZE(40)),
+	truncated		BIT STRING(SIZE(24)),
+	...
+}
+
+RNTP-Threshold ::= ENUMERATED {
+	minusInfinity,
+	minusEleven,
+	minusTen,
+	minusNine,
+	minusEight,
+	minusSeven,
+	minusSix,
+	minusFive,
+	minusFour,
+	minusThree,
+	minusTwo,
+	minusOne,
+	zero,
+	one,
+	two,
+	three,
+	...
+}
+
+RRC-Context ::= OCTET STRING
+
+RRCConnReestabIndicator ::= ENUMERATED {
+	reconfigurationFailure, handoverFailure, otherFailure, ...
+}
+-- The values correspond to the values of ReestablishmentCause reported from the UE in the RRCConnectionReestablishmentRequest, as defined in TS 36.331 [9]
+
+RRCConnSetupIndicator::= ENUMERATED {
+	rrcConnSetup,
+	...
+}
+
+RSRPMeasurementResult ::= SEQUENCE (SIZE(1..maxCellReport)) OF
+	SEQUENCE {
+		rSRPCellID						ECGI,
+		rSRPMeasured					INTEGER (0..97, ...), 
+		iE-Extensions					ProtocolExtensionContainer { { RSRPMeasurementResult-ExtIEs} } OPTIONAL,
+		...
+	}
+
+RSRPMeasurementResult-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RSRPMRList ::= SEQUENCE (SIZE(1..maxUEReport)) OF
+	SEQUENCE {
+		rSRPMeasurementResult			RSRPMeasurementResult, 
+		iE-Extensions					ProtocolExtensionContainer { { RSRPMRList-ExtIEs} } OPTIONAL,
+		...
+	}
+
+RSRPMRList-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-UEID	CRITICALITY ignore	EXTENSION UEID		PRESENCE optional},
+	...
+}
+
+-- S
+
+S1TNLLoadIndicator ::= SEQUENCE {
+	dLS1TNLLoadIndicator			LoadIndicator,
+	uLS1TNLLoadIndicator			LoadIndicator,
+	iE-Extensions					ProtocolExtensionContainer { { S1TNLLoadIndicator-ExtIEs} } OPTIONAL,
+	...
+}
+
+S1TNLLoadIndicator-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SCGChangeIndication ::= ENUMERATED {pDCPCountWrapAround, pSCellChange, other, ...}
+
+SeNBSecurityKey ::= BIT STRING (SIZE(256))
+
+SeNBtoMeNBContainer ::= OCTET STRING
+
+
+ServedCells ::= SEQUENCE (SIZE (1.. maxCellineNB)) OF SEQUENCE {
+	servedCellInfo					ServedCell-Information,
+	neighbour-Info					Neighbour-Information			OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {ServedCell-ExtIEs} } OPTIONAL,
+	...
+}
+
+ServedCell-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ServedCell-Information ::= SEQUENCE {
+	pCI					PCI,
+	cellId				ECGI,
+	tAC					TAC,
+	broadcastPLMNs		BroadcastPLMNs-Item,
+	eUTRA-Mode-Info		EUTRA-Mode-Info,
+	iE-Extensions		ProtocolExtensionContainer { {ServedCell-Information-ExtIEs} } OPTIONAL,
+	...
+}
+
+ServedCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-Number-of-Antennaports		CRITICALITY ignore	EXTENSION Number-of-Antennaports				PRESENCE optional}|
+	{ ID id-PRACH-Configuration			CRITICALITY ignore	EXTENSION PRACH-Configuration					PRESENCE optional}|
+	{ ID id-MBSFN-Subframe-Info			CRITICALITY ignore	EXTENSION MBSFN-Subframe-Infolist				PRESENCE optional}|
+	{ ID id-CSG-Id						CRITICALITY ignore	EXTENSION CSG-Id								PRESENCE optional}|
+	{ ID id-MBMS-Service-Area-List		CRITICALITY ignore	EXTENSION MBMS-Service-Area-Identity-List	PRESENCE optional}|
+	{ ID id-MultibandInfoList			CRITICALITY ignore	EXTENSION MultibandInfoList						PRESENCE optional}|
+	{ ID id-FreqBandIndicatorPriority	CRITICALITY ignore	EXTENSION FreqBandIndicatorPriority				PRESENCE optional}|
+	{ ID id-BandwidthReducedSI			CRITICALITY ignore	EXTENSION BandwidthReducedSI					PRESENCE optional},
+	...
+}
+
+SIPTOBearerDeactivationIndication ::= ENUMERATED {
+	true,
+	...
+}
+
+ShortMAC-I ::= BIT STRING (SIZE(16))
+
+SourceOfUEActivityBehaviourInformation ::= ENUMERATED {
+	subscription-information,
+	statistics,
+	...
+}
+
+SpecialSubframe-Info ::= SEQUENCE {
+	specialSubframePatterns		SpecialSubframePatterns,
+	cyclicPrefixDL				CyclicPrefixDL,
+	cyclicPrefixUL				CyclicPrefixUL,
+	iE-Extensions				ProtocolExtensionContainer { { SpecialSubframe-Info-ExtIEs} } OPTIONAL,
+	...
+}
+
+SpecialSubframe-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SpecialSubframePatterns ::= ENUMERATED { 
+	ssp0,
+	ssp1, 
+	ssp2,
+	ssp3,
+	ssp4,
+	ssp5,
+	ssp6,
+	ssp7,
+	ssp8,
+	...
+}
+
+SubbandCQI ::= SEQUENCE {
+	subbandCQICodeword0			SubbandCQICodeword0,
+	subbandCQICodeword1			SubbandCQICodeword1		OPTIONAL,
+	iE-Extensions				ProtocolExtensionContainer { { SubbandCQI-ExtIEs} } OPTIONAL,
+	...
+}
+
+SRVCCOperationPossible ::= ENUMERATED {
+	possible,
+	...
+}
+
+SubbandCQI-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SubbandCQICodeword0 ::= CHOICE {
+	four-bitCQI						INTEGER (0..15, ...),
+	two-bitSubbandDifferentialCQI	INTEGER (0..3, ...),
+	two-bitDifferentialCQI			INTEGER (0..3, ...),
+	...
+}
+SubbandCQICodeword1 ::= CHOICE {
+	four-bitCQI							INTEGER (0..15, ...),
+	three-bitSpatialDifferentialCQI		INTEGER (0..7, ...),
+	two-bitSubbandDifferentialCQI		INTEGER (0..3, ...),
+	two-bitDifferentialCQI				INTEGER (0..3, ...),
+	...
+}
+
+SubbandCQIList ::= SEQUENCE (SIZE(1.. maxSubband)) OF SubbandCQIItem
+
+SubbandCQIItem ::= SEQUENCE {
+	subbandCQI			SubbandCQI,
+	subbandIndex		INTEGER (0..27,...),
+	iE-Extensions		ProtocolExtensionContainer { { SubbandCQIItem-ExtIEs} } OPTIONAL,
+	...
+}
+
+SubbandCQIItem-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SubbandSize ::= ENUMERATED { 
+	size2,
+	size3,
+	size4,
+	size6,
+	size8,
+	...
+}
+
+SubscriberProfileIDforRFP ::= INTEGER (1..256) 
+
+SubframeAllocation ::= CHOICE {
+	oneframe						Oneframe,
+	fourframes						Fourframes,
+	...
+}
+
+SubframeAssignment ::= ENUMERATED { 
+	sa0,
+	sa1, 
+	sa2,
+	sa3,
+	sa4,
+	sa5,
+	sa6,
+	...
+}
+
+
+-- T
+
+TABasedMDT::= SEQUENCE {
+	tAListforMDT		TAListforMDT,
+	iE-Extensions		ProtocolExtensionContainer { {TABasedMDT-ExtIEs} } OPTIONAL,
+	...
+}
+
+TABasedMDT-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TAC ::= OCTET STRING (SIZE (2)) 
+
+TAIBasedMDT ::= SEQUENCE {
+	tAIListforMDT			TAIListforMDT,
+	iE-Extensions			ProtocolExtensionContainer { {TAIBasedMDT-ExtIEs} } OPTIONAL,
+	...
+}
+
+TAIBasedMDT-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TAIListforMDT ::= SEQUENCE (SIZE(1..maxnoofTAforMDT)) OF TAI-Item
+
+TAI-Item ::= SEQUENCE {
+	tAC					TAC,
+	pLMN-Identity		PLMN-Identity,
+	iE-Extensions		ProtocolExtensionContainer { { TAI-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+TAI-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TAListforMDT ::= SEQUENCE (SIZE(1..maxnoofTAforMDT)) OF TAC
+
+TargetCellInUTRAN ::= OCTET STRING -- This IE is to be encoded according to the UTRAN Cell ID in the Last Visited UTRAN Cell Information IE in TS 25.413 [24]
+
+TargeteNBtoSource-eNBTransparentContainer	::= OCTET STRING
+
+TDD-Info ::= SEQUENCE {
+	eARFCN							EARFCN,
+	transmission-Bandwidth			Transmission-Bandwidth,
+	subframeAssignment				SubframeAssignment,
+	specialSubframe-Info				SpecialSubframe-Info,
+	iE-Extensions				ProtocolExtensionContainer { {TDD-Info-ExtIEs} } OPTIONAL,
+	...
+}
+TDD-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-AdditionalSpecialSubframe-Info	CRITICALITY ignore	EXTENSION AdditionalSpecialSubframe-Info	PRESENCE optional}|
+	{ ID id-eARFCNExtension					CRITICALITY reject	EXTENSION EARFCNExtension						PRESENCE optional}|
+	{ ID id-AdditionalSpecialSubframeExtension-Info	CRITICALITY ignore	EXTENSION AdditionalSpecialSubframeExtension-Info	PRESENCE optional},
+	...
+}
+
+Threshold-RSRP ::= INTEGER(0..97)
+
+Threshold-RSRQ ::= INTEGER(0..34)
+
+TimeToWait ::= ENUMERATED {
+	v1s, 
+	v2s, 
+	v5s, 
+	v10s, 
+	v20s, 
+	v60s, 
+	...
+}
+
+Time-UE-StayedInCell ::= INTEGER (0..4095)
+
+Time-UE-StayedInCell-EnhancedGranularity ::= INTEGER (0..40950)
+
+TraceActivation ::= SEQUENCE {
+	eUTRANTraceID					EUTRANTraceID,
+	interfacesToTrace				InterfacesToTrace,
+     traceDepth						TraceDepth,
+     traceCollectionEntityIPAddress	TraceCollectionEntityIPAddress,
+	iE-Extensions					ProtocolExtensionContainer { {TraceActivation-ExtIEs} } OPTIONAL,
+	...
+}
+
+TraceActivation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-MDTConfiguration	CRITICALITY ignore	EXTENSION MDT-Configuration		PRESENCE optional},
+	...
+}
+
+TraceCollectionEntityIPAddress ::= BIT STRING (SIZE(1..160, ...))
+
+TraceDepth 		::= ENUMERATED { 
+	minimum,
+	medium,
+	maximum,
+	minimumWithoutVendorSpecificExtension,
+	mediumWithoutVendorSpecificExtension,
+	maximumWithoutVendorSpecificExtension,
+	...
+}
+
+Transmission-Bandwidth ::= ENUMERATED {
+		bw6,
+	 	bw15,
+		bw25,
+	 	bw50,
+		bw75,
+		bw100,
+		...,
+		bw1
+}
+
+TransportLayerAddress			::= BIT STRING (SIZE(1..160, ...))
+
+TunnelInformation ::= SEQUENCE {
+	transportLayerAddress	TransportLayerAddress,
+	uDP-Port-Number			Port-Number			OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { {Tunnel-Information-ExtIEs} } OPTIONAL,
+	...
+}
+
+Tunnel-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {	
+	...
+}
+
+TypeOfError ::= ENUMERATED {
+	not-understood,
+	missing,
+	...
+}
+
+
+-- U
+
+UEAggregateMaximumBitRate ::= SEQUENCE {
+	uEaggregateMaximumBitRateDownlink	BitRate,
+	uEaggregateMaximumBitRateUplink		BitRate,
+	iE-Extensions						ProtocolExtensionContainer { {UEAggregate-MaximumBitrate-ExtIEs} } OPTIONAL,
+	...
+}
+
+UEAggregate-MaximumBitrate-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+UE-ContextKeptIndicator ::= ENUMERATED {
+	true,
+	...
+}
+
+UEID ::= BIT STRING (SIZE (16))
+
+UE-HistoryInformation ::= SEQUENCE (SIZE(1..maxnoofCells)) OF LastVisitedCell-Item
+
+UE-HistoryInformationFromTheUE ::= OCTET STRING
+-- This IE is a transparent container and shall be encoded as the VisitedCellInfoList field contained in the UEInformationResponse message as defined in TS 36.331 [9]
+
+UE-S1AP-ID ::= INTEGER (0.. 4294967295)
+
+UE-X2AP-ID ::= INTEGER (0..4095)
+
+UE-X2AP-ID-Extension ::= INTEGER (0..4095, ...)
+
+UE-RLF-Report-Container::= OCTET STRING
+-- This IE is a transparent container and shall be encoded as the RLF-Report-r9 field contained in the UEInformationResponse message as defined in TS 36.331 [9]
+
+UE-RLF-Report-Container-for-extended-bands ::= OCTET STRING
+-- This IE is a transparent container and shall be encoded as the RLF-Report-v9e0 field contained in the UEInformationResponse message as defined in TS 36.331 [9]
+
+UESecurityCapabilities ::= SEQUENCE {
+	encryptionAlgorithms				EncryptionAlgorithms,
+	integrityProtectionAlgorithms		IntegrityProtectionAlgorithms,
+	iE-Extensions						ProtocolExtensionContainer { { UESecurityCapabilities-ExtIEs} }		OPTIONAL,
+...
+}
+
+UESecurityCapabilities-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+UESidelinkAggregateMaximumBitRate ::= SEQUENCE {
+	uESidelinkAggregateMaximumBitRate		BitRate,
+	iE-Extensions					ProtocolExtensionContainer { {UE-Sidelink-Aggregate-MaximumBitRate-ExtIEs} } OPTIONAL,
+	...
+}
+
+UE-Sidelink-Aggregate-MaximumBitRate-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+UL-GBR-PRB-usage::= INTEGER (0..100)
+
+UL-HighInterferenceIndicationInfo ::= SEQUENCE (SIZE(1..maxCellineNB)) OF UL-HighInterferenceIndicationInfo-Item
+
+UL-HighInterferenceIndicationInfo-Item ::= SEQUENCE {
+	target-Cell-ID					ECGI,
+	ul-interferenceindication		UL-HighInterferenceIndication,
+	iE-Extensions					ProtocolExtensionContainer { { UL-HighInterferenceIndicationInfo-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+UL-HighInterferenceIndicationInfo-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+UL-HighInterferenceIndication ::= BIT STRING (SIZE(1..110, ...))
+
+UL-InterferenceOverloadIndication ::= SEQUENCE (SIZE(1..maxnoofPRBs)) OF UL-InterferenceOverloadIndication-Item
+
+UL-InterferenceOverloadIndication-Item ::= ENUMERATED {
+	high-interference,
+	medium-interference,
+	low-interference,
+	...
+}
+
+UL-non-GBR-PRB-usage::= INTEGER (0..100)
+
+UL-scheduling-PDCCH-CCE-usage::= INTEGER (0..100)
+
+UL-Total-PRB-usage::= INTEGER (0..100)
+
+UsableABSInformation ::= CHOICE {
+	fdd					UsableABSInformationFDD,
+	tdd					UsableABSInformationTDD,
+	...
+}
+
+UsableABSInformationFDD ::= SEQUENCE {
+	usable-abs-pattern-info				BIT STRING (SIZE(40)),
+	iE-Extensions						ProtocolExtensionContainer { { UsableABSInformationFDD-ExtIEs} } OPTIONAL,
+	...
+}
+
+UsableABSInformationFDD-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+UsableABSInformationTDD ::= SEQUENCE {
+	usaable-abs-pattern-info			BIT STRING (SIZE(1..70, ...)),
+	iE-Extensions						ProtocolExtensionContainer { { UsableABSInformationTDD-ExtIEs} } OPTIONAL,
+	...
+}
+
+UsableABSInformationTDD-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+-- V
+
+V2XServicesAuthorized ::= SEQUENCE {
+	vehicleUE			VehicleUE											OPTIONAL,
+pedestrianUE 		PedestrianUE										    OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { {V2XServicesAuthorized-ExtIEs} }	OPTIONAL,
+	...
+}
+
+V2XServicesAuthorized-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+VehicleUE ::= ENUMERATED { 
+	authorized,
+	not-authorized,
+	...
+}
+
+PedestrianUE ::= ENUMERATED { 
+	authorized,
+	not-authorized,
+	...
+}
+
+-- W
+
+WidebandCQI ::= SEQUENCE {
+	widebandCQICodeword0		INTEGER (0..15, ...),
+	widebandCQICodeword1		WidebandCQICodeword1		OPTIONAL,
+	iE-Extensions				ProtocolExtensionContainer { { WidebandCQI-ExtIEs} } OPTIONAL,
+	...
+}
+
+WidebandCQI-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+WidebandCQICodeword1::= CHOICE {
+	four-bitCQI								INTEGER (0..15, ...),
+	three-bitSpatialDifferentialCQI			INTEGER (0..7, ...),
+	...
+}
+
+WTID ::= CHOICE {
+	wTID-Type1			WTID-Type1,
+	wTID-Type2			WTID-Long-Type2,
+	...
+}
+
+WTID-Type1 ::= SEQUENCE {
+	pLMN-Identity					PLMN-Identity,
+	shortWTID						BIT STRING (SIZE(24)),
+	...
+}
+
+WTID-Long-Type2 ::= BIT STRING (SIZE(48))
+
+WT-UE-XwAP-ID ::= OCTET STRING (SIZE (3))
+
+-- X
+
+X2BenefitValue ::= INTEGER (1..8, ...)
+
+-- Y
+-- Z
+
+END
+
+
+-- **************************************************************
+--
+-- Common definitions
+--
+-- **************************************************************
+
+X2AP-CommonDataTypes {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-CommonDataTypes (3) }
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+-- **************************************************************
+--
+-- Extension constants
+--
+-- **************************************************************
+
+maxPrivateIEs 									INTEGER ::= 65535
+maxProtocolExtensions 							INTEGER ::= 65535
+maxProtocolIEs									INTEGER ::= 65535
+
+-- **************************************************************
+--
+-- Common Data Types
+--
+-- **************************************************************
+
+Criticality		::= ENUMERATED { reject, ignore, notify }
+
+Presence		::= ENUMERATED { optional, conditional, mandatory }
+
+PrivateIE-ID	::= CHOICE {
+	local				INTEGER (0.. maxPrivateIEs),
+	global				OBJECT IDENTIFIER
+}
+
+ProcedureCode		::= INTEGER (0..255)
+
+
+ProtocolIE-ID		::= INTEGER (0..maxProtocolIEs)
+
+
+TriggeringMessage	::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome}
+
+END
+
+
+-- **************************************************************
+--
+-- Constant definitions
+--
+-- **************************************************************
+
+X2AP-Constants {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-Constants (4) }
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+IMPORTS
+	ProcedureCode,
+	ProtocolIE-ID
+FROM X2AP-CommonDataTypes;
+
+-- **************************************************************
+--
+-- Elementary Procedures
+--
+-- **************************************************************
+
+id-handoverPreparation											ProcedureCode ::= 0
+id-handoverCancel												ProcedureCode ::= 1
+id-loadIndication												ProcedureCode ::= 2
+id-errorIndication												ProcedureCode ::= 3
+id-snStatusTransfer												ProcedureCode ::= 4
+id-uEContextRelease												ProcedureCode ::= 5
+id-x2Setup														ProcedureCode ::= 6
+id-reset														ProcedureCode ::= 7
+id-eNBConfigurationUpdate										ProcedureCode ::= 8
+id-resourceStatusReportingInitiation							ProcedureCode ::= 9
+id-resourceStatusReporting										ProcedureCode ::= 10
+id-privateMessage												ProcedureCode ::= 11
+id-mobilitySettingsChange										ProcedureCode ::= 12
+id-rLFIndication												ProcedureCode ::= 13
+id-handoverReport												ProcedureCode ::= 14
+id-cellActivation												ProcedureCode ::= 15
+id-x2Release													ProcedureCode ::= 16
+id-x2APMessageTransfer											ProcedureCode ::= 17
+id-x2Removal													ProcedureCode ::= 18
+id-seNBAdditionPreparation										ProcedureCode ::= 19
+id-seNBReconfigurationCompletion								ProcedureCode ::= 20
+id-meNBinitiatedSeNBModificationPreparation						ProcedureCode ::= 21
+id-seNBinitiatedSeNBModification								ProcedureCode ::= 22
+id-meNBinitiatedSeNBRelease										ProcedureCode ::= 23
+id-seNBinitiatedSeNBRelease										ProcedureCode ::= 24
+id-seNBCounterCheck												ProcedureCode ::= 25
+id-retrieveUEContext											ProcedureCode ::= 26
+
+
+-- **************************************************************
+--
+-- Lists
+--
+-- **************************************************************
+
+maxEARFCN									INTEGER ::= 65535
+maxEARFCNPlusOne							INTEGER ::= 65536
+newmaxEARFCN								INTEGER ::= 262143
+maxInterfaces								INTEGER ::= 16
+maxCellineNB								INTEGER ::= 256
+maxnoofBands								INTEGER ::= 16
+maxnoofBearers								INTEGER ::= 256
+maxNrOfErrors								INTEGER ::= 256
+maxnoofPDCP-SN								INTEGER ::= 16
+maxnoofEPLMNs								INTEGER ::= 15
+maxnoofEPLMNsPlusOne						INTEGER ::= 16
+maxnoofForbLACs								INTEGER ::= 4096
+maxnoofForbTACs								INTEGER ::= 4096
+maxnoofBPLMNs								INTEGER ::= 6
+maxnoofNeighbours							INTEGER ::= 512
+maxnoofPRBs									INTEGER ::= 110
+maxPools									INTEGER ::= 16
+maxnoofCells								INTEGER ::= 16
+maxnoofMBSFN								INTEGER ::= 8
+maxFailedMeasObjects						INTEGER ::= 32
+maxnoofCellIDforMDT							INTEGER ::= 32
+maxnoofTAforMDT								INTEGER ::= 8
+maxnoofMBMSServiceAreaIdentities			INTEGER ::= 256
+maxnoofMDTPLMNs								INTEGER ::= 16
+maxnoofCoMPHypothesisSet					INTEGER ::= 256
+maxnoofCoMPCells							INTEGER ::= 32
+maxUEReport									INTEGER ::= 128
+maxCellReport								INTEGER ::= 9
+maxnoofPA									INTEGER ::= 3
+maxCSIProcess								INTEGER ::= 4
+maxCSIReport								INTEGER ::= 2
+maxSubband									INTEGER ::= 14
+
+-- **************************************************************
+--
+-- IEs
+--
+-- **************************************************************
+
+id-E-RABs-Admitted-Item														ProtocolIE-ID ::= 0
+id-E-RABs-Admitted-List														ProtocolIE-ID ::= 1
+id-E-RAB-Item																ProtocolIE-ID ::= 2
+id-E-RABs-NotAdmitted-List													ProtocolIE-ID ::= 3
+id-E-RABs-ToBeSetup-Item													ProtocolIE-ID ::= 4
+id-Cause																	ProtocolIE-ID ::= 5
+id-CellInformation															ProtocolIE-ID ::= 6
+id-CellInformation-Item														ProtocolIE-ID ::= 7
+id-New-eNB-UE-X2AP-ID														ProtocolIE-ID ::= 9
+id-Old-eNB-UE-X2AP-ID														ProtocolIE-ID ::= 10
+id-TargetCell-ID															ProtocolIE-ID ::= 11
+id-TargeteNBtoSource-eNBTransparentContainer								ProtocolIE-ID ::= 12
+id-TraceActivation															ProtocolIE-ID ::= 13
+id-UE-ContextInformation													ProtocolIE-ID ::= 14
+id-UE-HistoryInformation													ProtocolIE-ID ::= 15
+id-UE-X2AP-ID																ProtocolIE-ID ::= 16
+id-CriticalityDiagnostics													ProtocolIE-ID ::= 17
+id-E-RABs-SubjectToStatusTransfer-List										ProtocolIE-ID ::= 18
+id-E-RABs-SubjectToStatusTransfer-Item										ProtocolIE-ID ::= 19
+id-ServedCells																ProtocolIE-ID ::= 20
+id-GlobalENB-ID																ProtocolIE-ID ::= 21
+id-TimeToWait																ProtocolIE-ID ::= 22
+id-GUMMEI-ID																ProtocolIE-ID ::= 23
+id-GUGroupIDList															ProtocolIE-ID ::= 24
+id-ServedCellsToAdd															ProtocolIE-ID ::= 25
+id-ServedCellsToModify														ProtocolIE-ID ::= 26
+id-ServedCellsToDelete														ProtocolIE-ID ::= 27
+id-Registration-Request														ProtocolIE-ID ::= 28
+id-CellToReport																ProtocolIE-ID ::= 29
+id-ReportingPeriodicity														ProtocolIE-ID ::= 30
+id-CellToReport-Item														ProtocolIE-ID ::= 31
+id-CellMeasurementResult													ProtocolIE-ID ::= 32
+id-CellMeasurementResult-Item												ProtocolIE-ID ::= 33
+id-GUGroupIDToAddList														ProtocolIE-ID ::= 34
+id-GUGroupIDToDeleteList													ProtocolIE-ID ::= 35
+id-SRVCCOperationPossible													ProtocolIE-ID ::= 36
+id-Measurement-ID															ProtocolIE-ID ::= 37
+id-ReportCharacteristics													ProtocolIE-ID ::= 38
+id-ENB1-Measurement-ID														ProtocolIE-ID ::= 39
+id-ENB2-Measurement-ID														ProtocolIE-ID ::= 40
+id-Number-of-Antennaports													ProtocolIE-ID ::= 41
+id-CompositeAvailableCapacityGroup											ProtocolIE-ID ::= 42
+id-ENB1-Cell-ID																ProtocolIE-ID ::= 43
+id-ENB2-Cell-ID																ProtocolIE-ID ::= 44
+id-ENB2-Proposed-Mobility-Parameters										ProtocolIE-ID ::= 45
+id-ENB1-Mobility-Parameters													ProtocolIE-ID ::= 46
+id-ENB2-Mobility-Parameters-Modification-Range								ProtocolIE-ID ::= 47
+id-FailureCellPCI															ProtocolIE-ID ::= 48
+id-Re-establishmentCellECGI													ProtocolIE-ID ::= 49
+id-FailureCellCRNTI															ProtocolIE-ID ::= 50
+id-ShortMAC-I																ProtocolIE-ID ::= 51
+id-SourceCellECGI															ProtocolIE-ID ::= 52
+id-FailureCellECGI															ProtocolIE-ID ::= 53
+id-HandoverReportType														ProtocolIE-ID ::= 54
+id-PRACH-Configuration														ProtocolIE-ID ::= 55
+id-MBSFN-Subframe-Info														ProtocolIE-ID ::= 56
+id-ServedCellsToActivate													ProtocolIE-ID ::= 57
+id-ActivatedCellList														ProtocolIE-ID ::= 58
+id-DeactivationIndication													ProtocolIE-ID ::= 59
+id-UE-RLF-Report-Container													ProtocolIE-ID ::= 60
+id-ABSInformation															ProtocolIE-ID ::= 61
+id-InvokeIndication															ProtocolIE-ID ::= 62
+id-ABS-Status																ProtocolIE-ID ::= 63
+id-PartialSuccessIndicator													ProtocolIE-ID ::= 64
+id-MeasurementInitiationResult-List											ProtocolIE-ID ::= 65
+id-MeasurementInitiationResult-Item											ProtocolIE-ID ::= 66
+id-MeasurementFailureCause-Item												ProtocolIE-ID ::= 67
+id-CompleteFailureCauseInformation-List										ProtocolIE-ID ::= 68
+id-CompleteFailureCauseInformation-Item										ProtocolIE-ID ::= 69
+id-CSG-Id																	ProtocolIE-ID ::= 70
+id-CSGMembershipStatus														ProtocolIE-ID ::= 71
+id-MDTConfiguration															ProtocolIE-ID ::= 72
+id-ManagementBasedMDTallowed												ProtocolIE-ID ::= 74
+id-RRCConnSetupIndicator													ProtocolIE-ID ::= 75
+id-NeighbourTAC																ProtocolIE-ID ::= 76
+id-Time-UE-StayedInCell-EnhancedGranularity									ProtocolIE-ID ::= 77
+id-RRCConnReestabIndicator													ProtocolIE-ID ::= 78
+id-MBMS-Service-Area-List													ProtocolIE-ID ::= 79
+id-HO-cause																	ProtocolIE-ID ::= 80
+id-TargetCellInUTRAN														ProtocolIE-ID ::= 81
+id-MobilityInformation														ProtocolIE-ID ::= 82
+id-SourceCellCRNTI															ProtocolIE-ID ::= 83
+id-MultibandInfoList														ProtocolIE-ID ::= 84
+id-M3Configuration															ProtocolIE-ID ::= 85
+id-M4Configuration															ProtocolIE-ID ::= 86
+id-M5Configuration															ProtocolIE-ID ::= 87
+id-MDT-Location-Info														ProtocolIE-ID ::= 88
+id-ManagementBasedMDTPLMNList												ProtocolIE-ID ::= 89
+id-SignallingBasedMDTPLMNList												ProtocolIE-ID ::= 90
+id-ReceiveStatusOfULPDCPSDUsExtended										ProtocolIE-ID ::= 91
+id-ULCOUNTValueExtended														ProtocolIE-ID ::= 92
+id-DLCOUNTValueExtended														ProtocolIE-ID ::= 93
+id-eARFCNExtension															ProtocolIE-ID ::= 94
+id-UL-EARFCNExtension														ProtocolIE-ID ::= 95
+id-DL-EARFCNExtension														ProtocolIE-ID ::= 96
+id-AdditionalSpecialSubframe-Info											ProtocolIE-ID ::= 97
+id-Masked-IMEISV															ProtocolIE-ID ::= 98
+id-IntendedULDLConfiguration												ProtocolIE-ID ::= 99
+id-ExtendedULInterferenceOverloadInfo										ProtocolIE-ID ::= 100
+id-RNL-Header																ProtocolIE-ID ::= 101
+id-x2APMessage																ProtocolIE-ID ::= 102
+id-ProSeAuthorized															ProtocolIE-ID ::= 103
+id-ExpectedUEBehaviour														ProtocolIE-ID ::= 104
+id-UE-HistoryInformationFromTheUE											ProtocolIE-ID ::= 105
+id-DynamicDLTransmissionInformation											ProtocolIE-ID ::= 106
+id-UE-RLF-Report-Container-for-extended-bands								ProtocolIE-ID ::= 107
+id-CoMPInformation															ProtocolIE-ID ::= 108
+id-ReportingPeriodicityRSRPMR												ProtocolIE-ID ::= 109
+id-RSRPMRList																ProtocolIE-ID ::= 110
+id-MeNB-UE-X2AP-ID															ProtocolIE-ID ::= 111
+id-SeNB-UE-X2AP-ID															ProtocolIE-ID ::= 112
+id-UE-SecurityCapabilities													ProtocolIE-ID ::= 113
+id-SeNBSecurityKey															ProtocolIE-ID ::= 114
+id-SeNBUEAggregateMaximumBitRate											ProtocolIE-ID ::= 115
+id-ServingPLMN																ProtocolIE-ID ::= 116
+id-E-RABs-ToBeAdded-List													ProtocolIE-ID ::= 117
+id-E-RABs-ToBeAdded-Item													ProtocolIE-ID ::= 118
+id-MeNBtoSeNBContainer														ProtocolIE-ID ::= 119
+id-E-RABs-Admitted-ToBeAdded-List											ProtocolIE-ID ::= 120
+id-E-RABs-Admitted-ToBeAdded-Item											ProtocolIE-ID ::= 121
+id-SeNBtoMeNBContainer														ProtocolIE-ID ::= 122
+id-ResponseInformationSeNBReconfComp										ProtocolIE-ID ::= 123
+id-UE-ContextInformationSeNBModReq											ProtocolIE-ID ::= 124
+id-E-RABs-ToBeAdded-ModReqItem												ProtocolIE-ID ::= 125
+id-E-RABs-ToBeModified-ModReqItem											ProtocolIE-ID ::= 126
+id-E-RABs-ToBeReleased-ModReqItem											ProtocolIE-ID ::= 127
+id-E-RABs-Admitted-ToBeAdded-ModAckList										ProtocolIE-ID ::= 128
+id-E-RABs-Admitted-ToBeModified-ModAckList									ProtocolIE-ID ::= 129
+id-E-RABs-Admitted-ToBeReleased-ModAckList									ProtocolIE-ID ::= 130
+id-E-RABs-Admitted-ToBeAdded-ModAckItem										ProtocolIE-ID ::= 131
+id-E-RABs-Admitted-ToBeModified-ModAckItem									ProtocolIE-ID ::= 132
+id-E-RABs-Admitted-ToBeReleased-ModAckItem									ProtocolIE-ID ::= 133
+id-E-RABs-ToBeReleased-ModReqd												ProtocolIE-ID ::= 134
+id-E-RABs-ToBeReleased-ModReqdItem											ProtocolIE-ID ::= 135
+id-SCGChangeIndication														ProtocolIE-ID ::= 136
+id-E-RABs-ToBeReleased-List-RelReq											ProtocolIE-ID ::= 137
+id-E-RABs-ToBeReleased-RelReqItem											ProtocolIE-ID ::= 138
+id-E-RABs-ToBeReleased-List-RelConf											ProtocolIE-ID ::= 139
+id-E-RABs-ToBeReleased-RelConfItem											ProtocolIE-ID ::= 140
+id-E-RABs-SubjectToCounterCheck-List										ProtocolIE-ID ::= 141
+id-E-RABs-SubjectToCounterCheckItem											ProtocolIE-ID ::= 142
+id-CoverageModificationList													ProtocolIE-ID ::= 143
+id-ReportingPeriodicityCSIR													ProtocolIE-ID ::= 145
+id-CSIReportList															ProtocolIE-ID ::= 146
+id-UEID																		ProtocolIE-ID ::= 147
+id-enhancedRNTP																ProtocolIE-ID ::= 148
+id-ProSeUEtoNetworkRelaying													ProtocolIE-ID ::= 149
+id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18									ProtocolIE-ID ::= 150
+id-ULCOUNTValuePDCP-SNlength18												ProtocolIE-ID ::= 151
+id-DLCOUNTValuePDCP-SNlength18												ProtocolIE-ID ::= 152
+id-UE-ContextReferenceAtSeNB												ProtocolIE-ID ::= 153
+id-UE-ContextKeptIndicator													ProtocolIE-ID ::= 154
+id-New-eNB-UE-X2AP-ID-Extension												ProtocolIE-ID ::= 155
+id-Old-eNB-UE-X2AP-ID-Extension												ProtocolIE-ID ::= 156
+id-MeNB-UE-X2AP-ID-Extension												ProtocolIE-ID ::= 157
+id-SeNB-UE-X2AP-ID-Extension												ProtocolIE-ID ::= 158
+id-LHN-ID																	ProtocolIE-ID ::= 159
+id-FreqBandIndicatorPriority												ProtocolIE-ID ::= 160
+id-M6Configuration															ProtocolIE-ID ::= 161
+id-M7Configuration															ProtocolIE-ID ::= 162
+id-Tunnel-Information-for-BBF												ProtocolIE-ID ::= 163
+id-SIPTO-BearerDeactivationIndication										ProtocolIE-ID ::= 164
+id-GW-TransportLayerAddress													ProtocolIE-ID ::= 165
+id-Correlation-ID															ProtocolIE-ID ::= 166
+id-SIPTO-Correlation-ID														ProtocolIE-ID ::= 167
+id-SIPTO-L-GW-TransportLayerAddress											ProtocolIE-ID ::= 168
+id-X2RemovalThreshold														ProtocolIE-ID ::= 169
+id-CellReportingIndicator													ProtocolIE-ID ::= 170
+id-BearerType																ProtocolIE-ID ::= 171
+id-resumeID																	ProtocolIE-ID ::= 172
+id-UE-ContextInformationRetrieve											ProtocolIE-ID ::= 173
+id-E-RABs-ToBeSetupRetrieve-Item											ProtocolIE-ID ::= 174
+id-NewEUTRANCellIdentifier													ProtocolIE-ID ::= 175
+id-V2XServicesAuthorized													ProtocolIE-ID ::= 176
+id-OffsetOfNbiotChannelNumberToDL-EARFCN									ProtocolIE-ID ::= 177
+id-OffsetOfNbiotChannelNumberToUL-EARFCN									ProtocolIE-ID ::= 178
+id-AdditionalSpecialSubframeExtension-Info									ProtocolIE-ID ::= 179
+id-BandwidthReducedSI														ProtocolIE-ID ::= 180
+id-MakeBeforeBreakIndicator													ProtocolIE-ID ::= 181
+id-UE-ContextReferenceAtWT													ProtocolIE-ID ::= 182
+id-WT-UE-ContextKeptIndicator												ProtocolIE-ID ::= 183
+id-UESidelinkAggregateMaximumBitRate										ProtocolIE-ID ::= 184
+id-uL-GTPtunnelEndpoint														ProtocolIE-ID ::= 185
+id-DL-scheduling-PDCCH-CCE-usage											ProtocolIE-ID ::= 193
+id-UL-scheduling-PDCCH-CCE-usage											ProtocolIE-ID ::= 194
+
+END
+
+
+-- **************************************************************
+--
+-- Container definitions
+--
+-- **************************************************************
+
+X2AP-Containers {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-Containers (5) }
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+	maxPrivateIEs,
+	maxProtocolExtensions,
+	maxProtocolIEs,
+	Criticality,
+	Presence,
+	PrivateIE-ID,
+	ProtocolIE-ID	
+FROM X2AP-CommonDataTypes;
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+X2AP-PROTOCOL-IES ::= CLASS {
+	&id				ProtocolIE-ID 			UNIQUE,
+	&criticality	Criticality,
+	&Value,
+	&presence		Presence
+}
+WITH SYNTAX {
+	ID				&id
+	CRITICALITY		&criticality
+	TYPE			&Value
+	PRESENCE		&presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+X2AP-PROTOCOL-IES-PAIR ::= CLASS {
+	&id						ProtocolIE-ID 		UNIQUE,
+	&firstCriticality		Criticality,
+	&FirstValue,
+	&secondCriticality		Criticality,
+	&SecondValue,
+	&presence				Presence
+}
+WITH SYNTAX {
+	ID						&id
+	FIRST CRITICALITY 		&firstCriticality
+	FIRST TYPE				&FirstValue
+	SECOND CRITICALITY 		&secondCriticality
+	SECOND TYPE				&SecondValue
+	PRESENCE				&presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol Extensions
+--
+-- **************************************************************
+
+X2AP-PROTOCOL-EXTENSION ::= CLASS {
+	&id					ProtocolIE-ID 		UNIQUE,
+	&criticality		Criticality,
+	&Extension,
+	&presence			Presence
+}
+WITH SYNTAX {
+	ID					&id
+	CRITICALITY			&criticality
+	EXTENSION			&Extension
+	PRESENCE			&presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Private IEs
+--
+-- **************************************************************
+
+X2AP-PRIVATE-IES ::= CLASS {
+	&id					PrivateIE-ID,
+	&criticality		Criticality,
+	&Value,
+	&presence			Presence
+}
+WITH SYNTAX {
+	ID					&id
+	CRITICALITY			&criticality
+	TYPE				&Value
+	PRESENCE			&presence
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IEs
+--
+-- **************************************************************
+
+ProtocolIE-Container {X2AP-PROTOCOL-IES : IEsSetParam} ::= 
+	SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+	ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Single-Container {X2AP-PROTOCOL-IES : IEsSetParam} ::= 
+	ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Field {X2AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
+	id				X2AP-PROTOCOL-IES.&id					({IEsSetParam}),
+	criticality		X2AP-PROTOCOL-IES.&criticality			({IEsSetParam}{@id}),
+	value			X2AP-PROTOCOL-IES.&Value				({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IE Pairs
+--
+-- **************************************************************
+
+ProtocolIE-ContainerPair {X2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= 
+	SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+	ProtocolIE-FieldPair {{IEsSetParam}}
+
+ProtocolIE-FieldPair {X2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
+	id					X2AP-PROTOCOL-IES-PAIR.&id					({IEsSetParam}),
+	firstCriticality	X2AP-PROTOCOL-IES-PAIR.&firstCriticality	({IEsSetParam}{@id}),
+	firstValue			X2AP-PROTOCOL-IES-PAIR.&FirstValue			({IEsSetParam}{@id}),
+	secondCriticality	X2AP-PROTOCOL-IES-PAIR.&secondCriticality	({IEsSetParam}{@id}),
+	secondValue			X2AP-PROTOCOL-IES-PAIR.&SecondValue			({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container Lists for Protocol IE Containers
+--
+-- **************************************************************
+
+ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, X2AP-PROTOCOL-IES : IEsSetParam} ::=
+	SEQUENCE (SIZE (lowerBound..upperBound)) OF
+	ProtocolIE-Container {{IEsSetParam}}
+
+ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, X2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
+	SEQUENCE (SIZE (lowerBound..upperBound)) OF
+	ProtocolIE-ContainerPair {{IEsSetParam}}
+
+-- **************************************************************
+--
+-- Container for Protocol Extensions
+--
+-- **************************************************************
+
+ProtocolExtensionContainer {X2AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= 
+	SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
+	ProtocolExtensionField {{ExtensionSetParam}}
+
+ProtocolExtensionField {X2AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
+	id					X2AP-PROTOCOL-EXTENSION.&id				({ExtensionSetParam}),
+	criticality			X2AP-PROTOCOL-EXTENSION.&criticality	({ExtensionSetParam}{@id}),
+	extensionValue		X2AP-PROTOCOL-EXTENSION.&Extension		({ExtensionSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Private IEs
+--
+-- **************************************************************
+
+PrivateIE-Container {X2AP-PRIVATE-IES : IEsSetParam} ::= 
+	SEQUENCE (SIZE (1..maxPrivateIEs)) OF
+	PrivateIE-Field {{IEsSetParam}}
+
+PrivateIE-Field {X2AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
+	id				X2AP-PRIVATE-IES.&id			({IEsSetParam}),
+	criticality		X2AP-PRIVATE-IES.&criticality	({IEsSetParam}{@id}),
+	value			X2AP-PRIVATE-IES.&Value			({IEsSetParam}{@id})
+}
+
+END
+
diff --git a/openair2/X2AP/x2ap_common.c b/openair2/X2AP/x2ap_common.c
index d92f2c69bb31021f59bae16f4d73412a2bfa771a..762ba810c737b4d11d96e8d39a1075cb70a6a3e9 100644
--- a/openair2/X2AP/x2ap_common.c
+++ b/openair2/X2AP/x2ap_common.c
@@ -29,7 +29,7 @@
 #include <stdint.h>
 
 #include "x2ap_common.h"
-#include "X2AP-PDU.h"
+#include "X2AP_X2AP-PDU.h"
 
 int asn_debug = 0;
 int asn1_xer_print = 0;
@@ -55,29 +55,27 @@ inline void ASN_DEBUG(const char *fmt, ...)
 ssize_t x2ap_generate_initiating_message(
   uint8_t               **buffer,
   uint32_t               *length,
-  X2ap_ProcedureCode_t    procedureCode,
-  X2ap_Criticality_t      criticality,
+  X2AP_ProcedureCode_t    procedureCode,
+  X2AP_Criticality_t      criticality,
   asn_TYPE_descriptor_t  *td,
   void                   *sptr)
 {
-  X2AP_PDU_t pdu;
+  X2AP_X2AP_PDU_t pdu;
   ssize_t    encoded;
-
-  memset(&pdu, 0, sizeof(X2AP_PDU_t));
-
-  pdu.present = X2AP_PDU_PR_initiatingMessage;
+  memset(&pdu, 0, sizeof(X2AP_X2AP_PDU_t));
+  pdu.present = X2AP_X2AP_PDU_PR_initiatingMessage;
   pdu.choice.initiatingMessage.procedureCode = procedureCode;
   pdu.choice.initiatingMessage.criticality   = criticality;
   ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
 
   if (asn1_xer_print) {
-    xer_fprint(stdout, &asn_DEF_X2AP_PDU, (void *)&pdu);
+    xer_fprint(stdout, &asn_DEF_X2AP_X2AP_PDU, (void *)&pdu);
   }
 
   /* We can safely free list of IE from sptr */
   ASN_STRUCT_FREE_CONTENTS_ONLY(*td, sptr);
 
-  if ((encoded = aper_encode_to_new_buffer(&asn_DEF_X2AP_PDU, 0, &pdu,
+  if ((encoded = aper_encode_to_new_buffer(&asn_DEF_X2AP_X2AP_PDU, 0, &pdu,
                  (void **)buffer)) < 0) {
     return -1;
   }
@@ -89,107 +87,67 @@ ssize_t x2ap_generate_initiating_message(
 ssize_t x2ap_generate_successfull_outcome(
   uint8_t               **buffer,
   uint32_t               *length,
-  X2ap_ProcedureCode_t         procedureCode,
-  X2ap_Criticality_t           criticality,
+  X2AP_ProcedureCode_t         procedureCode,
+  X2AP_Criticality_t           criticality,
   asn_TYPE_descriptor_t  *td,
   void                   *sptr)
 {
-  X2AP_PDU_t pdu;
+  X2AP_X2AP_PDU_t pdu;
   ssize_t    encoded;
-
-  memset(&pdu, 0, sizeof(X2AP_PDU_t));
-
-  pdu.present = X2AP_PDU_PR_successfulOutcome;
+  memset(&pdu, 0, sizeof(X2AP_X2AP_PDU_t));
+  pdu.present = X2AP_X2AP_PDU_PR_successfulOutcome;
   pdu.choice.successfulOutcome.procedureCode = procedureCode;
   pdu.choice.successfulOutcome.criticality   = criticality;
   ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
 
   if (asn1_xer_print) {
-    xer_fprint(stdout, &asn_DEF_X2AP_PDU, (void *)&pdu);
+    xer_fprint(stdout, &asn_DEF_X2AP_X2AP_PDU, (void *)&pdu);
   }
 
   /* We can safely free list of IE from sptr */
   ASN_STRUCT_FREE_CONTENTS_ONLY(*td, sptr);
 
-  if ((encoded = aper_encode_to_new_buffer(&asn_DEF_X2AP_PDU, 0, &pdu,
+  if ((encoded = aper_encode_to_new_buffer(&asn_DEF_X2AP_X2AP_PDU, 0, &pdu,
                  (void **)buffer)) < 0) {
     return -1;
   }
 
   *length = encoded;
-
   return encoded;
 }
 
 ssize_t x2ap_generate_unsuccessfull_outcome(
   uint8_t               **buffer,
   uint32_t               *length,
-  X2ap_ProcedureCode_t         procedureCode,
-  X2ap_Criticality_t           criticality,
+  X2AP_ProcedureCode_t         procedureCode,
+  X2AP_Criticality_t           criticality,
   asn_TYPE_descriptor_t  *td,
   void                   *sptr)
 {
-  X2AP_PDU_t pdu;
+  X2AP_X2AP_PDU_t pdu;
   ssize_t    encoded;
-
-  memset(&pdu, 0, sizeof(X2AP_PDU_t));
-
-  pdu.present = X2AP_PDU_PR_unsuccessfulOutcome;
+  memset(&pdu, 0, sizeof(X2AP_X2AP_PDU_t));
+  pdu.present = X2AP_X2AP_PDU_PR_unsuccessfulOutcome;
   pdu.choice.successfulOutcome.procedureCode = procedureCode;
   pdu.choice.successfulOutcome.criticality   = criticality;
   ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
 
   if (asn1_xer_print) {
-    xer_fprint(stdout, &asn_DEF_X2AP_PDU, (void *)&pdu);
+    xer_fprint(stdout, &asn_DEF_X2AP_X2AP_PDU, (void *)&pdu);
   }
 
   /* We can safely free list of IE from sptr */
   ASN_STRUCT_FREE_CONTENTS_ONLY(*td, sptr);
 
-  if ((encoded = aper_encode_to_new_buffer(&asn_DEF_X2AP_PDU, 0, &pdu,
+  if ((encoded = aper_encode_to_new_buffer(&asn_DEF_X2AP_X2AP_PDU, 0, &pdu,
                  (void **)buffer)) < 0) {
     return -1;
   }
 
   *length = encoded;
-
   return encoded;
 }
 
-X2ap_IE_t *x2ap_new_ie(
-  X2ap_ProtocolIE_ID_t   id,
-  X2ap_Criticality_t     criticality,
-  asn_TYPE_descriptor_t *type,
-  void                  *sptr)
-{
-  X2ap_IE_t *buff;
-
-  if ((buff = malloc(sizeof(X2ap_IE_t))) == NULL) {
-    // Possible error on malloc
-    return NULL;
-  }
-
-  memset((void *)buff, 0, sizeof(X2ap_IE_t));
-
-  buff->id = id;
-  buff->criticality = criticality;
-
-  if (ANY_fromType_aper(&buff->value, type, sptr) < 0) {
-    fprintf(stderr, "Encoding of %s failed\n", type->name);
-    free(buff);
-    return NULL;
-  }
-
-  if (asn1_xer_print)
-    if (xer_fprint(stdout, &asn_DEF_X2ap_IE, buff) < 0) {
-      free(buff);
-      return NULL;
-    }
-
-  return buff;
-}
-
-void x2ap_handle_criticality(X2ap_Criticality_t criticality)
+void x2ap_handle_criticality(X2AP_Criticality_t criticality)
 {
-
 }
diff --git a/openair2/X2AP/x2ap_common.h b/openair2/X2AP/x2ap_common.h
index b7c93614768daa5b8f7235f802299fb198807da6..6843e2913fb7f0bcbcf20a500b7b202abd772892 100644
--- a/openair2/X2AP/x2ap_common.h
+++ b/openair2/X2AP/x2ap_common.h
@@ -23,247 +23,17 @@
 # include "config.h"
 #endif
 
-#include "X2ap-ABSInformationFDD.h"
-#include "X2ap-ABSInformation.h"
-#include "X2ap-ABSInformationTDD.h"
-#include "X2ap-ABS-Status.h"
-#include "X2ap-ActivatedCellList.h"
-#include "X2ap-AllocationAndRetentionPriority.h"
-#include "X2ap-AreaScopeOfMDT.h"
-#include "X2ap-AS-SecurityInformation.h"
-#include "X2ap-BandInfo.h"
-#include "X2ap-BitRate.h"
-#include "X2ap-BroadcastPLMNs-Item.h"
-
-#include "X2ap-CapacityValue.h"
-#include "X2ap-Cause.h"
-#include "X2ap-CauseMisc.h"
-#include "X2ap-CauseProtocol.h"
-#include "X2ap-CauseRadioNetwork.h"
-#include "X2ap-CauseTransport.h"
-#include "X2ap-CellActivationFailure.h"
-#include "X2ap-CellActivationRequest.h"
-#include "X2ap-CellActivationResponse.h"
-#include "X2ap-CellBasedMDT.h"
-#include "X2ap-CellCapacityClassValue.h"
-#include "X2ap-CellIdListforMDT.h"
-#include "X2ap-CellInformation-Item.h"
-#include "X2ap-CellInformation-List.h"
-#include "X2ap-Cell-Size.h"
-#include "X2ap-CellToReport-Item.h"
-#include "X2ap-CellToReport-List.h"
-#include "X2ap-CellType.h"
-#include "X2ap-CellMeasurementResult-Item.h" 
-#include "X2ap-CellMeasurementResult-List.h"
-#include "X2ap-CompleteFailureCauseInformation-Item.h"
-#include "X2ap-CompleteFailureCauseInformation-List.h"
-#include "X2ap-CompositeAvailableCapacityGroup.h"
-#include "X2ap-CompositeAvailableCapacity.h"
-#include "X2ap-COUNTvalue.h"
-#include "X2ap-CriticalityDiagnostics.h"
-#include "X2ap-CriticalityDiagnostics-IE-List.h"
-#include "X2ap-Criticality.h"
-#include "X2ap-CRNTI.h"
-#include "X2ap-CSG-Id.h"
-#include "X2ap-CSGMembershipStatus.h"
-#include "X2ap-CyclicPrefixDL.h"
-#include "X2ap-CyclicPrefixUL.h"
-#include "X2ap-DeactivationIndication.h"
-#include "X2ap-DL-ABS-status.h"
-#include "X2ap-DL-Forwarding.h"
-#include "X2ap-DL-GBR-PRB-usage.h"
-#include "X2ap-DL-non-GBR-PRB-usage.h"
-#include "X2ap-DL-Total-PRB-usage.h"
-#include "X2ap-EARFCN.h"
-#include "X2ap-ECGI.h"
-#include "X2ap-ENB-ID.h"
-#include "X2ap-ENBConfigurationUpdateFailure.h"
-#include "X2ap-ENBConfigurationUpdateAcknowledge.h"
-#include "X2ap-ENBConfigurationUpdate.h"
-#include "X2ap-EncryptionAlgorithms.h"
-#include "X2ap-EPLMNs.h"
-#include "X2ap-E-RAB-ID.h"
-#include "X2ap-E-RAB-Item.h"
-#include "X2ap-E-RABs-Admitted-List.h"
-#include "X2ap-E-RAB-Level-QoS-Parameters.h"
-#include "X2ap-E-RAB-List.h"
-#include "X2ap-E-RABs-SubjectToStatusTransfer-Item.h"
-#include "X2ap-E-RABs-Admitted-Item.h"
-#include "X2ap-E-RABs-SubjectToStatusTransfer-List.h"
-#include "X2ap-ErrorIndication.h"
-#include "X2ap-EUTRA-Mode-Info.h"
-#include "X2ap-EUTRANCellIdentifier.h"
-#include "X2ap-EUTRANTraceID.h"
-#include "X2ap-EventType.h"
-
-#include "X2ap-FDD-Info.h"
-#include "X2ap-ForbiddenInterRATs.h"
-#include "X2ap-ForbiddenLACs.h"
-#include "X2ap-ForbiddenLAs.h"
-#include "X2ap-ForbiddenLAs-Item.h"
-#include "X2ap-ForbiddenTACs.h"
-#include "X2ap-ForbiddenTAs.h"
-#include "X2ap-ForbiddenTAs-Item.h"
-#include "X2ap-Fourframes.h"
-#include "X2ap-FreqBandIndicator.h"
-#include "X2ap-GBR-QosInformation.h"
-#include "X2ap-GlobalENB-ID.h"
-#include "X2ap-GTP-TEI.h"
-#include "X2ap-GTPtunnelEndpoint.h"
-#include "X2ap-GU-Group-ID.h"
-#include "X2ap-GUGroupIDList.h"
-#include "X2ap-GUMMEI.h"
-#include "X2ap-HandoverCancel.h"
-#include "X2ap-HandoverReportType.h"
-#include "X2ap-HandoverRequest.h"
-#include "X2ap-HandoverReport.h"
-#include "X2ap-HandoverRestrictionList.h"
-#include "X2ap-HandoverPreparationFailure.h"
-#include "X2ap-HandoverRequestAcknowledge.h"
-
-#include "X2ap-HFN.h"
-#include "X2ap-HWLoadIndicator.h"
-#include "X2ap-IE-Extensions.h"
-#include "X2ap-IE.h"
-#include "X2ap-IntegrityProtectionAlgorithms.h"
-#include "X2ap-InterfacesToTrace.h"
-#include "X2ap-InvokeIndication.h"
-#include "X2ap-Key-eNodeB-Star.h"
-#include "X2ap-LAC.h"
-#include "X2ap-LastVisitedCell-Item.h"
-#include "X2ap-LastVisitedEUTRANCellInformation.h"
-#include "X2ap-LastVisitedGERANCellInformation.h"
-#include "X2ap-LastVisitedUTRANCellInformation.h"
-#include "X2ap-LoadIndicator.h"
-#include "X2ap-LoadInformation.h"
-#include "X2ap-LocationReportingInformation.h"
-#include "X2ap-ManagementBasedMDTallowed.h"
-#include "X2ap-MBMS-Service-Area-Identity.h"
-#include "X2ap-MBMS-Service-Area-Identity-List.h"
-#include "X2ap-MBSFN-Subframe-Info.h"
-#include "X2ap-MBSFN-Subframe-Infolist.h"
-#include "X2ap-MDT-Activation.h"
-#include "X2ap-MDT-Configuration.h"
-#include "X2ap-Measurement-ID.h"
-#include "X2ap-MeasurementsToActivate.h"
-#include "X2ap-MeasurementThresholdA2.h"
-#include "X2ap-MeasurementInitiationResult-Item.h"
-#include "X2ap-MeasurementInitiationResult-List.h"
-
-#include "X2ap-MeasurementFailureCause-Item.h"
-#include "X2ap-MME-Code.h"
-#include "X2ap-MME-Group-ID.h"
-#include "X2ap-MobilityChangeAcknowledge.h"
-#include "X2ap-MobilityChangeFailure.h"
-#include "X2ap-MobilityChangeRequest.h"
-#include "X2ap-MobilityParametersInformation.h"
-#include "X2ap-MobilityParametersModificationRange.h"
-#include "X2ap-MultibandInfoList.h"
-#include "X2ap-Neighbour-Information.h"
-#include "X2ap-NextHopChainingCount.h"
-#include "X2ap-Number-of-Antennaports.h"
-#include "X2ap-Oneframe.h"
-#include "X2ap-Old-ECGIs.h"
-#include "X2ap-PartialSuccessIndicator.h"
-#include "X2ap-PCI.h"
-#include "X2ap-PDCP-SN.h"
-#include "X2AP-PDU.h"
-#include "X2ap-PeriodicReportingMDT.h"
-#include "X2ap-PLMN-Identity.h"
-#include "X2ap-PRACH-Configuration.h"
-#include "X2ap-Pre-emptionCapability.h"
-#include "X2ap-Pre-emptionVulnerability.h"
-#include "X2ap-Presence.h"
-#include "X2ap-PriorityLevel.h"
-#include "X2ap-PrivateIE-ID.h"
-#include "X2ap-ProcedureCode.h"
-#include "X2ap-ProtocolIE-ID.h"
-#include "X2ap-QCI.h"
-#include "X2ap-RadioframeAllocationOffset.h"
-#include "X2ap-RadioframeAllocationPeriod.h"
-#include "X2ap-RadioResourceStatus.h"
-#include "X2ap-ReceiveStatusofULPDCPSDUs.h"
-#include "X2ap-Registration-Request.h"
-#include "X2ap-RelativeNarrowbandTxPower.h"
-#include "X2ap-ReportAmountMDT.h"
-#include "X2ap-ReportArea.h"
-#include "X2ap-ReportCharacteristics.h"
-#include "X2ap-ReportingTriggerMDT.h"
-#include "X2ap-ReportIntervalMDT.h"
-#include "X2ap-ReportingPeriodicity.h"
-#include "X2ap-ResourceStatusFailure.h"
-#include "X2ap-ResourceStatusResponse.h"
-#include "X2ap-ResourceStatusUpdate.h"
-
-#include "X2ap-RNTP-Threshold.h"
-#include "X2ap-RRCConnReestabIndicator.h"
-#include "X2ap-RRCConnSetupIndicator.h"
-#include "X2ap-RRC-Context.h"
-#include "X2ap-RLFIndication.h"
-#include "X2ap-ResourceStatusRequest.h"
-#include "X2ap-S1TNLLoadIndicator.h"
-//nclude "X2ap-ServedCellInformation.h"
-#include "X2ap-ServedCells.h"
-#include "X2ap-ServedCellsToModify.h"
-#include "X2ap-ServedCellsToActivate.h"
-#include "X2ap-ShortMAC-I.h"
-#include "X2ap-SpecialSubframe-Info.h"
-#include "X2ap-SpecialSubframePatterns.h"
-#include "X2ap-SRVCCOperationPossible.h"
-#include "X2ap-SubframeAllocation.h"
-#include "X2ap-SubframeAssignment.h"
-#include "X2ap-SubscriberProfileIDforRFP.h"
-#include "X2ap-SNStatusTransfer.h"
-
-#include "X2ap-TABasedMDT.h"
-#include "X2ap-TAC.h"
-#include "X2ap-TAListforMDT.h"
-#include "X2ap-TargetCellInUTRAN.h"
-#include "X2ap-TargeteNBtoSource-eNBTransparentContainer.h"
-#include "X2ap-TDD-Info.h"
-#include "X2ap-ThresholdEventA2.h"
-#include "X2ap-Threshold-RSRP.h"
-#include "X2ap-Threshold-RSRQ.h"
-#include "X2ap-TimeToWait.h"
-#include "X2ap-Time-UE-StayedInCell-EnhancedGranularity.h"
-#include "X2ap-Time-UE-StayedInCell.h"
-#include "X2ap-E-RABs-ToBeSetup-Item.h"
-#include "X2ap-TraceActivation.h"
-#include "X2ap-TraceCollectionEntityIPAddress.h"
-#include "X2ap-TraceDepth.h"
-#include "X2ap-Transmission-Bandwidth.h"
-#include "X2ap-TransportLayerAddress.h"
-#include "X2ap-TriggeringMessage.h"
-#include "X2ap-TypeOfError.h"
-#include "X2ap-UEAggregateMaximumBitRate.h"
-#include "X2ap-UE-ContextInformation.h"
-#include "X2ap-UE-HistoryInformation.h"
-#include "X2ap-UE-RLF-Report-Container.h"
-#include "X2ap-UE-S1AP-ID.h"
-#include "X2ap-UE-X2AP-ID.h"
-#include "X2ap-UEContextRelease.h"
-#include "X2ap-UESecurityCapabilities.h"
-#include "X2ap-UL-GBR-PRB-usage.h"
-#include "X2ap-UL-HighInterferenceIndication.h"
-#include "X2ap-UL-HighInterferenceIndicationInfo.h"
-#include "X2ap-UL-HighInterferenceIndicationInfo-Item.h"
-#include "X2ap-UL-InterferenceOverloadIndication.h"
-#include "X2ap-UL-InterferenceOverloadIndication-Item.h"
-#include "X2ap-UL-non-GBR-PRB-usage.h"
-#include "X2ap-UL-Total-PRB-usage.h"
-#include "X2ap-UsableABSInformationFDD.h"
-#include "X2ap-UsableABSInformation.h"
-#include "X2ap-UsableABSInformationTDD.h"
-
-#include "X2ap-ResetResponse.h"
-#include "X2ap-ResetRequest.h"
-#include "X2SetupFailure.h"
-#include "X2SetupRequest.h"
-#include "X2SetupResponse.h"
-
-#include "X2ap-Old-ECGIs.h"
-#include "X2ap-Criticality.h"
-#include "X2ap-ProcedureCode.h"
+#include "X2AP_ProtocolIE-Field.h"
+#include "X2AP_X2AP-PDU.h"
+#include "X2AP_InitiatingMessage.h"
+#include "X2AP_SuccessfulOutcome.h"
+#include "X2AP_UnsuccessfulOutcome.h"
+#include "X2AP_ProtocolIE-Field.h"
+#include "X2AP_ProtocolIE-FieldPair.h"
+#include "X2AP_ProtocolIE-ContainerPair.h"
+#include "X2AP_ProtocolExtensionField.h"
+#include "X2AP_ProtocolExtensionContainer.h"
+#include "X2AP_asn_constant.h"
 
 #ifndef X2AP_COMMON_H_
 #define X2AP_COMMON_H_
@@ -323,8 +93,8 @@ typedef int (*x2ap_message_decoded_callback)(
 ssize_t x2ap_generate_successfull_outcome(
   uint8_t               **buffer,
   uint32_t               *length,
-  X2ap_ProcedureCode_t         procedureCode,
-  X2ap_Criticality_t           criticality,
+  X2AP_ProcedureCode_t         procedureCode,
+  X2AP_Criticality_t           criticality,
   asn_TYPE_descriptor_t  *td,
   void                   *sptr);
 
@@ -340,8 +110,8 @@ ssize_t x2ap_generate_successfull_outcome(
 ssize_t x2ap_generate_initiating_message(
   uint8_t               **buffer,
   uint32_t               *length,
-  X2ap_ProcedureCode_t    procedureCode,
-  X2ap_Criticality_t      criticality,
+  X2AP_ProcedureCode_t    procedureCode,
+  X2AP_Criticality_t      criticality,
   asn_TYPE_descriptor_t  *td,
   void                   *sptr);
 
@@ -357,28 +127,15 @@ ssize_t x2ap_generate_initiating_message(
 ssize_t x2ap_generate_unsuccessfull_outcome(
   uint8_t               **buffer,
   uint32_t               *length,
-  X2ap_ProcedureCode_t         procedureCode,
-  X2ap_Criticality_t           criticality,
+  X2AP_ProcedureCode_t         procedureCode,
+  X2AP_Criticality_t           criticality,
   asn_TYPE_descriptor_t  *td,
   void                   *sptr);
 
-/** \brief Generate a new IE
- \param id Protocol ie id of the IE
- \param criticality Criticality of the IE
- \param type ASN1 type descriptor of the IE value
- \param sptr Structure to be encoded in the value field
- @returns a pointer to the newly created IE structure or NULL in case of failure
- **/
-X2ap_IE_t *x2ap_new_ie(
-  X2ap_ProtocolIE_ID_t   id,
-  X2ap_Criticality_t     criticality,
-  asn_TYPE_descriptor_t *type,
-  void                  *sptr);
-
 /** \brief Handle criticality
  \param criticality Criticality of the IE
  @returns void
  **/
-void x2ap_handle_criticality(X2ap_Criticality_t criticality);
+void x2ap_handle_criticality(X2AP_Criticality_t criticality);
 
 #endif /* X2AP_COMMON_H_ */
diff --git a/openair3/S1AP/MESSAGES/ASN1/R14.4/s1ap-14.4.0.asn1 b/openair3/S1AP/MESSAGES/ASN1/R14.4/s1ap-14.4.0.asn1
new file mode 100755
index 0000000000000000000000000000000000000000..83f486a1d4edc0f62639dda5c786e978f1e9f7fc
--- /dev/null
+++ b/openair3/S1AP/MESSAGES/ASN1/R14.4/s1ap-14.4.0.asn1
@@ -0,0 +1,6634 @@
+-- **************************************************************
+--
+-- Elementary Procedure definitions
+--
+-- **************************************************************
+
+S1AP-PDU-Descriptions  { 
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-PDU-Descriptions (0)}
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+	Criticality,
+	ProcedureCode
+FROM S1AP-CommonDataTypes
+
+	CellTrafficTrace,
+	DeactivateTrace,
+	DownlinkUEAssociatedLPPaTransport,
+	DownlinkNASTransport,
+	DownlinkNonUEAssociatedLPPaTransport,
+	DownlinkS1cdma2000tunnelling,
+	ENBDirectInformationTransfer,
+	ENBStatusTransfer,
+	ENBConfigurationUpdate,
+	ENBConfigurationUpdateAcknowledge,
+	ENBConfigurationUpdateFailure,
+	ErrorIndication,
+	HandoverCancel,
+	HandoverCancelAcknowledge,
+	HandoverCommand,
+	HandoverFailure,
+	HandoverNotify,
+	HandoverPreparationFailure,
+	HandoverRequest,
+	HandoverRequestAcknowledge,
+	HandoverRequired,
+	InitialContextSetupFailure,
+	InitialContextSetupRequest,
+	InitialContextSetupResponse,
+	InitialUEMessage,
+	KillRequest,
+	KillResponse,
+	LocationReportingControl,
+	LocationReportingFailureIndication,
+	LocationReport,
+	MMEConfigurationUpdate,
+	MMEConfigurationUpdateAcknowledge,
+	MMEConfigurationUpdateFailure,
+	MMEDirectInformationTransfer,
+	MMEStatusTransfer,
+	NASNonDeliveryIndication,
+	OverloadStart,
+	OverloadStop,
+	Paging,
+	PathSwitchRequest,
+	PathSwitchRequestAcknowledge,
+	PathSwitchRequestFailure,	
+	PrivateMessage,
+	Reset,
+	ResetAcknowledge,
+	S1SetupFailure,
+	S1SetupRequest,
+	S1SetupResponse,
+	E-RABModifyRequest,
+	E-RABModifyResponse,
+	E-RABModificationIndication,
+	E-RABModificationConfirm,
+	E-RABReleaseCommand,
+	E-RABReleaseResponse,
+	E-RABReleaseIndication,
+	E-RABSetupRequest,
+	E-RABSetupResponse,
+	TraceFailureIndication,
+	TraceStart,
+	UECapabilityInfoIndication,
+	UEContextModificationFailure,
+	UEContextModificationRequest,
+	UEContextModificationResponse,
+	UEContextReleaseCommand,
+	UEContextReleaseComplete,
+	UEContextReleaseRequest,
+	UERadioCapabilityMatchRequest,
+	UERadioCapabilityMatchResponse,
+	UplinkUEAssociatedLPPaTransport,
+	UplinkNASTransport,
+	UplinkNonUEAssociatedLPPaTransport,
+	UplinkS1cdma2000tunnelling,
+	WriteReplaceWarningRequest,
+	WriteReplaceWarningResponse,
+	ENBConfigurationTransfer,
+	MMEConfigurationTransfer,
+	PWSRestartIndication,
+	UEContextModificationIndication,
+	UEContextModificationConfirm,
+	RerouteNASRequest,
+	PWSFailureIndication,
+	UEContextSuspendRequest,
+	UEContextSuspendResponse,
+	UEContextResumeRequest,
+	UEContextResumeResponse,
+	UEContextResumeFailure,
+	ConnectionEstablishmentIndication,
+	NASDeliveryIndication,
+	RetrieveUEInformation,
+	UEInformationTransfer,
+	ENBCPRelocationIndication,
+	MMECPRelocationIndication
+
+
+FROM S1AP-PDU-Contents
+	
+	id-CellTrafficTrace,
+	id-DeactivateTrace,
+	id-downlinkUEAssociatedLPPaTransport,
+	id-downlinkNASTransport,
+	id-downlinkNonUEAssociatedLPPaTransport,
+	id-DownlinkS1cdma2000tunnelling,
+	id-eNBStatusTransfer,
+	id-ErrorIndication,
+	id-HandoverCancel,
+	id-HandoverNotification,
+	id-HandoverPreparation,
+	id-HandoverResourceAllocation,
+	id-InitialContextSetup,
+	id-initialUEMessage,
+	id-ENBConfigurationUpdate,
+	id-Kill,
+	id-LocationReportingControl,
+	id-LocationReportingFailureIndication,
+	id-LocationReport,
+	id-eNBDirectInformationTransfer,
+	id-MMEConfigurationUpdate,
+	id-MMEDirectInformationTransfer,
+	id-MMEStatusTransfer,
+	id-NASNonDeliveryIndication,
+	id-OverloadStart,
+	id-OverloadStop,
+	id-Paging,
+	id-PathSwitchRequest,
+	id-PrivateMessage,
+	id-Reset,
+	id-S1Setup,
+	id-E-RABModify,
+	id-E-RABModificationIndication,
+	id-E-RABRelease,
+	id-E-RABReleaseIndication,
+	id-E-RABSetup,
+	id-TraceFailureIndication,
+	id-TraceStart,
+	id-UECapabilityInfoIndication,
+	id-UEContextModification,
+	id-UEContextRelease,
+	id-UEContextReleaseRequest,
+	id-UERadioCapabilityMatch,
+	id-uplinkUEAssociatedLPPaTransport,
+	id-uplinkNASTransport,
+	id-uplinkNonUEAssociatedLPPaTransport,
+	id-UplinkS1cdma2000tunnelling,
+	id-WriteReplaceWarning,
+	id-eNBConfigurationTransfer,
+	id-MMEConfigurationTransfer,
+	id-PWSRestartIndication,
+	id-UEContextModificationIndication,
+	id-RerouteNASRequest,
+	id-PWSFailureIndication,
+	id-UEContextSuspend,
+	id-UEContextResume,
+	id-ConnectionEstablishmentIndication,
+	id-NASDeliveryIndication,
+	id-RetrieveUEInformation,
+	id-UEInformationTransfer,
+	id-eNBCPRelocationIndication,
+	id-MMECPRelocationIndication
+
+
+FROM S1AP-Constants;
+
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure Class
+--
+-- **************************************************************
+
+S1AP-ELEMENTARY-PROCEDURE ::= CLASS {
+	&InitiatingMessage				,
+	&SuccessfulOutcome							OPTIONAL,
+	&UnsuccessfulOutcome						OPTIONAL,
+	&procedureCode				ProcedureCode 	UNIQUE,
+	&criticality				Criticality 	DEFAULT ignore
+}
+WITH SYNTAX {
+	INITIATING MESSAGE			&InitiatingMessage
+	[SUCCESSFUL OUTCOME			&SuccessfulOutcome]
+	[UNSUCCESSFUL OUTCOME		&UnsuccessfulOutcome]
+	PROCEDURE CODE				&procedureCode
+	[CRITICALITY				&criticality]
+}
+
+-- **************************************************************
+--
+-- Interface PDU Definition
+--
+-- **************************************************************
+
+S1AP-PDU ::= CHOICE {
+	initiatingMessage	InitiatingMessage,
+	successfulOutcome	SuccessfulOutcome,
+	unsuccessfulOutcome	UnsuccessfulOutcome,
+	...
+}
+
+InitiatingMessage ::= SEQUENCE {
+	procedureCode	S1AP-ELEMENTARY-PROCEDURE.&procedureCode		({S1AP-ELEMENTARY-PROCEDURES}),
+	criticality		S1AP-ELEMENTARY-PROCEDURE.&criticality			({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+	value			S1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage	({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+	procedureCode	S1AP-ELEMENTARY-PROCEDURE.&procedureCode		({S1AP-ELEMENTARY-PROCEDURES}),
+	criticality		S1AP-ELEMENTARY-PROCEDURE.&criticality			({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+	value			S1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome	({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+	procedureCode	S1AP-ELEMENTARY-PROCEDURE.&procedureCode		({S1AP-ELEMENTARY-PROCEDURES}),
+	criticality		S1AP-ELEMENTARY-PROCEDURE.&criticality			({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+	value			S1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome	({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure List
+--
+-- **************************************************************
+
+S1AP-ELEMENTARY-PROCEDURES S1AP-ELEMENTARY-PROCEDURE ::= {
+	S1AP-ELEMENTARY-PROCEDURES-CLASS-1			|
+	S1AP-ELEMENTARY-PROCEDURES-CLASS-2,	
+	...
+}
+
+
+S1AP-ELEMENTARY-PROCEDURES-CLASS-1 S1AP-ELEMENTARY-PROCEDURE ::= {
+	handoverPreparation				|
+	handoverResourceAllocation		|
+	pathSwitchRequest 				|
+	e-RABSetup						|
+	e-RABModify						|
+	e-RABRelease					|
+	initialContextSetup				|
+	handoverCancel					|
+	kill							|
+	reset							|
+	s1Setup							|
+	uEContextModification			|
+	uEContextRelease				|
+	eNBConfigurationUpdate			|
+	mMEConfigurationUpdate			|
+	writeReplaceWarning				,
+	...,
+	uERadioCapabilityMatch						|
+	e-RABModificationIndication					|
+	uEContextModificationIndication				|
+	uEContextSuspend							|
+	uEContextResume
+}
+
+S1AP-ELEMENTARY-PROCEDURES-CLASS-2 S1AP-ELEMENTARY-PROCEDURE ::= {	
+	handoverNotification			|
+	e-RABReleaseIndication			|
+	paging 							|
+	downlinkNASTransport			|
+	initialUEMessage				|
+	uplinkNASTransport				|
+	errorIndication					|
+	nASNonDeliveryIndication		|
+	uEContextReleaseRequest			|
+	downlinkS1cdma2000tunnelling	|
+	uplinkS1cdma2000tunnelling		|
+	uECapabilityInfoIndication		|
+	eNBStatusTransfer				|
+	mMEStatusTransfer				|
+	deactivateTrace					|
+	traceStart						|
+	traceFailureIndication			|
+	cellTrafficTrace				|
+	locationReportingControl		|
+	locationReportingFailureIndication	|
+	locationReport					|
+	overloadStart					|
+	overloadStop					|
+	eNBDirectInformationTransfer	|
+	mMEDirectInformationTransfer	|
+	eNBConfigurationTransfer		|
+	mMEConfigurationTransfer		|
+	privateMessage					,
+	...,
+	downlinkUEAssociatedLPPaTransport	|
+	uplinkUEAssociatedLPPaTransport	|
+	downlinkNonUEAssociatedLPPaTransport	|
+	uplinkNonUEAssociatedLPPaTransport	|
+	pWSRestartIndication			|
+	rerouteNASRequest				|
+	pWSFailureIndication						|
+	connectionEstablishmentIndication	|
+	nASDeliveryIndication			|
+	retrieveUEInformation			|
+	uEInformationTransfer			|
+	eNBCPRelocationIndication					|
+	mMECPRelocationIndication
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedures
+--
+-- **************************************************************
+
+handoverPreparation S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		HandoverRequired
+	SUCCESSFUL OUTCOME		HandoverCommand
+	UNSUCCESSFUL OUTCOME	HandoverPreparationFailure
+	PROCEDURE CODE			id-HandoverPreparation
+	CRITICALITY				reject
+}
+
+handoverResourceAllocation S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		HandoverRequest
+	SUCCESSFUL OUTCOME		HandoverRequestAcknowledge
+	UNSUCCESSFUL OUTCOME	HandoverFailure
+	PROCEDURE CODE			id-HandoverResourceAllocation
+	CRITICALITY				reject
+}
+
+handoverNotification S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		HandoverNotify
+	PROCEDURE CODE			id-HandoverNotification
+	CRITICALITY				ignore
+}
+
+pathSwitchRequest S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		PathSwitchRequest
+	SUCCESSFUL OUTCOME		PathSwitchRequestAcknowledge
+	UNSUCCESSFUL OUTCOME	PathSwitchRequestFailure
+	PROCEDURE CODE			id-PathSwitchRequest
+	CRITICALITY				reject
+}
+
+e-RABSetup S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		E-RABSetupRequest
+	SUCCESSFUL OUTCOME		E-RABSetupResponse
+	PROCEDURE CODE			id-E-RABSetup
+	CRITICALITY				reject
+}
+
+e-RABModify S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		E-RABModifyRequest
+	SUCCESSFUL OUTCOME		E-RABModifyResponse
+	PROCEDURE CODE			id-E-RABModify
+	CRITICALITY				reject
+}
+
+e-RABRelease S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		E-RABReleaseCommand
+	SUCCESSFUL OUTCOME		E-RABReleaseResponse
+	PROCEDURE CODE			id-E-RABRelease
+	CRITICALITY				reject
+}
+
+e-RABReleaseIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		E-RABReleaseIndication
+	PROCEDURE CODE			id-E-RABReleaseIndication
+	CRITICALITY				ignore
+}
+
+initialContextSetup S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		InitialContextSetupRequest
+	SUCCESSFUL OUTCOME		InitialContextSetupResponse
+	UNSUCCESSFUL OUTCOME 	InitialContextSetupFailure
+	PROCEDURE CODE			id-InitialContextSetup
+	CRITICALITY				reject
+}
+
+uEContextReleaseRequest S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UEContextReleaseRequest
+	PROCEDURE CODE			id-UEContextReleaseRequest
+	CRITICALITY				ignore
+}
+
+paging S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		Paging
+	PROCEDURE CODE			id-Paging
+	CRITICALITY				ignore
+}
+
+downlinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		DownlinkNASTransport
+	PROCEDURE CODE			id-downlinkNASTransport
+	CRITICALITY				ignore
+}
+
+initialUEMessage S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		InitialUEMessage
+	PROCEDURE CODE			id-initialUEMessage
+	CRITICALITY				ignore
+}
+
+uplinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UplinkNASTransport
+	PROCEDURE CODE			id-uplinkNASTransport
+	CRITICALITY				ignore
+}
+nASNonDeliveryIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		NASNonDeliveryIndication
+	PROCEDURE CODE			id-NASNonDeliveryIndication
+	CRITICALITY				ignore
+}
+
+handoverCancel S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		HandoverCancel
+	SUCCESSFUL OUTCOME		HandoverCancelAcknowledge
+	PROCEDURE CODE			id-HandoverCancel
+	CRITICALITY				reject
+}
+
+reset S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		Reset
+	SUCCESSFUL OUTCOME		ResetAcknowledge
+	PROCEDURE CODE			id-Reset
+	CRITICALITY				reject
+}
+
+errorIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		ErrorIndication
+	PROCEDURE CODE			id-ErrorIndication
+	CRITICALITY				ignore
+}
+
+s1Setup S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		S1SetupRequest
+	SUCCESSFUL OUTCOME		S1SetupResponse
+	UNSUCCESSFUL OUTCOME 	S1SetupFailure
+	PROCEDURE CODE			id-S1Setup
+	CRITICALITY				reject
+}
+
+eNBConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		ENBConfigurationUpdate
+	SUCCESSFUL OUTCOME		ENBConfigurationUpdateAcknowledge
+	UNSUCCESSFUL OUTCOME 	ENBConfigurationUpdateFailure
+	PROCEDURE CODE			id-ENBConfigurationUpdate
+	CRITICALITY				reject
+}
+
+mMEConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		MMEConfigurationUpdate
+	SUCCESSFUL OUTCOME		MMEConfigurationUpdateAcknowledge
+	UNSUCCESSFUL OUTCOME 	MMEConfigurationUpdateFailure
+	PROCEDURE CODE			id-MMEConfigurationUpdate
+	CRITICALITY				reject
+}
+
+downlinkS1cdma2000tunnelling S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		DownlinkS1cdma2000tunnelling
+	PROCEDURE CODE			id-DownlinkS1cdma2000tunnelling
+	CRITICALITY				ignore
+}
+
+uplinkS1cdma2000tunnelling S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UplinkS1cdma2000tunnelling
+	PROCEDURE CODE			id-UplinkS1cdma2000tunnelling
+	CRITICALITY				ignore
+}
+
+uEContextModification S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UEContextModificationRequest
+	SUCCESSFUL OUTCOME		UEContextModificationResponse
+	UNSUCCESSFUL OUTCOME 	UEContextModificationFailure
+	PROCEDURE CODE			id-UEContextModification
+	CRITICALITY				reject
+}
+
+uECapabilityInfoIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UECapabilityInfoIndication
+	PROCEDURE CODE			id-UECapabilityInfoIndication
+	CRITICALITY				ignore
+}
+
+uEContextRelease S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UEContextReleaseCommand
+	SUCCESSFUL OUTCOME		UEContextReleaseComplete
+	PROCEDURE CODE			id-UEContextRelease
+	CRITICALITY				reject
+}
+
+eNBStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		ENBStatusTransfer
+	PROCEDURE CODE			id-eNBStatusTransfer
+	CRITICALITY				ignore
+}
+
+mMEStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		MMEStatusTransfer
+	PROCEDURE CODE			id-MMEStatusTransfer
+	CRITICALITY				ignore
+}
+
+deactivateTrace S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		DeactivateTrace
+	PROCEDURE CODE			id-DeactivateTrace
+	CRITICALITY				ignore
+}
+
+traceStart S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		TraceStart
+	PROCEDURE CODE			id-TraceStart
+	CRITICALITY				ignore
+}
+
+traceFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		TraceFailureIndication
+	PROCEDURE CODE			id-TraceFailureIndication
+	CRITICALITY				ignore
+}
+cellTrafficTrace S1AP-ELEMENTARY-PROCEDURE ::={
+     INITIATING MESSAGE		CellTrafficTrace
+     PROCEDURE CODE			id-CellTrafficTrace
+     CRITICALITY				ignore
+}
+
+locationReportingControl S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		LocationReportingControl
+	PROCEDURE CODE			id-LocationReportingControl
+	CRITICALITY				ignore
+}
+
+locationReportingFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		LocationReportingFailureIndication
+	PROCEDURE CODE			id-LocationReportingFailureIndication
+	CRITICALITY				ignore
+}
+
+locationReport S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		LocationReport
+	PROCEDURE CODE			id-LocationReport
+	CRITICALITY				ignore
+}
+
+overloadStart S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		OverloadStart
+	PROCEDURE CODE			id-OverloadStart
+	CRITICALITY				ignore
+}
+
+overloadStop S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		OverloadStop
+	PROCEDURE CODE			id-OverloadStop
+	CRITICALITY				reject
+}
+
+writeReplaceWarning S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		WriteReplaceWarningRequest
+	SUCCESSFUL OUTCOME		WriteReplaceWarningResponse
+	PROCEDURE CODE			id-WriteReplaceWarning
+	CRITICALITY				reject
+}
+
+eNBDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		ENBDirectInformationTransfer
+	PROCEDURE CODE			id-eNBDirectInformationTransfer
+	CRITICALITY				ignore
+}
+
+mMEDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		MMEDirectInformationTransfer
+	PROCEDURE CODE			id-MMEDirectInformationTransfer
+	CRITICALITY				ignore
+}
+
+eNBConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		ENBConfigurationTransfer
+	PROCEDURE CODE			id-eNBConfigurationTransfer
+	CRITICALITY				ignore
+}
+
+mMEConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		MMEConfigurationTransfer
+	PROCEDURE CODE			id-MMEConfigurationTransfer
+	CRITICALITY				ignore
+}
+
+
+privateMessage S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		PrivateMessage
+	PROCEDURE CODE			id-PrivateMessage
+	CRITICALITY				ignore
+}
+
+pWSRestartIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		PWSRestartIndication
+	PROCEDURE CODE			id-PWSRestartIndication
+	CRITICALITY				ignore
+}
+
+kill S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		KillRequest
+	SUCCESSFUL OUTCOME		KillResponse
+	PROCEDURE CODE			id-Kill
+	CRITICALITY				reject
+}
+
+downlinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		DownlinkUEAssociatedLPPaTransport
+	PROCEDURE CODE			id-downlinkUEAssociatedLPPaTransport
+	CRITICALITY				ignore
+}
+
+uplinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UplinkUEAssociatedLPPaTransport
+	PROCEDURE CODE			id-uplinkUEAssociatedLPPaTransport
+	CRITICALITY				ignore
+}
+downlinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		DownlinkNonUEAssociatedLPPaTransport
+	PROCEDURE CODE			id-downlinkNonUEAssociatedLPPaTransport
+	CRITICALITY				ignore
+}
+
+uplinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UplinkNonUEAssociatedLPPaTransport
+	PROCEDURE CODE			id-uplinkNonUEAssociatedLPPaTransport
+	CRITICALITY				ignore
+}
+
+uERadioCapabilityMatch S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UERadioCapabilityMatchRequest
+	SUCCESSFUL OUTCOME		UERadioCapabilityMatchResponse
+	PROCEDURE CODE			id-UERadioCapabilityMatch
+	CRITICALITY				reject
+}
+
+e-RABModificationIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		E-RABModificationIndication
+	SUCCESSFUL OUTCOME		E-RABModificationConfirm
+	PROCEDURE CODE			id-E-RABModificationIndication
+	CRITICALITY				reject
+}
+
+uEContextModificationIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UEContextModificationIndication
+	SUCCESSFUL OUTCOME		UEContextModificationConfirm
+	PROCEDURE CODE			id-UEContextModificationIndication
+	CRITICALITY				reject
+}
+
+rerouteNASRequest S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		RerouteNASRequest
+	PROCEDURE CODE			id-RerouteNASRequest
+	CRITICALITY				reject
+}
+
+pWSFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		PWSFailureIndication
+	PROCEDURE CODE			id-PWSFailureIndication
+	CRITICALITY				ignore
+}
+
+uEContextSuspend S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UEContextSuspendRequest
+	SUCCESSFUL OUTCOME		UEContextSuspendResponse
+	PROCEDURE CODE			id-UEContextSuspend
+	CRITICALITY				reject
+}
+
+uEContextResume S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UEContextResumeRequest
+	SUCCESSFUL OUTCOME		UEContextResumeResponse
+	UNSUCCESSFUL OUTCOME 	UEContextResumeFailure
+	PROCEDURE CODE			id-UEContextResume
+	CRITICALITY				reject
+}
+
+connectionEstablishmentIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		ConnectionEstablishmentIndication
+	PROCEDURE CODE			id-ConnectionEstablishmentIndication
+	CRITICALITY				reject
+}
+
+nASDeliveryIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		NASDeliveryIndication
+	PROCEDURE CODE			id-NASDeliveryIndication
+	CRITICALITY				ignore
+}
+
+retrieveUEInformation S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		RetrieveUEInformation
+	PROCEDURE CODE			id-RetrieveUEInformation
+	CRITICALITY				reject
+}
+
+uEInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		UEInformationTransfer
+	PROCEDURE CODE			id-UEInformationTransfer
+	CRITICALITY				reject
+}
+
+eNBCPRelocationIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		ENBCPRelocationIndication
+	PROCEDURE CODE			id-eNBCPRelocationIndication
+	CRITICALITY				reject
+}
+
+mMECPRelocationIndication S1AP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		MMECPRelocationIndication
+	PROCEDURE CODE			id-MMECPRelocationIndication
+	CRITICALITY				reject
+}
+
+
+END
+
+
+
+-- **************************************************************
+--
+-- PDU definitions for S1AP.
+--
+-- **************************************************************
+
+S1AP-PDU-Contents { 
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-PDU-Contents (1) }
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+	
+	UEAggregateMaximumBitrate,
+	BearerType,
+	Cause,
+	CellAccessMode,
+	Cdma2000HORequiredIndication,
+	Cdma2000HOStatus,
+	Cdma2000OneXSRVCCInfo,
+	Cdma2000OneXRAND,
+	Cdma2000PDU,
+	Cdma2000RATType,
+	Cdma2000SectorID,
+	EUTRANRoundTripDelayEstimationInfo,
+	CNDomain,
+	ConcurrentWarningMessageIndicator,
+	CriticalityDiagnostics,
+	CSFallbackIndicator,
+	CSG-Id,
+	CSG-IdList, 
+	CSGMembershipStatus,
+	Data-Forwarding-Not-Possible,
+	Direct-Forwarding-Path-Availability,
+	Global-ENB-ID,
+	EUTRAN-CGI,
+	ENBname,
+	ENB-StatusTransfer-TransparentContainer,
+	ENB-UE-S1AP-ID,
+	ExtendedRepetitionPeriod,
+	GTP-TEID,
+	GUMMEI,
+	GUMMEIType,
+	HandoverRestrictionList,
+	HandoverType,
+	Masked-IMEISV,
+	LAI,
+	LPPa-PDU,
+	ManagementBasedMDTAllowed,
+	MDTPLMNList,
+	MMEname,
+	MMERelaySupportIndicator,
+	MME-UE-S1AP-ID,
+	MSClassmark2,
+	MSClassmark3,
+	NAS-PDU,
+	NASSecurityParametersfromE-UTRAN,
+	NASSecurityParameterstoE-UTRAN,
+	OverloadResponse,
+	PagingDRX,
+	PagingPriority,
+	PLMNidentity,
+	ProSeAuthorized,
+	RIMTransfer,
+	RelativeMMECapacity,
+	RequestType,
+	E-RAB-ID,
+	E-RABLevelQoSParameters,
+	E-RABList,
+	RelayNode-Indicator,
+	Routing-ID,
+	SecurityKey,
+	SecurityContext,
+	ServedGUMMEIs,
+	SONConfigurationTransfer,
+	Source-ToTarget-TransparentContainer,
+	SourceBSS-ToTargetBSS-TransparentContainer,
+	SourceeNB-ToTargeteNB-TransparentContainer,
+	SourceRNC-ToTargetRNC-TransparentContainer,
+	SubscriberProfileIDforRFP,
+	SRVCCOperationNotPossible,
+	SRVCCOperationPossible,
+	SRVCCHOIndication,
+	SupportedTAs,
+	TAI,
+	Target-ToSource-TransparentContainer,
+	TargetBSS-ToSourceBSS-TransparentContainer,	
+	TargeteNB-ToSourceeNB-TransparentContainer,
+	TargetID,
+	TargetRNC-ToSourceRNC-TransparentContainer,
+	TimeToWait,
+	TraceActivation,
+	TrafficLoadReductionIndication,
+	E-UTRAN-Trace-ID,
+	TransportLayerAddress,
+	UEIdentityIndexValue,
+	UEPagingID,
+	UERadioCapability,
+	UERadioCapabilityForPaging,
+	UE-RetentionInformation,
+	UE-S1AP-IDs,
+	UE-associatedLogicalS1-ConnectionItem,
+	UESecurityCapabilities,
+	S-TMSI,
+	MessageIdentifier,
+	SerialNumber,
+	WarningAreaList,
+	RepetitionPeriod,
+	NumberofBroadcastRequest,
+	WarningType,
+	WarningSecurityInfo,
+	DataCodingScheme,
+	WarningMessageContents,
+	BroadcastCompletedAreaList,
+	RRC-Establishment-Cause,
+	BroadcastCancelledAreaList,
+	PS-ServiceNotAvailable,
+	GUMMEIList,
+	Correlation-ID,
+	GWContextReleaseIndication,
+	PrivacyIndicator,
+	VoiceSupportMatchIndicator,
+	TunnelInformation,
+	KillAllWarningMessages,
+	TransportInformation,
+	LHN-ID,
+	UserLocationInformation,
+	AdditionalCSFallbackIndicator,
+	ECGIListForRestart,
+	TAIListForRestart,
+	EmergencyAreaIDListForRestart,
+	ExpectedUEBehaviour,
+	Paging-eDRXInformation,
+	Extended-UEIdentityIndexValue,
+	MME-Group-ID,
+	Additional-GUTI,
+	PWSfailedECGIList,
+	CellIdentifierAndCELevelForCECapableUEs,
+	AssistanceDataForPaging,
+	InformationOnRecommendedCellsAndENBsForPaging,
+	UE-Usage-Type,
+	UEUserPlaneCIoTSupportIndicator,
+	NB-IoT-DefaultPagingDRX,
+	NB-IoT-Paging-eDRXInformation,
+	CE-mode-B-SupportIndicator,
+	NB-IoT-UEIdentityIndexValue,
+	V2XServicesAuthorized,
+	DCN-ID,
+	ServedDCNs,
+	UESidelinkAggregateMaximumBitrate,
+	DLNASPDUDeliveryAckRequest,
+	Coverage-Level,
+	EnhancedCoverageRestricted,
+	DL-CP-SecurityInformation,
+	UL-CP-SecurityInformation
+
+
+
+FROM S1AP-IEs
+
+	PrivateIE-Container{},
+	ProtocolExtensionContainer{},
+	ProtocolIE-Container{},
+	ProtocolIE-ContainerList{},
+	ProtocolIE-ContainerPair{},
+	ProtocolIE-ContainerPairList{},
+	ProtocolIE-SingleContainer{},
+	S1AP-PRIVATE-IES,
+	S1AP-PROTOCOL-EXTENSION,
+	S1AP-PROTOCOL-IES,
+	S1AP-PROTOCOL-IES-PAIR
+FROM S1AP-Containers
+
+
+	id-AssistanceDataForPaging,
+	id-uEaggregateMaximumBitrate,
+	id-BearerType,
+	id-Cause,
+	id-CellAccessMode,
+	id-CellIdentifierAndCELevelForCECapableUEs,
+	id-cdma2000HORequiredIndication,
+	id-cdma2000HOStatus,
+	id-cdma2000OneXSRVCCInfo,
+	id-cdma2000OneXRAND,
+	id-cdma2000PDU,
+	id-cdma2000RATType,
+	id-cdma2000SectorID,
+	id-EUTRANRoundTripDelayEstimationInfo,
+	id-CNDomain,
+	id-ConcurrentWarningMessageIndicator,
+	id-CriticalityDiagnostics,
+	id-CSFallbackIndicator,
+	id-CSG-Id,
+	id-CSG-IdList,
+	id-CSGMembershipStatus,
+	id-Data-Forwarding-Not-Possible,
+	id-DefaultPagingDRX,
+	id-Direct-Forwarding-Path-Availability,
+	id-Global-ENB-ID,
+	id-EUTRAN-CGI,
+	id-eNBname,
+	id-eNB-StatusTransfer-TransparentContainer,
+	id-eNB-UE-S1AP-ID, 
+	id-GERANtoLTEHOInformationRes,
+	id-GUMMEI-ID,
+	id-GUMMEIType,
+	id-HandoverRestrictionList,
+	id-HandoverType,
+	id-Masked-IMEISV,
+	id-InformationOnRecommendedCellsAndENBsForPaging,
+	id-InitialContextSetup,
+	id-Inter-SystemInformationTransferTypeEDT,
+	id-Inter-SystemInformationTransferTypeMDT,
+	id-LPPa-PDU,
+	id-NAS-DownlinkCount,
+	id-ManagementBasedMDTAllowed,
+	id-ManagementBasedMDTPLMNList,
+	id-MMEname,
+	id-MME-UE-S1AP-ID,
+	id-MSClassmark2,
+	id-MSClassmark3,
+	id-NAS-PDU,
+	id-NASSecurityParametersfromE-UTRAN,
+	id-NASSecurityParameterstoE-UTRAN,
+	id-OverloadResponse,
+	id-pagingDRX,
+	id-PagingPriority,
+	id-RelativeMMECapacity,
+	id-RequestType,
+	id-Routing-ID,
+	id-E-RABAdmittedItem,
+	id-E-RABAdmittedList,
+	id-E-RABDataForwardingItem,
+	id-E-RABFailedToModifyList,
+	id-E-RABFailedToReleaseList,
+	id-E-RABFailedtoSetupItemHOReqAck,
+	id-E-RABFailedToSetupListBearerSURes,
+	id-E-RABFailedToSetupListCtxtSURes,
+	id-E-RABFailedToSetupListHOReqAck,
+	id-E-RABFailedToBeReleasedList,
+	id-E-RABFailedToResumeListResumeReq,
+	id-E-RABFailedToResumeItemResumeReq,
+	id-E-RABFailedToResumeListResumeRes,
+	id-E-RABFailedToResumeItemResumeRes,
+	id-E-RABModify,
+	id-E-RABModifyItemBearerModRes,
+	id-E-RABModifyListBearerModRes,
+	id-E-RABRelease,
+	id-E-RABReleaseItemBearerRelComp,
+	id-E-RABReleaseItemHOCmd,
+	id-E-RABReleaseListBearerRelComp,
+	id-E-RABReleaseIndication,
+	id-E-RABSetup,
+	id-E-RABSetupItemBearerSURes,
+	id-E-RABSetupItemCtxtSURes,
+	id-E-RABSetupListBearerSURes,
+	id-E-RABSetupListCtxtSURes,
+	id-E-RABSubjecttoDataForwardingList,
+	id-E-RABToBeModifiedItemBearerModReq,
+	id-E-RABToBeModifiedListBearerModReq,
+	id-E-RABToBeModifiedListBearerModInd,
+	id-E-RABToBeModifiedItemBearerModInd,
+	id-E-RABNotToBeModifiedListBearerModInd,
+	id-E-RABNotToBeModifiedItemBearerModInd,
+	id-E-RABModifyListBearerModConf,
+	id-E-RABModifyItemBearerModConf,
+	id-E-RABFailedToModifyListBearerModConf, 
+	id-E-RABToBeReleasedListBearerModConf,
+	id-E-RABToBeReleasedList,
+	id-E-RABReleasedList,
+	id-E-RABToBeSetupItemBearerSUReq,
+	id-E-RABToBeSetupItemCtxtSUReq,
+	id-E-RABToBeSetupItemHOReq,
+	id-E-RABToBeSetupListBearerSUReq,
+	id-E-RABToBeSetupListCtxtSUReq,
+	id-E-RABToBeSetupListHOReq,
+	id-E-RABToBeSwitchedDLItem,
+	id-E-RABToBeSwitchedDLList,
+	id-E-RABToBeSwitchedULList,
+	id-E-RABToBeSwitchedULItem,
+	id-E-RABtoReleaseListHOCmd,
+	id-ProSeAuthorized,
+	id-SecurityKey,
+	id-SecurityContext,
+	id-ServedGUMMEIs,
+	id-SONConfigurationTransferECT,
+	id-SONConfigurationTransferMCT,
+	id-Source-ToTarget-TransparentContainer,
+	id-Source-ToTarget-TransparentContainer-Secondary,
+	id-SourceMME-UE-S1AP-ID,
+	id-SRVCCOperationNotPossible,
+	id-SRVCCOperationPossible,
+	id-SRVCCHOIndication,
+	id-SubscriberProfileIDforRFP,
+	id-SupportedTAs,
+	id-S-TMSI,
+	id-TAI,
+	id-TAIItem,
+	id-TAIList,
+	id-Target-ToSource-TransparentContainer,
+	id-Target-ToSource-TransparentContainer-Secondary,
+	id-TargetID,
+	id-TimeToWait,
+	id-TraceActivation,
+	id-TrafficLoadReductionIndication,
+	id-E-UTRAN-Trace-ID,
+	id-UEIdentityIndexValue,
+	id-UEPagingID,
+	id-UERadioCapability,
+	id-UERadioCapabilityForPaging,
+	id-UTRANtoLTEHOInformationRes,
+	id-UE-associatedLogicalS1-ConnectionListResAck,
+	id-UE-associatedLogicalS1-ConnectionItem,
+	id-UE-RetentionInformation,
+	id-UESecurityCapabilities,
+	id-UE-S1AP-IDs,
+	id-V2XServicesAuthorized,
+	id-ResetType,
+	id-MessageIdentifier,
+	id-SerialNumber,
+	id-WarningAreaList,
+	id-RepetitionPeriod,
+	id-NumberofBroadcastRequest,
+	id-WarningType,
+	id-WarningSecurityInfo,
+	id-DataCodingScheme,
+	id-WarningMessageContents,
+	id-BroadcastCompletedAreaList,
+	id-BroadcastCancelledAreaList,
+	id-RRC-Establishment-Cause,
+	id-TraceCollectionEntityIPAddress,
+	maxnoofTAIs,
+	maxnoofErrors,
+	maxnoofE-RABs,
+	maxnoofIndividualS1ConnectionsToReset,
+	maxnoofEmergencyAreaID,
+	maxnoofCellID,
+	maxnoofTAIforWarning,
+	maxnoofCellinTAI,
+	maxnoofCellinEAI,
+	id-ExtendedRepetitionPeriod,
+	id-PS-ServiceNotAvailable,
+	id-RegisteredLAI,
+	id-GUMMEIList,
+	id-SourceMME-GUMMEI,
+	id-MME-UE-S1AP-ID-2,
+	id-GW-TransportLayerAddress,
+	id-RelayNode-Indicator,
+	id-Correlation-ID,
+	id-MMERelaySupportIndicator,
+	id-GWContextReleaseIndication,
+	id-PrivacyIndicator,
+	id-VoiceSupportMatchIndicator,
+	id-Tunnel-Information-for-BBF,
+	id-SIPTO-Correlation-ID,
+	id-SIPTO-L-GW-TransportLayerAddress,
+	id-KillAllWarningMessages,
+	id-TransportInformation,
+	id-LHN-ID,
+	id-UserLocationInformation,
+	id-AdditionalCSFallbackIndicator,
+	id-ECGIListForRestart,
+	id-TAIListForRestart,
+	id-EmergencyAreaIDListForRestart,
+	id-ExpectedUEBehaviour,
+	id-Paging-eDRXInformation,
+	id-extended-UEIdentityIndexValue,
+	id-CSGMembershipInfo,
+	id-MME-Group-ID,
+	id-Additional-GUTI,
+	id-S1-Message,
+	id-PWSfailedECGIList,
+	id-PWSFailureIndication,
+	id-UE-Usage-Type,
+	id-UEUserPlaneCIoTSupportIndicator,
+	id-NB-IoT-DefaultPagingDRX,
+	id-NB-IoT-Paging-eDRXInformation,
+	id-CE-mode-B-SupportIndicator,
+	id-NB-IoT-UEIdentityIndexValue,
+	id-RRC-Resume-Cause,
+	id-DCN-ID,
+	id-ServedDCNs,
+	id-UESidelinkAggregateMaximumBitrate,
+	id-DLNASPDUDeliveryAckRequest,
+	id-Coverage-Level,
+	id-EnhancedCoverageRestricted,
+	id-UE-Level-QoS-Parameters,
+	id-DL-CP-SecurityInformation,
+	id-UL-CP-SecurityInformation
+
+
+FROM S1AP-Constants;
+
+-- **************************************************************
+--
+-- Common Container Lists
+--
+-- **************************************************************
+
+E-RAB-IE-ContainerList			{ S1AP-PROTOCOL-IES      : IEsSetParam }	::= ProtocolIE-ContainerList     { 1, maxnoofE-RABs,   {IEsSetParam} }
+E-RAB-IE-ContainerPairList		{ S1AP-PROTOCOL-IES-PAIR : IEsSetParam }	::= ProtocolIE-ContainerPairList { 1, maxnoofE-RABs,   {IEsSetParam} }
+ProtocolError-IE-ContainerList	{ S1AP-PROTOCOL-IES      : IEsSetParam }	::= ProtocolIE-ContainerList     { 1, maxnoofE-RABs,   {IEsSetParam} }
+
+-- **************************************************************
+--
+-- HANDOVER PREPARATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Handover Required
+--
+-- **************************************************************
+
+HandoverRequired ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container		{ { HandoverRequiredIEs} },
+	...
+}
+
+HandoverRequiredIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID							CRITICALITY reject	TYPE MME-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID							CRITICALITY reject	TYPE ENB-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-HandoverType							CRITICALITY reject	TYPE HandoverType						PRESENCE mandatory}|
+	{ ID id-Cause									CRITICALITY ignore	TYPE Cause								PRESENCE mandatory}|
+	{ ID id-TargetID								CRITICALITY reject	TYPE TargetID							PRESENCE mandatory}|
+	{ ID id-Direct-Forwarding-Path-Availability		CRITICALITY ignore	TYPE Direct-Forwarding-Path-Availability		PRESENCE optional}|
+	{ ID id-SRVCCHOIndication						CRITICALITY reject	TYPE SRVCCHOIndication					PRESENCE optional}|
+	{ ID id-Source-ToTarget-TransparentContainer	CRITICALITY reject	TYPE Source-ToTarget-TransparentContainer	PRESENCE mandatory}|
+	{ ID id-Source-ToTarget-TransparentContainer-Secondary	CRITICALITY reject	TYPE Source-ToTarget-TransparentContainer	PRESENCE optional}|
+	{ ID id-MSClassmark2							CRITICALITY reject	TYPE MSClassmark2						PRESENCE conditional}|
+	{ ID id-MSClassmark3							CRITICALITY ignore	TYPE MSClassmark3						PRESENCE conditional}|
+	{ ID id-CSG-Id									CRITICALITY reject	TYPE CSG-Id								PRESENCE optional}|
+	{ ID id-CellAccessMode							CRITICALITY reject	TYPE CellAccessMode						PRESENCE optional}|
+	{ ID id-PS-ServiceNotAvailable					CRITICALITY ignore	TYPE PS-ServiceNotAvailable			PRESENCE optional},
+	...
+}
+
+
+-- **************************************************************
+--
+-- Handover Command
+--
+-- **************************************************************
+
+HandoverCommand ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container		{ { HandoverCommandIEs} },
+	...
+}
+
+HandoverCommandIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID							CRITICALITY reject	TYPE MME-UE-S1AP-ID							PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID							CRITICALITY reject	TYPE ENB-UE-S1AP-ID							PRESENCE mandatory}|
+	{ ID id-HandoverType							CRITICALITY reject	TYPE HandoverType							PRESENCE mandatory}|
+	{ ID id-NASSecurityParametersfromE-UTRAN		CRITICALITY reject	TYPE NASSecurityParametersfromE-UTRAN			PRESENCE conditional
+	-- This IE shall be present if HandoverType IE is set to value "LTEtoUTRAN" or "LTEtoGERAN" --}|
+	{ ID id-E-RABSubjecttoDataForwardingList		CRITICALITY ignore	TYPE E-RABSubjecttoDataForwardingList			PRESENCE optional}|
+	{ ID id-E-RABtoReleaseListHOCmd					CRITICALITY ignore	TYPE E-RABList								PRESENCE optional}|
+	{ ID id-Target-ToSource-TransparentContainer	CRITICALITY reject	TYPE Target-ToSource-TransparentContainer		PRESENCE mandatory}|
+	{ ID id-Target-ToSource-TransparentContainer-Secondary	CRITICALITY reject	TYPE Target-ToSource-TransparentContainer	PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics					CRITICALITY ignore	TYPE CriticalityDiagnostics				PRESENCE optional},
+	...
+}
+
+E-RABSubjecttoDataForwardingList ::= E-RAB-IE-ContainerList { {E-RABDataForwardingItemIEs} }
+
+E-RABDataForwardingItemIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABDataForwardingItem					CRITICALITY ignore	TYPE E-RABDataForwardingItem			PRESENCE mandatory	},
+	...
+}
+
+E-RABDataForwardingItem ::= SEQUENCE {
+	e-RAB-ID							E-RAB-ID,
+	dL-transportLayerAddress			TransportLayerAddress 													OPTIONAL,
+	dL-gTP-TEID							GTP-TEID 																OPTIONAL,
+	uL-TransportLayerAddress			TransportLayerAddress													OPTIONAL,
+	uL-GTP-TEID							GTP-TEID																OPTIONAL,
+	iE-Extensions						ProtocolExtensionContainer { { E-RABDataForwardingItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+E-RABDataForwardingItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+
+-- **************************************************************
+--
+-- Handover Preparation Failure
+--
+-- **************************************************************
+
+HandoverPreparationFailure ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container		{ { HandoverPreparationFailureIEs} },
+	...
+}
+
+HandoverPreparationFailureIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID					CRITICALITY ignore	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY ignore	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-Cause							CRITICALITY ignore	TYPE Cause							PRESENCE mandatory	}|
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- HANDOVER RESOURCE ALLOCATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Handover Request
+--
+-- **************************************************************
+
+HandoverRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container		{ {HandoverRequestIEs} },
+	...
+}
+
+HandoverRequestIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID							CRITICALITY reject	TYPE MME-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-HandoverType							CRITICALITY reject	TYPE HandoverType						PRESENCE mandatory}|
+	{ ID id-Cause									CRITICALITY ignore	TYPE Cause								PRESENCE mandatory}|
+	{ ID id-uEaggregateMaximumBitrate				CRITICALITY reject	TYPE UEAggregateMaximumBitrate			PRESENCE mandatory}|
+	{ ID id-E-RABToBeSetupListHOReq					CRITICALITY reject	TYPE E-RABToBeSetupListHOReq			PRESENCE mandatory}|
+	{ ID id-Source-ToTarget-TransparentContainer	CRITICALITY reject	TYPE Source-ToTarget-TransparentContainer	PRESENCE mandatory}|
+	{ ID id-UESecurityCapabilities					CRITICALITY reject	TYPE UESecurityCapabilities			PRESENCE mandatory}|
+	{ ID id-HandoverRestrictionList					CRITICALITY ignore	TYPE HandoverRestrictionList			PRESENCE optional}|
+	{ ID id-TraceActivation							CRITICALITY ignore	TYPE TraceActivation					PRESENCE optional}|
+	{ ID id-RequestType								CRITICALITY ignore	TYPE RequestType						PRESENCE optional}|
+	{ ID id-SRVCCOperationPossible					CRITICALITY ignore	TYPE SRVCCOperationPossible			PRESENCE optional}|
+	{ ID id-SecurityContext							CRITICALITY reject	TYPE SecurityContext					PRESENCE mandatory}|
+	{ ID id-NASSecurityParameterstoE-UTRAN			CRITICALITY reject	TYPE NASSecurityParameterstoE-UTRAN		PRESENCE conditional
+	-- This IE shall be present if the Handover Type IE is set to the value "UTRANtoLTE" or "GERANtoLTE" --				}|
+	{ ID id-CSG-Id									CRITICALITY reject	TYPE CSG-Id								PRESENCE optional}|
+	{ ID id-CSGMembershipStatus						CRITICALITY ignore	TYPE CSGMembershipStatus				PRESENCE optional}|
+	{ ID id-GUMMEI-ID								CRITICALITY ignore	TYPE GUMMEI								PRESENCE optional}|
+	{ ID id-MME-UE-S1AP-ID-2						CRITICALITY ignore	TYPE MME-UE-S1AP-ID						PRESENCE optional}|
+	{ ID id-ManagementBasedMDTAllowed				CRITICALITY ignore	TYPE ManagementBasedMDTAllowed			PRESENCE optional}|
+	{ ID id-ManagementBasedMDTPLMNList				CRITICALITY ignore	TYPE MDTPLMNList						PRESENCE optional}|
+	{ ID id-Masked-IMEISV							CRITICALITY ignore	TYPE Masked-IMEISV						PRESENCE optional}|
+	{ ID id-ExpectedUEBehaviour						CRITICALITY ignore	TYPE ExpectedUEBehaviour				PRESENCE optional}|
+	{ ID id-ProSeAuthorized							CRITICALITY ignore	TYPE ProSeAuthorized					PRESENCE optional}|
+	{ ID id-UEUserPlaneCIoTSupportIndicator			CRITICALITY ignore	TYPE UEUserPlaneCIoTSupportIndicator 		PRESENCE optional}|
+	{ ID id-V2XServicesAuthorized					CRITICALITY ignore	TYPE V2XServicesAuthorized			PRESENCE optional}|
+	{ ID id-UESidelinkAggregateMaximumBitrate		CRITICALITY ignore	TYPE UESidelinkAggregateMaximumBitrate		PRESENCE optional}|
+	{ ID id-EnhancedCoverageRestricted				CRITICALITY ignore	TYPE EnhancedCoverageRestricted			PRESENCE optional},
+	...
+}
+
+E-RABToBeSetupListHOReq 					::= E-RAB-IE-ContainerList { {E-RABToBeSetupItemHOReqIEs} }
+
+E-RABToBeSetupItemHOReqIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABToBeSetupItemHOReq				CRITICALITY reject	TYPE E-RABToBeSetupItemHOReq			PRESENCE mandatory	},
+	...
+}
+
+E-RABToBeSetupItemHOReq ::= SEQUENCE {
+	e-RAB-ID							E-RAB-ID,
+	transportLayerAddress				TransportLayerAddress,
+	gTP-TEID							GTP-TEID,
+	e-RABlevelQosParameters				E-RABLevelQoSParameters,
+	iE-Extensions						ProtocolExtensionContainer { {E-RABToBeSetupItemHOReq-ExtIEs} }		OPTIONAL,
+	...
+}
+
+E-RABToBeSetupItemHOReq-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-Data-Forwarding-Not-Possible		CRITICALITY ignore	EXTENSION Data-Forwarding-Not-Possible	PRESENCE optional}|
+	{ ID id-BearerType							CRITICALITY reject	EXTENSION BearerType					PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- Handover Request Acknowledge
+--
+-- **************************************************************
+
+HandoverRequestAcknowledge ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {HandoverRequestAcknowledgeIEs} },
+	...
+}
+
+HandoverRequestAcknowledgeIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID							CRITICALITY ignore	TYPE MME-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID							CRITICALITY ignore	TYPE ENB-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-E-RABAdmittedList						CRITICALITY ignore	TYPE E-RABAdmittedList					PRESENCE mandatory}|
+	{ ID id-E-RABFailedToSetupListHOReqAck			CRITICALITY ignore	TYPE E-RABFailedtoSetupListHOReqAck		PRESENCE optional}|
+	{ ID id-Target-ToSource-TransparentContainer	CRITICALITY reject	TYPE Target-ToSource-TransparentContainer	PRESENCE mandatory}|
+	{ ID id-CSG-Id									CRITICALITY ignore	TYPE CSG-Id								PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics					CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional}|
+	{ ID id-CellAccessMode							CRITICALITY ignore	TYPE CellAccessMode						PRESENCE optional}|
+	{ ID id-CE-mode-B-SupportIndicator				CRITICALITY ignore	TYPE CE-mode-B-SupportIndicator			PRESENCE optional},
+	...
+}
+
+E-RABAdmittedList 					::= E-RAB-IE-ContainerList { {E-RABAdmittedItemIEs} }
+
+E-RABAdmittedItemIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABAdmittedItem			CRITICALITY ignore	TYPE E-RABAdmittedItem			PRESENCE mandatory	},
+	...
+}
+
+E-RABAdmittedItem ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	transportLayerAddress			TransportLayerAddress,
+	gTP-TEID						GTP-TEID,
+	dL-transportLayerAddress		TransportLayerAddress	OPTIONAL,
+	dL-gTP-TEID						GTP-TEID				OPTIONAL,
+	uL-TransportLayerAddress		TransportLayerAddress	OPTIONAL,
+	uL-GTP-TEID						GTP-TEID				OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABAdmittedItem-ExtIEs} }	OPTIONAL,
+	...
+}
+
+E-RABAdmittedItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABFailedtoSetupListHOReqAck 					::= E-RAB-IE-ContainerList { {E-RABFailedtoSetupItemHOReqAckIEs} }
+
+E-RABFailedtoSetupItemHOReqAckIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABFailedtoSetupItemHOReqAck			CRITICALITY ignore	TYPE E-RABFailedToSetupItemHOReqAck			PRESENCE mandatory	},
+	...
+}
+
+E-RABFailedToSetupItemHOReqAck ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	cause				Cause,
+	iE-Extensions					ProtocolExtensionContainer { { E-RABFailedToSetupItemHOReqAckExtIEs} }			OPTIONAL,
+	...
+}
+
+E-RABFailedToSetupItemHOReqAckExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+-- **************************************************************
+--
+-- Handover Failure
+--
+-- **************************************************************
+
+HandoverFailure ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { HandoverFailureIEs} },
+	...
+}
+
+HandoverFailureIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY ignore	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause							PRESENCE mandatory	}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- HANDOVER NOTIFICATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Handover Notify
+--
+-- **************************************************************
+
+HandoverNotify ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { HandoverNotifyIEs} },
+	...
+}
+
+HandoverNotifyIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID					CRITICALITY reject	TYPE MME-UE-S1AP-ID			PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY reject	TYPE ENB-UE-S1AP-ID			PRESENCE mandatory}|
+	{ ID id-EUTRAN-CGI						CRITICALITY ignore	TYPE EUTRAN-CGI				PRESENCE mandatory}|
+	{ ID id-TAI								CRITICALITY ignore	TYPE TAI					PRESENCE mandatory}|
+-- Extension for Release 11 to support BBAI -- 
+	{ ID id-Tunnel-Information-for-BBF		CRITICALITY ignore	TYPE TunnelInformation		PRESENCE optional}|
+	{ ID id-LHN-ID							CRITICALITY ignore	TYPE LHN-ID					PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- PATH SWITCH REQUEST ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Path Switch Request
+--
+-- **************************************************************
+
+PathSwitchRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { PathSwitchRequestIEs} },
+	...
+}
+
+PathSwitchRequestIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-E-RABToBeSwitchedDLList			CRITICALITY reject	TYPE E-RABToBeSwitchedDLList	PRESENCE mandatory}|
+	{ ID id-SourceMME-UE-S1AP-ID			CRITICALITY reject	TYPE MME-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-EUTRAN-CGI						CRITICALITY ignore	TYPE EUTRAN-CGI					PRESENCE mandatory}|
+	{ ID id-TAI								CRITICALITY ignore	TYPE TAI						PRESENCE mandatory}|
+	{ ID id-UESecurityCapabilities			CRITICALITY ignore	TYPE UESecurityCapabilities		PRESENCE mandatory}|
+	{ ID id-CSG-Id							CRITICALITY ignore	TYPE CSG-Id						PRESENCE optional}|
+	{ ID id-CellAccessMode					CRITICALITY ignore	TYPE CellAccessMode				PRESENCE optional}|
+	{ ID id-SourceMME-GUMMEI				CRITICALITY ignore	TYPE GUMMEI						PRESENCE optional}|
+	{ ID id-CSGMembershipStatus				CRITICALITY ignore	TYPE CSGMembershipStatus		PRESENCE optional}|
+-- Extension for Release 11 to support BBAI -- 
+	{ ID id-Tunnel-Information-for-BBF		CRITICALITY ignore	TYPE TunnelInformation			PRESENCE optional}|
+	{ ID id-LHN-ID							CRITICALITY ignore	TYPE LHN-ID						PRESENCE optional}|
+	{ ID id-RRC-Resume-Cause				CRITICALITY ignore	TYPE RRC-Establishment-Cause	PRESENCE optional },
+	...
+}
+
+E-RABToBeSwitchedDLList					::= E-RAB-IE-ContainerList { {E-RABToBeSwitchedDLItemIEs} }
+
+E-RABToBeSwitchedDLItemIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABToBeSwitchedDLItem			CRITICALITY reject	TYPE E-RABToBeSwitchedDLItem			PRESENCE mandatory	},
+	...
+}
+
+E-RABToBeSwitchedDLItem ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	transportLayerAddress			TransportLayerAddress,
+	gTP-TEID						GTP-TEID,
+	iE-Extensions					ProtocolExtensionContainer { { E-RABToBeSwitchedDLItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+E-RABToBeSwitchedDLItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- Path Switch Request Acknowledge
+--
+-- **************************************************************
+
+PathSwitchRequestAcknowledge ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { PathSwitchRequestAcknowledgeIEs} },
+	...
+}
+
+PathSwitchRequestAcknowledgeIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID					CRITICALITY ignore	TYPE MME-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY ignore	TYPE ENB-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-uEaggregateMaximumBitrate		CRITICALITY ignore	TYPE UEAggregateMaximumBitrate			PRESENCE optional}|
+	{ ID id-E-RABToBeSwitchedULList			CRITICALITY ignore	TYPE E-RABToBeSwitchedULList			PRESENCE optional}|
+	{ ID id-E-RABToBeReleasedList			CRITICALITY ignore	TYPE E-RABList							PRESENCE optional}|
+	{ ID id-SecurityContext					CRITICALITY reject	TYPE SecurityContext					PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics				PRESENCE optional}|
+	{ ID id-MME-UE-S1AP-ID-2				CRITICALITY ignore	TYPE MME-UE-S1AP-ID						PRESENCE optional}|
+	{ ID id-CSGMembershipStatus				CRITICALITY ignore	TYPE CSGMembershipStatus				PRESENCE optional}|
+	{ ID id-ProSeAuthorized					CRITICALITY ignore	TYPE ProSeAuthorized					PRESENCE optional}|
+	{ ID id-UEUserPlaneCIoTSupportIndicator	CRITICALITY ignore	TYPE UEUserPlaneCIoTSupportIndicator	PRESENCE optional}|
+	{ ID id-V2XServicesAuthorized			CRITICALITY ignore	TYPE V2XServicesAuthorized				PRESENCE optional}|
+	{ ID id-UESidelinkAggregateMaximumBitrate		CRITICALITY ignore	TYPE UESidelinkAggregateMaximumBitrate	PRESENCE optional}|
+	{ ID id-EnhancedCoverageRestricted		CRITICALITY ignore	TYPE EnhancedCoverageRestricted			PRESENCE optional},
+	...
+}
+
+E-RABToBeSwitchedULList ::= E-RAB-IE-ContainerList { {E-RABToBeSwitchedULItemIEs} }
+
+E-RABToBeSwitchedULItemIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABToBeSwitchedULItem		CRITICALITY ignore	TYPE E-RABToBeSwitchedULItem		PRESENCE mandatory	},
+	...
+}
+
+E-RABToBeSwitchedULItem ::= SEQUENCE {
+	e-RAB-ID							E-RAB-ID,
+	transportLayerAddress				TransportLayerAddress,
+	gTP-TEID							GTP-TEID,
+	iE-Extensions						ProtocolExtensionContainer { { E-RABToBeSwitchedULItem-ExtIEs} }	OPTIONAL,
+	...
+}
+
+E-RABToBeSwitchedULItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+-- **************************************************************
+--
+-- Path Switch Request Failure
+--
+-- **************************************************************
+
+PathSwitchRequestFailure ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { PathSwitchRequestFailureIEs} },
+	...
+}
+
+PathSwitchRequestFailureIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID					CRITICALITY ignore	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY ignore	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-Cause							CRITICALITY ignore	TYPE Cause							PRESENCE mandatory	}|
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- HANDOVER CANCEL ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Handover Cancel
+--
+-- **************************************************************
+
+HandoverCancel ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { HandoverCancelIEs} },
+	...
+}
+
+HandoverCancelIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID					CRITICALITY reject	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY reject	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-Cause							CRITICALITY ignore	TYPE Cause							PRESENCE mandatory	},
+	...
+}
+
+-- **************************************************************
+--
+-- Handover Cancel Request Acknowledge
+--
+-- **************************************************************
+
+HandoverCancelAcknowledge ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { HandoverCancelAcknowledgeIEs} },
+	...
+}
+
+HandoverCancelAcknowledgeIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID					CRITICALITY ignore	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY ignore	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- E-RAB SETUP ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- E-RAB Setup Request
+--
+-- **************************************************************
+
+E-RABSetupRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {E-RABSetupRequestIEs} },
+	...
+}
+
+E-RABSetupRequestIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID					CRITICALITY reject	TYPE MME-UE-S1AP-ID						PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY reject	TYPE ENB-UE-S1AP-ID						PRESENCE mandatory	}|
+	{ ID id-uEaggregateMaximumBitrate		CRITICALITY reject	TYPE UEAggregateMaximumBitrate			PRESENCE optional	}|
+	{ ID id-E-RABToBeSetupListBearerSUReq	CRITICALITY reject	TYPE E-RABToBeSetupListBearerSUReq	PRESENCE mandatory	},
+	...
+}
+
+E-RABToBeSetupListBearerSUReq ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABToBeSetupItemBearerSUReqIEs} }
+
+E-RABToBeSetupItemBearerSUReqIEs 	S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABToBeSetupItemBearerSUReq	 CRITICALITY reject 	TYPE E-RABToBeSetupItemBearerSUReq 	PRESENCE mandatory },
+	...
+}
+
+E-RABToBeSetupItemBearerSUReq ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	e-RABlevelQoSParameters			E-RABLevelQoSParameters,
+	transportLayerAddress			TransportLayerAddress,
+	gTP-TEID						GTP-TEID,
+	nAS-PDU							NAS-PDU,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABToBeSetupItemBearerSUReqExtIEs} } OPTIONAL,
+	...
+}
+
+
+E-RABToBeSetupItemBearerSUReqExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-Correlation-ID			CRITICALITY ignore	EXTENSION Correlation-ID		PRESENCE optional}|
+	{ ID id-SIPTO-Correlation-ID	CRITICALITY ignore	EXTENSION Correlation-ID		PRESENCE optional}|
+	{ ID id-BearerType				CRITICALITY reject	EXTENSION BearerType			PRESENCE optional},
+	...
+}
+
+
+-- **************************************************************
+--
+-- E-RAB Setup Response
+--
+-- **************************************************************
+
+E-RABSetupResponse ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {E-RABSetupResponseIEs} },
+	...
+}
+
+E-RABSetupResponseIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID							CRITICALITY ignore	TYPE MME-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID							CRITICALITY ignore	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-E-RABSetupListBearerSURes				CRITICALITY ignore	TYPE E-RABSetupListBearerSURes	PRESENCE optional	}|
+	{ ID id-E-RABFailedToSetupListBearerSURes		CRITICALITY ignore	TYPE E-RABList					PRESENCE optional	}|
+	{ ID id-CriticalityDiagnostics					CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	},
+	...
+}
+
+
+E-RABSetupListBearerSURes ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABSetupItemBearerSUResIEs} }
+
+E-RABSetupItemBearerSUResIEs 	S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABSetupItemBearerSURes	 CRITICALITY ignore 	TYPE E-RABSetupItemBearerSURes 	PRESENCE mandatory },
+	...
+}
+
+E-RABSetupItemBearerSURes ::= SEQUENCE {
+	e-RAB-ID					E-RAB-ID,
+	transportLayerAddress		TransportLayerAddress,
+	gTP-TEID					GTP-TEID,
+	iE-Extensions				ProtocolExtensionContainer { {E-RABSetupItemBearerSUResExtIEs} } OPTIONAL,
+	...
+}
+
+
+E-RABSetupItemBearerSUResExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+
+-- **************************************************************
+--
+-- E-RAB MODIFY ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- E-RAB Modify Request
+--
+-- **************************************************************
+
+E-RABModifyRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {E-RABModifyRequestIEs} },
+	...
+}
+
+E-RABModifyRequestIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID						CRITICALITY reject	TYPE MME-UE-S1AP-ID							PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID						CRITICALITY reject	TYPE ENB-UE-S1AP-ID							PRESENCE mandatory	}|
+	{ ID id-uEaggregateMaximumBitrate			CRITICALITY reject	TYPE UEAggregateMaximumBitrate			PRESENCE optional	}|
+	{ ID id-E-RABToBeModifiedListBearerModReq	CRITICALITY reject	TYPE E-RABToBeModifiedListBearerModReq		PRESENCE mandatory	},
+	...
+}
+
+E-RABToBeModifiedListBearerModReq ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABToBeModifiedItemBearerModReqIEs} }
+
+E-RABToBeModifiedItemBearerModReqIEs 	S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABToBeModifiedItemBearerModReq	 CRITICALITY reject 	TYPE E-RABToBeModifiedItemBearerModReq 	PRESENCE mandatory },
+	...
+}
+
+E-RABToBeModifiedItemBearerModReq ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	e-RABLevelQoSParameters			E-RABLevelQoSParameters,
+	nAS-PDU							NAS-PDU,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABToBeModifyItemBearerModReqExtIEs} } OPTIONAL,
+	...
+}
+
+
+E-RABToBeModifyItemBearerModReqExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-TransportInformation	CRITICALITY reject	EXTENSION TransportInformation		PRESENCE optional},
+	...
+}
+
+
+
+-- **************************************************************
+--
+-- E-RAB Modify Response
+--
+-- **************************************************************
+
+E-RABModifyResponse ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {E-RABModifyResponseIEs} },
+	...
+}
+
+E-RABModifyResponseIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID					CRITICALITY ignore	TYPE MME-UE-S1AP-ID						PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY ignore	TYPE ENB-UE-S1AP-ID						PRESENCE mandatory	}|
+	{ ID id-E-RABModifyListBearerModRes		CRITICALITY ignore	TYPE E-RABModifyListBearerModRes		PRESENCE optional	}|
+	{ ID id-E-RABFailedToModifyList			CRITICALITY ignore	TYPE E-RABList							PRESENCE optional	}|
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics				PRESENCE optional	},
+	...
+}
+
+
+E-RABModifyListBearerModRes ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABModifyItemBearerModResIEs} }
+
+E-RABModifyItemBearerModResIEs 	S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABModifyItemBearerModRes		CRITICALITY ignore	TYPE E-RABModifyItemBearerModRes		PRESENCE mandatory},
+	...
+}
+
+E-RABModifyItemBearerModRes ::= SEQUENCE {
+	e-RAB-ID					E-RAB-ID,
+	iE-Extensions				ProtocolExtensionContainer { {E-RABModifyItemBearerModResExtIEs} } OPTIONAL,
+	...
+}
+
+
+E-RABModifyItemBearerModResExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+
+
+-- **************************************************************
+--
+-- E-RAB RELEASE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- E-RAB Release Command
+--
+-- **************************************************************
+
+E-RABReleaseCommand ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container		{ {E-RABReleaseCommandIEs} },
+	...
+}
+
+E-RABReleaseCommandIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID					CRITICALITY reject	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY reject	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-uEaggregateMaximumBitrate		CRITICALITY reject	TYPE UEAggregateMaximumBitrate		PRESENCE optional	}|
+	{ ID id-E-RABToBeReleasedList			CRITICALITY ignore	TYPE E-RABList						PRESENCE mandatory	}|
+	{ ID id-NAS-PDU							CRITICALITY ignore	TYPE NAS-PDU						PRESENCE optional	},
+	...
+}
+
+
+-- **************************************************************
+--
+-- E-RAB Release Response
+--
+-- **************************************************************
+
+E-RABReleaseResponse ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { E-RABReleaseResponseIEs } },
+	...
+}
+
+E-RABReleaseResponseIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID					CRITICALITY ignore	TYPE MME-UE-S1AP-ID						PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY ignore	TYPE ENB-UE-S1AP-ID						PRESENCE mandatory	}|
+	{ ID id-E-RABReleaseListBearerRelComp	CRITICALITY ignore	TYPE E-RABReleaseListBearerRelComp	PRESENCE optional	}|
+	{ ID id-E-RABFailedToReleaseList		CRITICALITY ignore	TYPE E-RABList							PRESENCE optional	}|
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics				PRESENCE optional	}|
+-- Extension for Release 12 to support User Location Information -- 
+	{ ID id-UserLocationInformation			CRITICALITY ignore	TYPE UserLocationInformation			PRESENCE optional	},
+	...
+}
+
+
+E-RABReleaseListBearerRelComp ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABReleaseItemBearerRelCompIEs} }
+
+E-RABReleaseItemBearerRelCompIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABReleaseItemBearerRelComp	CRITICALITY ignore	TYPE E-RABReleaseItemBearerRelComp	PRESENCE mandatory },
+	...
+}
+
+E-RABReleaseItemBearerRelComp ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABReleaseItemBearerRelCompExtIEs} } OPTIONAL,
+	...
+}
+
+
+E-RABReleaseItemBearerRelCompExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+
+-- **************************************************************
+--
+-- E-RAB RELEASE INDICATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- E-RAB Release Indication
+--
+-- **************************************************************
+
+E-RABReleaseIndication ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {E-RABReleaseIndicationIEs} },
+	...
+}
+
+E-RABReleaseIndicationIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID					CRITICALITY reject	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY reject	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-E-RABReleasedList				CRITICALITY ignore	TYPE E-RABList						PRESENCE mandatory	}|
+-- Extension for Release 12 to support User Location Information -- 
+	{ ID id-UserLocationInformation			CRITICALITY ignore	TYPE UserLocationInformation		PRESENCE optional	},
+	...
+}
+-- **************************************************************
+--
+-- INITIAL CONTEXT SETUP ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Initial Context Setup Request
+--
+-- **************************************************************
+
+InitialContextSetupRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {InitialContextSetupRequestIEs} },
+	...
+}
+
+InitialContextSetupRequestIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID					CRITICALITY reject	TYPE MME-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY reject	TYPE ENB-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-uEaggregateMaximumBitrate		CRITICALITY reject	TYPE UEAggregateMaximumBitrate			PRESENCE mandatory}|
+	{ ID id-E-RABToBeSetupListCtxtSUReq		CRITICALITY reject	TYPE E-RABToBeSetupListCtxtSUReq		PRESENCE mandatory}|
+	{ ID id-UESecurityCapabilities			CRITICALITY reject	TYPE UESecurityCapabilities				PRESENCE mandatory}|
+	{ ID id-SecurityKey						CRITICALITY reject	TYPE SecurityKey						PRESENCE mandatory}|
+	{ ID id-TraceActivation					CRITICALITY ignore	TYPE TraceActivation					PRESENCE optional}|
+	{ ID id-HandoverRestrictionList			CRITICALITY ignore	TYPE HandoverRestrictionList			PRESENCE optional}|
+	{ ID id-UERadioCapability				CRITICALITY ignore	TYPE UERadioCapability					PRESENCE optional}|
+	{ ID id-SubscriberProfileIDforRFP		CRITICALITY ignore	TYPE SubscriberProfileIDforRFP			PRESENCE optional}|
+	{ ID id-CSFallbackIndicator				CRITICALITY reject	TYPE CSFallbackIndicator				PRESENCE optional}|
+	{ ID id-SRVCCOperationPossible			CRITICALITY ignore	TYPE SRVCCOperationPossible				PRESENCE optional}|
+	{ ID id-CSGMembershipStatus				CRITICALITY ignore	TYPE CSGMembershipStatus				PRESENCE optional}|
+	{ ID id-RegisteredLAI					CRITICALITY ignore	TYPE LAI								PRESENCE optional}|
+	{ ID id-GUMMEI-ID						CRITICALITY ignore	TYPE GUMMEI								PRESENCE optional}|
+	{ ID id-MME-UE-S1AP-ID-2				CRITICALITY ignore	TYPE MME-UE-S1AP-ID						PRESENCE optional}|
+	{ ID id-ManagementBasedMDTAllowed		CRITICALITY ignore	TYPE ManagementBasedMDTAllowed			PRESENCE optional}|
+	{ ID id-ManagementBasedMDTPLMNList		CRITICALITY ignore	TYPE MDTPLMNList						PRESENCE optional}|
+	{ ID id-AdditionalCSFallbackIndicator	CRITICALITY ignore	TYPE AdditionalCSFallbackIndicator	PRESENCE conditional}|
+	{ ID id-Masked-IMEISV					CRITICALITY ignore	TYPE Masked-IMEISV						PRESENCE optional}|
+	{ ID id-ExpectedUEBehaviour				CRITICALITY ignore	TYPE ExpectedUEBehaviour				PRESENCE optional}|
+	{ ID id-ProSeAuthorized					CRITICALITY ignore	TYPE ProSeAuthorized					PRESENCE optional}|
+	{ ID id-UEUserPlaneCIoTSupportIndicator	CRITICALITY ignore	TYPE UEUserPlaneCIoTSupportIndicator	PRESENCE optional}|
+	{ ID id-V2XServicesAuthorized			CRITICALITY ignore	TYPE V2XServicesAuthorized				PRESENCE optional}|
+	{ ID id-UESidelinkAggregateMaximumBitrate		CRITICALITY ignore	TYPE UESidelinkAggregateMaximumBitrate	PRESENCE optional}|
+	{ ID id-EnhancedCoverageRestricted		CRITICALITY ignore	TYPE EnhancedCoverageRestricted			PRESENCE optional},
+	...
+}
+
+
+
+
+E-RABToBeSetupListCtxtSUReq ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABToBeSetupItemCtxtSUReqIEs} }
+
+E-RABToBeSetupItemCtxtSUReqIEs 	S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABToBeSetupItemCtxtSUReq	CRITICALITY reject	TYPE E-RABToBeSetupItemCtxtSUReq		PRESENCE mandatory	},
+	...
+}
+
+E-RABToBeSetupItemCtxtSUReq ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	e-RABlevelQoSParameters			E-RABLevelQoSParameters,
+	transportLayerAddress			TransportLayerAddress,
+	gTP-TEID						GTP-TEID,
+	nAS-PDU							NAS-PDU		OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABToBeSetupItemCtxtSUReqExtIEs} } OPTIONAL,
+	...
+}
+
+
+E-RABToBeSetupItemCtxtSUReqExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-Correlation-ID					CRITICALITY ignore	EXTENSION Correlation-ID			PRESENCE optional}|
+	{ ID id-SIPTO-Correlation-ID			CRITICALITY ignore	EXTENSION Correlation-ID			PRESENCE optional}|
+	{ ID id-BearerType						CRITICALITY reject	EXTENSION BearerType				PRESENCE optional},
+	...
+}
+
+
+-- **************************************************************
+--
+-- Initial Context Setup Response
+--
+-- **************************************************************
+
+InitialContextSetupResponse ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {InitialContextSetupResponseIEs} },
+	...
+}
+
+InitialContextSetupResponseIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID						CRITICALITY ignore	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID						CRITICALITY ignore	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-E-RABSetupListCtxtSURes				CRITICALITY ignore	TYPE E-RABSetupListCtxtSURes		PRESENCE mandatory	}|
+	{ ID id-E-RABFailedToSetupListCtxtSURes		CRITICALITY ignore	TYPE E-RABList						PRESENCE optional	}|
+	{ ID id-CriticalityDiagnostics				CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional	},
+	...
+}
+
+
+E-RABSetupListCtxtSURes ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABSetupItemCtxtSUResIEs} }
+
+E-RABSetupItemCtxtSUResIEs 	S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABSetupItemCtxtSURes		CRITICALITY ignore	TYPE E-RABSetupItemCtxtSURes	PRESENCE mandatory	},
+	...
+}
+
+E-RABSetupItemCtxtSURes ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	transportLayerAddress 			TransportLayerAddress,
+	gTP-TEID						GTP-TEID,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABSetupItemCtxtSUResExtIEs} } OPTIONAL,
+	...
+}
+
+
+E-RABSetupItemCtxtSUResExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+-- **************************************************************
+--
+-- Initial Context Setup Failure
+--
+-- **************************************************************
+
+InitialContextSetupFailure ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {InitialContextSetupFailureIEs} },
+	...
+}
+
+InitialContextSetupFailureIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY ignore	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY ignore	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause							PRESENCE mandatory	}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- PAGING ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+
+-- **************************************************************
+--
+-- Paging
+--
+-- **************************************************************
+
+Paging ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       {{PagingIEs}},
+	...
+}
+
+PagingIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-UEIdentityIndexValue			CRITICALITY ignore	TYPE UEIdentityIndexValue				PRESENCE mandatory}|
+	{ ID id-UEPagingID						CRITICALITY ignore	TYPE UEPagingID							PRESENCE mandatory}|
+	{ ID id-pagingDRX						CRITICALITY ignore	TYPE PagingDRX							PRESENCE optional}|
+	{ ID id-CNDomain						CRITICALITY ignore	TYPE CNDomain							PRESENCE mandatory}|
+	{ ID id-TAIList							CRITICALITY ignore	TYPE TAIList							PRESENCE mandatory}|
+	{ ID id-CSG-IdList						CRITICALITY ignore	TYPE CSG-IdList							PRESENCE optional}|
+	{ ID id-PagingPriority					CRITICALITY ignore	TYPE PagingPriority						PRESENCE optional}|
+	{ ID id-UERadioCapabilityForPaging		CRITICALITY ignore	TYPE UERadioCapabilityForPaging			PRESENCE optional}|
+-- Extension for Release 13 to support Paging Optimisation and Coverage Enhancement paging –-
+	{ ID id-AssistanceDataForPaging			CRITICALITY ignore	TYPE AssistanceDataForPaging			PRESENCE optional}|
+	{ ID id-Paging-eDRXInformation			CRITICALITY ignore	TYPE Paging-eDRXInformation				PRESENCE optional}|
+	{ ID id-extended-UEIdentityIndexValue	CRITICALITY ignore	TYPE Extended-UEIdentityIndexValue	PRESENCE optional}|
+	{ ID id-NB-IoT-Paging-eDRXInformation	CRITICALITY ignore	TYPE NB-IoT-Paging-eDRXInformation	PRESENCE optional}|
+	{ ID id-NB-IoT-UEIdentityIndexValue		CRITICALITY ignore	TYPE NB-IoT-UEIdentityIndexValue		PRESENCE optional},
+	...
+}
+
+TAIList::= SEQUENCE (SIZE(1.. maxnoofTAIs)) OF ProtocolIE-SingleContainer {{TAIItemIEs}}
+
+TAIItemIEs 	S1AP-PROTOCOL-IES ::= {
+	{ ID id-TAIItem	 CRITICALITY ignore		TYPE TAIItem	PRESENCE mandatory },
+	...
+}
+
+TAIItem ::= SEQUENCE {
+	tAI 							TAI,
+	iE-Extensions					ProtocolExtensionContainer { {TAIItemExtIEs} } OPTIONAL,
+	...
+}
+
+
+TAIItemExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- UE CONTEXT RELEASE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE Context Release Request
+--
+-- **************************************************************
+
+UEContextReleaseRequest ::= SEQUENCE {
+	protocolIEs                     ProtocolIE-Container       {{UEContextReleaseRequest-IEs}},
+	...
+}
+
+UEContextReleaseRequest-IEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY reject	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY reject	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause							PRESENCE mandatory	}|
+	{ ID id-GWContextReleaseIndication	CRITICALITY reject	TYPE GWContextReleaseIndication		PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- UE Context Release Command
+--
+-- **************************************************************
+
+UEContextReleaseCommand ::= SEQUENCE {
+	protocolIEs                     ProtocolIE-Container       {{UEContextReleaseCommand-IEs}},
+	...
+}
+
+UEContextReleaseCommand-IEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-UE-S1AP-IDs					CRITICALITY reject	TYPE UE-S1AP-IDs					PRESENCE mandatory	}|
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause							PRESENCE mandatory	},
+	...
+}
+
+-- **************************************************************
+--
+-- UE Context Release Complete
+--
+-- **************************************************************
+
+UEContextReleaseComplete ::= SEQUENCE {
+	protocolIEs                     ProtocolIE-Container       {{UEContextReleaseComplete-IEs}},
+	...
+}
+
+UEContextReleaseComplete-IEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID								CRITICALITY ignore	TYPE MME-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID								CRITICALITY ignore	TYPE ENB-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics						CRITICALITY ignore	TYPE CriticalityDiagnostics				PRESENCE optional}|
+-- Extension for Release 12 to support User Location Information -- 
+	{ ID id-UserLocationInformation						CRITICALITY ignore	TYPE UserLocationInformation				PRESENCE optional}|
+-- Extension for Release 13 to support Paging Optimisation
+	{ ID id-InformationOnRecommendedCellsAndENBsForPaging	CRITICALITY ignore	TYPE InformationOnRecommendedCellsAndENBsForPaging		PRESENCE optional}|
+-- Extension for Release 13 to support coverage enhancement paging –
+	{ ID id-CellIdentifierAndCELevelForCECapableUEs		CRITICALITY ignore	TYPE CellIdentifierAndCELevelForCECapableUEs	PRESENCE optional},
+	...
+}
+
+
+-- **************************************************************
+--
+-- UE CONTEXT MODIFICATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE Context Modification Request
+--
+-- **************************************************************
+
+UEContextModificationRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { UEContextModificationRequestIEs} },
+	...
+}
+
+UEContextModificationRequestIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID					CRITICALITY reject	TYPE MME-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID					CRITICALITY reject	TYPE ENB-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-SecurityKey						CRITICALITY reject	TYPE SecurityKey						PRESENCE optional}|
+	{ ID id-SubscriberProfileIDforRFP		CRITICALITY ignore	TYPE SubscriberProfileIDforRFP			PRESENCE optional}|
+	{ ID id-uEaggregateMaximumBitrate		CRITICALITY ignore	TYPE UEAggregateMaximumBitrate			PRESENCE optional}|
+	{ ID id-CSFallbackIndicator				CRITICALITY reject	TYPE CSFallbackIndicator				PRESENCE optional}|
+	{ ID id-UESecurityCapabilities			CRITICALITY reject	TYPE UESecurityCapabilities				PRESENCE optional}|
+	{ ID id-CSGMembershipStatus				CRITICALITY ignore	TYPE CSGMembershipStatus				PRESENCE optional}|
+	{ ID id-RegisteredLAI					CRITICALITY ignore	TYPE LAI								PRESENCE optional}|
+	{ ID id-AdditionalCSFallbackIndicator	CRITICALITY ignore	TYPE AdditionalCSFallbackIndicator	PRESENCE conditional}|
+	{ ID id-ProSeAuthorized					CRITICALITY ignore	TYPE ProSeAuthorized					PRESENCE optional}|
+	{ ID id-SRVCCOperationPossible			CRITICALITY ignore	TYPE SRVCCOperationPossible				PRESENCE optional}|
+	{ ID id-SRVCCOperationNotPossible		CRITICALITY ignore	TYPE SRVCCOperationNotPossible			PRESENCE optional}|
+	{ ID id-V2XServicesAuthorized			CRITICALITY ignore	TYPE V2XServicesAuthorized				PRESENCE optional}|
+	{ ID id-UESidelinkAggregateMaximumBitrate		CRITICALITY ignore	TYPE UESidelinkAggregateMaximumBitrate	PRESENCE optional},
+	...
+}
+-- **************************************************************
+--
+-- UE Context Modification Response
+--
+-- **************************************************************
+
+UEContextModificationResponse ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { UEContextModificationResponseIEs} },
+	...
+}
+
+UEContextModificationResponseIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY ignore	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY ignore	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional	},
+	...
+}
+-- **************************************************************
+--
+-- UE Context Modification Failure
+--
+-- **************************************************************
+
+UEContextModificationFailure ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { UEContextModificationFailureIEs} },
+	...
+}
+
+UEContextModificationFailureIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY ignore	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY ignore	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause							PRESENCE mandatory	}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- UE RADIO CAPABILITY MATCH ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE Radio Capability Match Request
+--
+-- **************************************************************
+
+UERadioCapabilityMatchRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { UERadioCapabilityMatchRequestIEs} },
+	...
+}
+
+UERadioCapabilityMatchRequestIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY reject	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY reject	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-UERadioCapability			CRITICALITY ignore	TYPE UERadioCapability				PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- UE Radio Capability Match Response
+--
+-- **************************************************************
+
+UERadioCapabilityMatchResponse ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { UERadioCapabilityMatchResponseIEs} },
+	...
+}
+
+UERadioCapabilityMatchResponseIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY ignore	TYPE MME-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY ignore	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory	}|
+	{ ID id-VoiceSupportMatchIndicator	CRITICALITY reject	TYPE VoiceSupportMatchIndicator		PRESENCE mandatory	}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- NAS TRANSPORT ELEMENTARY PROCEDURES
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- DOWNLINK NAS TRANSPORT
+--
+-- **************************************************************
+
+DownlinkNASTransport ::= SEQUENCE {
+	protocolIEs                     ProtocolIE-Container       {{DownlinkNASTransport-IEs}},
+	...
+}
+
+DownlinkNASTransport-IEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY reject	TYPE MME-UE-S1AP-ID					PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY reject	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory}|
+	{ ID id-NAS-PDU						CRITICALITY reject	TYPE NAS-PDU						PRESENCE mandatory}|
+	{ ID id-HandoverRestrictionList		CRITICALITY ignore	TYPE HandoverRestrictionList		PRESENCE optional}|
+	{ ID id-SubscriberProfileIDforRFP	CRITICALITY ignore	TYPE SubscriberProfileIDforRFP		PRESENCE optional}|
+	{ ID id-SRVCCOperationPossible		CRITICALITY ignore	TYPE SRVCCOperationPossible			PRESENCE optional}|
+	{ ID id-UERadioCapability			CRITICALITY ignore	TYPE UERadioCapability				PRESENCE optional}|
+	{ ID id-DLNASPDUDeliveryAckRequest	CRITICALITY ignore	TYPE DLNASPDUDeliveryAckRequest	PRESENCE optional}|
+	{ ID id-EnhancedCoverageRestricted	CRITICALITY ignore	TYPE EnhancedCoverageRestricted			PRESENCE optional},
+	...
+}
+
+
+-- **************************************************************
+--
+-- INITIAL UE MESSAGE
+--
+-- **************************************************************
+
+InitialUEMessage ::= SEQUENCE {
+	protocolIEs                     ProtocolIE-Container       {{InitialUEMessage-IEs}},
+	...
+}
+
+InitialUEMessage-IEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY reject	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory}|
+	{ ID id-NAS-PDU						CRITICALITY reject	TYPE NAS-PDU						PRESENCE mandatory}|
+	{ ID id-TAI							CRITICALITY reject	TYPE TAI							PRESENCE mandatory}|
+	{ ID id-EUTRAN-CGI					CRITICALITY ignore	TYPE EUTRAN-CGI						PRESENCE mandatory}|
+	{ ID id-RRC-Establishment-Cause		CRITICALITY ignore	TYPE RRC-Establishment-Cause		PRESENCE mandatory}|
+	{ ID id-S-TMSI						CRITICALITY reject	TYPE S-TMSI							PRESENCE optional}|
+	{ ID id-CSG-Id						CRITICALITY reject	TYPE CSG-Id							PRESENCE optional}|
+	{ ID id-GUMMEI-ID					CRITICALITY reject	TYPE GUMMEI							PRESENCE optional}|
+	{ ID id-CellAccessMode				CRITICALITY reject	TYPE CellAccessMode					PRESENCE optional}|
+	{ ID id-GW-TransportLayerAddress	CRITICALITY ignore	TYPE TransportLayerAddress			PRESENCE optional}|
+	{ ID id-RelayNode-Indicator			CRITICALITY reject	TYPE RelayNode-Indicator			PRESENCE optional}|
+	{ ID id-GUMMEIType					CRITICALITY ignore	TYPE GUMMEIType						PRESENCE optional}|
+-- Extension for Release 11 to support BBAI -- 
+	{ ID id-Tunnel-Information-for-BBF	CRITICALITY ignore	TYPE TunnelInformation				PRESENCE optional}|
+	{ ID id-SIPTO-L-GW-TransportLayerAddress	CRITICALITY ignore	TYPE TransportLayerAddress	PRESENCE optional}|
+	{ ID id-LHN-ID						CRITICALITY ignore	TYPE LHN-ID							PRESENCE optional}|
+	{ ID id-MME-Group-ID				CRITICALITY ignore	TYPE MME-Group-ID					PRESENCE optional}|
+	{ ID id-UE-Usage-Type				CRITICALITY ignore	TYPE UE-Usage-Type					PRESENCE optional}|
+	{ ID id-CE-mode-B-SupportIndicator	CRITICALITY ignore	TYPE CE-mode-B-SupportIndicator		PRESENCE optional}|
+	{ ID id-DCN-ID						CRITICALITY ignore	TYPE DCN-ID							PRESENCE optional}|
+	{ ID id-Coverage-Level           	CRITICALITY ignore	TYPE Coverage-Level				PRESENCE optional},
+
+	...
+}
+
+
+-- **************************************************************
+--
+-- UPLINK NAS TRANSPORT
+--
+-- **************************************************************
+
+UplinkNASTransport ::= SEQUENCE {
+	protocolIEs                     ProtocolIE-Container       {{UplinkNASTransport-IEs}},
+	...
+}
+
+UplinkNASTransport-IEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY reject	TYPE MME-UE-S1AP-ID					PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY reject	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory}|
+	{ ID id-NAS-PDU						CRITICALITY reject	TYPE NAS-PDU						PRESENCE mandatory}|
+	{ ID id-EUTRAN-CGI					CRITICALITY ignore	TYPE EUTRAN-CGI						PRESENCE mandatory}|
+	{ ID id-TAI							CRITICALITY ignore	TYPE TAI							PRESENCE mandatory}|
+	{ ID id-GW-TransportLayerAddress	CRITICALITY ignore	TYPE TransportLayerAddress			PRESENCE optional}|
+	{ ID id-SIPTO-L-GW-TransportLayerAddress	CRITICALITY ignore	TYPE TransportLayerAddress	PRESENCE optional}|
+	{ ID id-LHN-ID						CRITICALITY ignore	TYPE LHN-ID							PRESENCE optional},
+	...
+}
+-- **************************************************************
+--
+-- NAS NON DELIVERY INDICATION
+--
+-- **************************************************************
+
+NASNonDeliveryIndication ::= SEQUENCE {
+	protocolIEs                     ProtocolIE-Container       {{NASNonDeliveryIndication-IEs}},
+	...
+}
+
+NASNonDeliveryIndication-IEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY reject	TYPE MME-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-NAS-PDU						CRITICALITY ignore	TYPE NAS-PDU					PRESENCE mandatory	}|
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause						PRESENCE mandatory	},
+	...
+}
+
+-- **************************************************************
+--
+-- REROUTE NAS REQUEST
+--
+-- **************************************************************
+
+RerouteNASRequest ::= SEQUENCE {
+	protocolIEs                     ProtocolIE-Container       {{RerouteNASRequest-IEs}},
+	...
+}
+
+RerouteNASRequest-IEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-eNB-UE-S1AP-ID			CRITICALITY reject	TYPE ENB-UE-S1AP-ID			PRESENCE mandatory}|
+	{ ID id-MME-UE-S1AP-ID			CRITICALITY ignore	TYPE MME-UE-S1AP-ID			PRESENCE optional}|
+	{ ID id-S1-Message				CRITICALITY reject	TYPE OCTET STRING			PRESENCE mandatory}|
+	{ ID id-MME-Group-ID			CRITICALITY reject	TYPE MME-Group-ID			PRESENCE mandatory}|
+	{ ID id-Additional-GUTI			CRITICALITY ignore	TYPE Additional-GUTI		PRESENCE optional}|
+	{ ID id-UE-Usage-Type			CRITICALITY ignore	TYPE UE-Usage-Type			PRESENCE optional},
+	...
+}
+
+
+-- **************************************************************
+--
+-- NAS DELIVERY INDICATION
+--
+-- **************************************************************
+
+NASDeliveryIndication ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container { { NASDeliveryIndicationIEs} },
+	...
+}
+
+NASDeliveryIndicationIEs S1AP-PROTOCOL-IES ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- RESET ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Reset
+--
+-- **************************************************************
+
+Reset ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {ResetIEs} },
+	...
+}
+
+ResetIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause						PRESENCE mandatory	}|
+	{ ID id-ResetType					CRITICALITY reject	TYPE ResetType					PRESENCE mandatory	},
+	...
+}
+
+ResetType ::= CHOICE {
+	s1-Interface					ResetAll,
+	partOfS1-Interface				UE-associatedLogicalS1-ConnectionListRes,
+	...
+}
+
+
+
+ResetAll ::= ENUMERATED {
+	reset-all,
+	...
+}
+
+UE-associatedLogicalS1-ConnectionListRes ::= SEQUENCE (SIZE(1.. maxnoofIndividualS1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { UE-associatedLogicalS1-ConnectionItemRes } }
+
+UE-associatedLogicalS1-ConnectionItemRes S1AP-PROTOCOL-IES ::= {
+	{ ID id-UE-associatedLogicalS1-ConnectionItem	CRITICALITY reject	TYPE UE-associatedLogicalS1-ConnectionItem	PRESENCE mandatory},
+	...
+}
+
+
+-- **************************************************************
+--
+-- Reset Acknowledge
+--
+-- **************************************************************
+
+ResetAcknowledge ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {ResetAcknowledgeIEs} },
+	...
+}
+
+ResetAcknowledgeIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-UE-associatedLogicalS1-ConnectionListResAck		CRITICALITY ignore	TYPE UE-associatedLogicalS1-ConnectionListResAck			PRESENCE optional	}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional	},
+	...
+}
+
+UE-associatedLogicalS1-ConnectionListResAck ::= SEQUENCE (SIZE(1.. maxnoofIndividualS1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { UE-associatedLogicalS1-ConnectionItemResAck } }
+
+UE-associatedLogicalS1-ConnectionItemResAck 	S1AP-PROTOCOL-IES ::= {
+	{ ID id-UE-associatedLogicalS1-ConnectionItem	 CRITICALITY ignore 	TYPE UE-associatedLogicalS1-ConnectionItem  	PRESENCE mandatory },
+	...
+}
+
+-- **************************************************************
+--
+-- ERROR INDICATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Error Indication
+--
+-- **************************************************************
+
+ErrorIndication ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       {{ErrorIndicationIEs}},
+	...
+}
+
+ErrorIndicationIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY ignore	TYPE MME-UE-S1AP-ID				PRESENCE optional	}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY ignore	TYPE ENB-UE-S1AP-ID				PRESENCE optional	}|
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause						PRESENCE optional	}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- S1 SETUP ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- S1 Setup Request
+--
+-- **************************************************************
+
+S1SetupRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {S1SetupRequestIEs} },
+	...
+}
+
+S1SetupRequestIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-Global-ENB-ID				CRITICALITY reject	TYPE Global-ENB-ID				PRESENCE mandatory}|
+	{ ID id-eNBname						CRITICALITY ignore	TYPE ENBname					PRESENCE optional}|
+	{ ID id-SupportedTAs				CRITICALITY reject	TYPE SupportedTAs				PRESENCE mandatory}|
+	{ ID id-DefaultPagingDRX			CRITICALITY ignore	TYPE PagingDRX					PRESENCE mandatory}|
+	{ ID id-CSG-IdList					CRITICALITY reject	TYPE CSG-IdList					PRESENCE optional}|
+	{ ID id-UE-RetentionInformation		CRITICALITY ignore	TYPE UE-RetentionInformation	PRESENCE optional}|
+	{ ID id-NB-IoT-DefaultPagingDRX		CRITICALITY ignore	TYPE NB-IoT-DefaultPagingDRX	PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- S1 Setup Response
+--
+-- **************************************************************
+
+S1SetupResponse ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {S1SetupResponseIEs} },
+	...
+}
+
+
+S1SetupResponseIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MMEname						CRITICALITY ignore	TYPE MMEname					PRESENCE optional}|
+	{ ID id-ServedGUMMEIs				CRITICALITY reject	TYPE ServedGUMMEIs				PRESENCE mandatory}|
+	{ ID id-RelativeMMECapacity			CRITICALITY ignore	TYPE RelativeMMECapacity		PRESENCE mandatory}|
+	{ ID id-MMERelaySupportIndicator	CRITICALITY ignore	TYPE MMERelaySupportIndicator	PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional}|
+	{ ID id-UE-RetentionInformation		CRITICALITY ignore	TYPE UE-RetentionInformation	PRESENCE optional}|
+	{ ID id-ServedDCNs					CRITICALITY ignore	TYPE ServedDCNs					PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- S1 Setup Failure
+--
+-- **************************************************************
+
+S1SetupFailure ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {S1SetupFailureIEs} },
+	...
+}
+
+S1SetupFailureIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause						PRESENCE mandatory	}|
+	{ ID id-TimeToWait					CRITICALITY ignore	TYPE TimeToWait					PRESENCE optional	}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- ENB CONFIGURATION UPDATE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- eNB Configuration Update 
+--
+-- **************************************************************
+
+ENBConfigurationUpdate ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {ENBConfigurationUpdateIEs} },
+	...
+}
+
+ENBConfigurationUpdateIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-eNBname						CRITICALITY ignore	TYPE ENBname					PRESENCE optional}|
+	{ ID id-SupportedTAs				CRITICALITY reject	TYPE SupportedTAs				PRESENCE optional}|
+	{ ID id-CSG-IdList					CRITICALITY reject	TYPE CSG-IdList					PRESENCE optional}|
+	{ ID id-DefaultPagingDRX			CRITICALITY ignore	TYPE PagingDRX					PRESENCE optional}|
+	{ ID id-NB-IoT-DefaultPagingDRX		CRITICALITY ignore	TYPE NB-IoT-DefaultPagingDRX	PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- eNB Configuration Update Acknowledge
+--
+-- **************************************************************
+
+ENBConfigurationUpdateAcknowledge ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {ENBConfigurationUpdateAcknowledgeIEs} },
+	...
+}
+
+
+ENBConfigurationUpdateAcknowledgeIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- eNB Configuration Update Failure
+--
+-- **************************************************************
+
+ENBConfigurationUpdateFailure ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {ENBConfigurationUpdateFailureIEs} },
+	...
+}
+
+ENBConfigurationUpdateFailureIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause						PRESENCE mandatory	}|
+	{ ID id-TimeToWait					CRITICALITY ignore	TYPE TimeToWait					PRESENCE optional	}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional	},
+...
+}
+
+
+-- **************************************************************
+--
+-- MME CONFIGURATION UPDATE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MME Configuration Update 
+--
+-- **************************************************************
+
+MMEConfigurationUpdate ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {MMEConfigurationUpdateIEs} },
+	...
+}
+
+MMEConfigurationUpdateIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MMEname					CRITICALITY ignore	TYPE MMEname				PRESENCE optional	}|
+	{ ID id-ServedGUMMEIs			CRITICALITY reject	TYPE ServedGUMMEIs			PRESENCE optional	}|
+	{ ID id-RelativeMMECapacity		CRITICALITY reject	TYPE RelativeMMECapacity	PRESENCE optional	}|
+	{ ID id-ServedDCNs				CRITICALITY ignore	TYPE ServedDCNs				PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- MME Configuration Update Acknowledge
+--
+-- **************************************************************
+
+MMEConfigurationUpdateAcknowledge ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {MMEConfigurationUpdateAcknowledgeIEs} },
+	...
+}
+
+
+MMEConfigurationUpdateAcknowledgeIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- MME Configuration Update Failure
+--
+-- **************************************************************
+
+MMEConfigurationUpdateFailure ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {MMEConfigurationUpdateFailureIEs} },
+	...
+}
+
+MMEConfigurationUpdateFailureIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause						PRESENCE mandatory	}|
+	{ ID id-TimeToWait					CRITICALITY ignore	TYPE TimeToWait					PRESENCE optional	}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- DOWNLINK S1 CDMA2000 TUNNELLING ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Downlink S1 CDMA2000 Tunnelling
+--
+-- **************************************************************
+
+DownlinkS1cdma2000tunnelling ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {DownlinkS1cdma2000tunnellingIEs} },
+	...
+}
+
+DownlinkS1cdma2000tunnellingIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID						CRITICALITY reject	TYPE MME-UE-S1AP-ID						PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID						CRITICALITY reject	TYPE ENB-UE-S1AP-ID						PRESENCE mandatory	}|
+	{ ID id-E-RABSubjecttoDataForwardingList	CRITICALITY ignore	TYPE E-RABSubjecttoDataForwardingList	PRESENCE optional	}|
+	{ ID id-cdma2000HOStatus					CRITICALITY ignore	TYPE Cdma2000HOStatus					PRESENCE optional	}|
+	{ ID id-cdma2000RATType						CRITICALITY reject	TYPE Cdma2000RATType					PRESENCE mandatory	}|
+	{ ID id-cdma2000PDU							CRITICALITY reject	TYPE Cdma2000PDU						PRESENCE mandatory	},
+	...
+}
+
+-- **************************************************************
+--
+-- UPLINK S1 CDMA2000 TUNNELLING ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Uplink S1 CDMA2000 Tunnelling
+--
+-- **************************************************************
+
+UplinkS1cdma2000tunnelling ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {UplinkS1cdma2000tunnellingIEs} },
+	...
+}
+
+UplinkS1cdma2000tunnellingIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID							CRITICALITY reject	TYPE MME-UE-S1AP-ID						PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID							CRITICALITY reject	TYPE ENB-UE-S1AP-ID						PRESENCE mandatory	}|
+	{ ID id-cdma2000RATType							CRITICALITY reject	TYPE Cdma2000RATType					PRESENCE mandatory	}|
+	{ ID id-cdma2000SectorID						CRITICALITY reject	TYPE Cdma2000SectorID					PRESENCE mandatory	}|
+	{ ID id-cdma2000HORequiredIndication			CRITICALITY ignore	TYPE Cdma2000HORequiredIndication		PRESENCE optional	}|
+	{ ID id-cdma2000OneXSRVCCInfo					CRITICALITY reject	TYPE Cdma2000OneXSRVCCInfo			PRESENCE optional	}|
+	{ ID id-cdma2000OneXRAND						CRITICALITY reject	TYPE Cdma2000OneXRAND					PRESENCE optional	}|
+	{ ID id-cdma2000PDU								CRITICALITY reject	TYPE Cdma2000PDU						PRESENCE mandatory	}|
+	{ ID id-EUTRANRoundTripDelayEstimationInfo		CRITICALITY ignore	TYPE EUTRANRoundTripDelayEstimationInfo		PRESENCE optional	},
+	-- Extension for Release 9 to assist target HRPD access with the acquisition of the UE --
+	...
+}
+
+
+-- **************************************************************
+--
+-- UE CAPABILITY INFO INDICATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE Capability Info Indication
+--
+-- **************************************************************
+
+UECapabilityInfoIndication ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { UECapabilityInfoIndicationIEs} },
+	...
+}
+
+UECapabilityInfoIndicationIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY reject	TYPE MME-UE-S1AP-ID					PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY reject	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory}|
+	{ ID id-UERadioCapability			CRITICALITY ignore	TYPE UERadioCapability				PRESENCE mandatory}|
+	{ ID id-UERadioCapabilityForPaging	CRITICALITY ignore	TYPE UERadioCapabilityForPaging		PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- eNB STATUS TRANSFER ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- eNB Status Transfer
+--
+-- **************************************************************
+
+ENBStatusTransfer ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {ENBStatusTransferIEs} },
+	...
+}
+
+ENBStatusTransferIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID								CRITICALITY reject	TYPE MME-UE-S1AP-ID		PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID								CRITICALITY reject	TYPE ENB-UE-S1AP-ID		PRESENCE mandatory}|
+	{ ID id-eNB-StatusTransfer-TransparentContainer		CRITICALITY reject	TYPE ENB-StatusTransfer-TransparentContainer	PRESENCE mandatory},
+	...
+}
+
+
+-- **************************************************************
+--
+-- MME STATUS TRANSFER ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MME Status Transfer
+--
+-- **************************************************************
+
+MMEStatusTransfer ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {MMEStatusTransferIEs} },
+	...
+}
+
+MMEStatusTransferIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID								CRITICALITY reject	TYPE MME-UE-S1AP-ID			PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID								CRITICALITY reject	TYPE ENB-UE-S1AP-ID			PRESENCE mandatory}|
+	{ ID id-eNB-StatusTransfer-TransparentContainer		CRITICALITY reject	TYPE ENB-StatusTransfer-TransparentContainer		PRESENCE mandatory},
+	...
+}
+
+
+-- **************************************************************
+--
+-- TRACE ELEMENTARY PROCEDURES
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- Trace Start
+--
+-- **************************************************************
+
+TraceStart ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {TraceStartIEs} },
+	...
+}
+
+TraceStartIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY reject	TYPE MME-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-TraceActivation				CRITICALITY ignore	TYPE TraceActivation			PRESENCE mandatory	},
+	...
+}
+
+-- **************************************************************
+--
+-- Trace Failure Indication
+--
+-- **************************************************************
+
+TraceFailureIndication ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {TraceFailureIndicationIEs} },
+	...
+}
+
+TraceFailureIndicationIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY reject	TYPE MME-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-E-UTRAN-Trace-ID			CRITICALITY ignore	TYPE E-UTRAN-Trace-ID			PRESENCE mandatory	}|
+	{ ID id-Cause						CRITICALITY ignore	TYPE Cause						PRESENCE mandatory	},
+	...
+}
+
+-- **************************************************************
+--
+-- DEACTIVATE TRACE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Deactivate Trace
+--
+-- **************************************************************
+
+DeactivateTrace ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { DeactivateTraceIEs} },
+	...
+}
+
+DeactivateTraceIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID		CRITICALITY reject	TYPE MME-UE-S1AP-ID		PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID		CRITICALITY reject	TYPE ENB-UE-S1AP-ID		PRESENCE mandatory	}|
+	{ ID id-E-UTRAN-Trace-ID	CRITICALITY ignore	TYPE E-UTRAN-Trace-ID	PRESENCE mandatory	},
+	...
+}
+
+-- **************************************************************
+--
+-- CELL TRAFFIC TRACE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Cell Traffic Trace
+--
+-- **************************************************************
+
+CellTrafficTrace ::= SEQUENCE {
+     protocolIEs		ProtocolIE-Container	{ { CellTrafficTraceIEs } },
+     ...
+}
+
+CellTrafficTraceIEs S1AP-PROTOCOL-IES ::= {
+	{ID id-MME-UE-S1AP-ID					CRITICALITY reject	TYPE MME-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ID id-eNB-UE-S1AP-ID					CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ID id-E-UTRAN-Trace-ID					CRITICALITY ignore	TYPE E-UTRAN-Trace-ID			PRESENCE mandatory	}|
+	{ID id-EUTRAN-CGI						CRITICALITY ignore	TYPE EUTRAN-CGI					PRESENCE mandatory	}|
+	{ID id-TraceCollectionEntityIPAddress	CRITICALITY ignore	TYPE TransportLayerAddress		PRESENCE mandatory	}|
+	{ID id-PrivacyIndicator					CRITICALITY ignore	TYPE PrivacyIndicator			PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- LOCATION ELEMENTARY PROCEDURES
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Location Reporting Control
+--
+-- **************************************************************
+
+LocationReportingControl ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { LocationReportingControlIEs} },
+	...
+}
+
+LocationReportingControlIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID			CRITICALITY reject	TYPE MME-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID			CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-RequestType				CRITICALITY ignore	TYPE RequestType				PRESENCE mandatory	},
+	...
+}
+
+-- **************************************************************
+--
+-- Location Report Failure Indication
+--
+-- **************************************************************
+
+LocationReportingFailureIndication ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { LocationReportingFailureIndicationIEs} },
+	...
+}
+
+LocationReportingFailureIndicationIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID			CRITICALITY reject	TYPE MME-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID			CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-Cause					CRITICALITY ignore	TYPE Cause						PRESENCE mandatory	},
+	...
+}
+
+-- **************************************************************
+--
+-- Location Report 
+--
+-- **************************************************************
+
+LocationReport ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { LocationReportIEs} },
+	...
+}
+
+LocationReportIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID			CRITICALITY reject	TYPE MME-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID			CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-EUTRAN-CGI				CRITICALITY ignore	TYPE EUTRAN-CGI					PRESENCE mandatory	}|
+	{ ID id-TAI						CRITICALITY ignore	TYPE TAI						PRESENCE mandatory	}|
+	{ ID id-RequestType				CRITICALITY ignore	TYPE RequestType				PRESENCE mandatory	},
+	...
+}
+
+-- **************************************************************
+--
+-- OVERLOAD ELEMENTARY PROCEDURES
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Overload Start
+--
+-- **************************************************************
+
+OverloadStart ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {OverloadStartIEs} },
+	...
+}
+
+OverloadStartIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-OverloadResponse					CRITICALITY reject	TYPE OverloadResponse				PRESENCE mandatory	}|
+	{ ID id-GUMMEIList							CRITICALITY ignore	TYPE GUMMEIList						PRESENCE optional	}|
+	{ ID id-TrafficLoadReductionIndication		CRITICALITY ignore	TYPE TrafficLoadReductionIndication	PRESENCE optional	},
+	...
+}
+-- **************************************************************
+--
+-- Overload Stop
+--
+-- **************************************************************
+
+OverloadStop ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {OverloadStopIEs} },
+	...
+}
+
+OverloadStopIEs S1AP-PROTOCOL-IES ::= {	
+{ ID id-GUMMEIList								CRITICALITY ignore	TYPE GUMMEIList						PRESENCE optional	},
+	...
+}
+-- **************************************************************
+--
+-- WRITE-REPLACE WARNING ELEMENTARY PROCEDURE 
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Write-Replace Warning Request
+--
+-- **************************************************************
+
+
+WriteReplaceWarningRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {WriteReplaceWarningRequestIEs} },
+	...
+}
+
+WriteReplaceWarningRequestIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MessageIdentifier					CRITICALITY reject	TYPE MessageIdentifier					PRESENCE mandatory	}|
+	{ ID id-SerialNumber						CRITICALITY reject	TYPE SerialNumber						PRESENCE mandatory	}|
+	{ ID id-WarningAreaList						CRITICALITY ignore	TYPE WarningAreaList					PRESENCE optional	}|
+	{ ID id-RepetitionPeriod					CRITICALITY reject	TYPE RepetitionPeriod					PRESENCE mandatory	}|
+	{ ID id-ExtendedRepetitionPeriod			CRITICALITY reject	TYPE ExtendedRepetitionPeriod			PRESENCE optional	}|
+	{ ID id-NumberofBroadcastRequest			CRITICALITY reject	TYPE NumberofBroadcastRequest			PRESENCE mandatory	}|
+	{ ID id-WarningType							CRITICALITY ignore	TYPE WarningType						PRESENCE optional	}|
+	{ ID id-WarningSecurityInfo					CRITICALITY ignore	TYPE WarningSecurityInfo				PRESENCE optional	}|
+	{ ID id-DataCodingScheme					CRITICALITY ignore	TYPE DataCodingScheme					PRESENCE optional	}|
+	{ ID id-WarningMessageContents				CRITICALITY ignore	TYPE WarningMessageContents				PRESENCE optional	}|
+	{ ID id-ConcurrentWarningMessageIndicator	CRITICALITY reject	TYPE ConcurrentWarningMessageIndicator	PRESENCE optional	},
+	...
+}
+-- **************************************************************
+--
+-- Write-Replace Warning Response
+--
+-- **************************************************************
+
+WriteReplaceWarningResponse ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container		{ {WriteReplaceWarningResponseIEs} },
+	...
+}
+
+WriteReplaceWarningResponseIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MessageIdentifier				CRITICALITY reject	TYPE MessageIdentifier					PRESENCE mandatory	}|
+	{ ID id-SerialNumber					CRITICALITY reject	TYPE SerialNumber						PRESENCE mandatory	}|
+	{ ID id-BroadcastCompletedAreaList		CRITICALITY ignore	TYPE BroadcastCompletedAreaList			PRESENCE optional	}|
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics				PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- eNB DIRECT INFORMATION TRANSFER ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- eNB Direct Information Transfer
+--
+-- **************************************************************
+
+ENBDirectInformationTransfer ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       {{ ENBDirectInformationTransferIEs}},
+	...
+}
+
+ENBDirectInformationTransferIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-Inter-SystemInformationTransferTypeEDT	CRITICALITY reject	TYPE Inter-SystemInformationTransferType		PRESENCE mandatory	},
+	...
+}
+
+Inter-SystemInformationTransferType ::= CHOICE {
+	rIMTransfer		RIMTransfer,
+	...
+}
+
+-- **************************************************************
+--
+-- MME DIRECT INFORMATION TRANSFER ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MME Direct Information Transfer
+--
+-- **************************************************************
+
+MMEDirectInformationTransfer ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       {{ MMEDirectInformationTransferIEs}},
+	...
+}
+
+MMEDirectInformationTransferIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-Inter-SystemInformationTransferTypeMDT	CRITICALITY reject	TYPE Inter-SystemInformationTransferType	PRESENCE mandatory	},
+	...
+}
+-- **************************************************************
+--
+-- eNB CONFIGURATION TRANSFER ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- eNB Configuration Transfer
+--
+-- **************************************************************
+
+ENBConfigurationTransfer ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       {{ ENBConfigurationTransferIEs}},
+	...
+}
+
+ENBConfigurationTransferIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-SONConfigurationTransferECT		CRITICALITY ignore	TYPE SONConfigurationTransfer	PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- MME CONFIGURATION TRANSFER ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MME Configuration Transfer
+--
+-- **************************************************************
+
+MMEConfigurationTransfer ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       {{ MMEConfigurationTransferIEs}},
+	...
+}
+
+MMEConfigurationTransferIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-SONConfigurationTransferMCT		CRITICALITY ignore	TYPE SONConfigurationTransfer	PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- PRIVATE MESSAGE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Private Message
+--
+-- **************************************************************
+
+PrivateMessage ::= SEQUENCE {
+	privateIEs			PrivateIE-Container       {{PrivateMessageIEs}},
+	...
+}
+
+PrivateMessageIEs S1AP-PRIVATE-IES ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- KILL PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Kill Request
+--
+-- **************************************************************
+
+
+KillRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {KillRequestIEs} },
+	...
+}
+
+KillRequestIEs S1AP-PROTOCOL-IES ::= {	
+	{ ID id-MessageIdentifier			CRITICALITY reject	TYPE MessageIdentifier		PRESENCE mandatory}|
+	{ ID id-SerialNumber				CRITICALITY reject	TYPE SerialNumber			PRESENCE mandatory}|
+	{ ID id-WarningAreaList				CRITICALITY ignore	TYPE WarningAreaList		PRESENCE optional}|
+	{ ID id-KillAllWarningMessages		CRITICALITY reject	TYPE KillAllWarningMessages	PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- Kill Response
+--
+-- **************************************************************
+
+KillResponse ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container		{ {KillResponseIEs} },
+	...
+}
+
+KillResponseIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MessageIdentifier			CRITICALITY reject	TYPE MessageIdentifier					PRESENCE mandatory	}|
+	{ ID id-SerialNumber				CRITICALITY reject	TYPE SerialNumber						PRESENCE mandatory	}|
+	{ ID id-BroadcastCancelledAreaList	CRITICALITY ignore	TYPE BroadcastCancelledAreaList			PRESENCE optional	}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics				PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- PWS RESTART INDICATION PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- PWS Restart Indication
+--
+-- **************************************************************
+
+PWSRestartIndication::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       {{ PWSRestartIndicationIEs}},
+	...
+}
+
+PWSRestartIndicationIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-ECGIListForRestart				CRITICALITY reject	TYPE ECGIListForRestart					PRESENCE mandatory}|
+	{ ID id-Global-ENB-ID					CRITICALITY reject	TYPE Global-ENB-ID						PRESENCE mandatory}|
+	{ ID id-TAIListForRestart				CRITICALITY reject	TYPE TAIListForRestart					PRESENCE mandatory}|
+	{ ID id-EmergencyAreaIDListForRestart	CRITICALITY reject	TYPE EmergencyAreaIDListForRestart	PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- PWS Failure Indication
+--
+-- **************************************************************
+
+PWSFailureIndication::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       {{ PWSFailureIndicationIEs}},
+	...
+}
+
+PWSFailureIndicationIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-PWSfailedECGIList		CRITICALITY reject	TYPE PWSfailedECGIList	PRESENCE mandatory}|
+	{ ID id-Global-ENB-ID			CRITICALITY reject	TYPE Global-ENB-ID		PRESENCE mandatory},
+	...
+}
+
+-- **************************************************************
+--
+-- LPPA TRANSPORT ELEMENTARY PROCEDURES
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- DOWNLINK UE ASSOCIATED LPPA TRANSPORT
+--
+-- **************************************************************
+
+DownlinkUEAssociatedLPPaTransport ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       {{DownlinkUEAssociatedLPPaTransport-IEs}},
+	...
+}
+
+DownlinkUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID			CRITICALITY reject	TYPE MME-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID			CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-Routing-ID				CRITICALITY reject	TYPE Routing-ID					PRESENCE mandatory	}|
+	{ ID id-LPPa-PDU    			CRITICALITY reject	TYPE LPPa-PDU					PRESENCE mandatory	},
+	...
+}
+
+-- **************************************************************
+--
+-- UPLINK UE ASSOCIATED LPPA TRANSPORT
+--
+-- **************************************************************
+
+UplinkUEAssociatedLPPaTransport ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       {{UplinkUEAssociatedLPPaTransport-IEs}},
+	...
+}
+
+UplinkUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID			CRITICALITY reject	TYPE MME-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-eNB-UE-S1AP-ID			CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory	}|
+	{ ID id-Routing-ID				CRITICALITY reject	TYPE Routing-ID					PRESENCE mandatory	}|
+	{ ID id-LPPa-PDU				CRITICALITY reject	TYPE LPPa-PDU					PRESENCE mandatory	},
+	...
+}
+
+-- **************************************************************
+--
+-- DOWNLINK NON UE ASSOCIATED LPPA TRANSPORT
+--
+-- **************************************************************
+
+DownlinkNonUEAssociatedLPPaTransport ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       {{DownlinkNonUEAssociatedLPPaTransport-IEs}},
+	...
+}
+
+DownlinkNonUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-Routing-ID				CRITICALITY reject	TYPE Routing-ID					PRESENCE mandatory	}|
+	{ ID id-LPPa-PDU				CRITICALITY reject	TYPE LPPa-PDU					PRESENCE mandatory	},
+	...
+}
+
+-- **************************************************************
+--
+-- UPLINK NON UE ASSOCIATED LPPA TRANSPORT
+--
+-- **************************************************************
+
+UplinkNonUEAssociatedLPPaTransport ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container       {{UplinkNonUEAssociatedLPPaTransport-IEs}},
+	...
+}
+
+UplinkNonUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-Routing-ID				CRITICALITY reject	TYPE Routing-ID					PRESENCE mandatory	}|
+	{ ID id-LPPa-PDU				CRITICALITY reject	TYPE LPPa-PDU					PRESENCE mandatory	},
+	...
+}
+
+
+-- **************************************************************
+--
+-- E-RAB MODIFICATION INDICATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- E-RAB Modification Indication
+--
+-- **************************************************************
+
+E-RABModificationIndication ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { E-RABModificationIndicationIEs} },
+	...
+}
+
+E-RABModificationIndicationIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID							CRITICALITY reject	TYPE MME-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID							CRITICALITY reject	TYPE ENB-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-E-RABToBeModifiedListBearerModInd		CRITICALITY reject	TYPE E-RABToBeModifiedListBearerModInd		PRESENCE mandatory}|
+	{ ID id-E-RABNotToBeModifiedListBearerModInd	CRITICALITY reject	TYPE E-RABNotToBeModifiedListBearerModInd	PRESENCE optional}|
+	{ ID id-CSGMembershipInfo						CRITICALITY reject	TYPE CSGMembershipInfo					PRESENCE optional}|
+-- Extension for Release 11 to support BBAI -- 
+	{ ID id-Tunnel-Information-for-BBF				CRITICALITY ignore	TYPE TunnelInformation					PRESENCE optional},
+	...
+}
+
+E-RABToBeModifiedListBearerModInd ::= E-RAB-IE-ContainerList { {E-RABToBeModifiedItemBearerModIndIEs} }
+
+E-RABToBeModifiedItemBearerModIndIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABToBeModifiedItemBearerModInd		CRITICALITY reject	TYPE E-RABToBeModifiedItemBearerModInd		PRESENCE mandatory},
+	...
+}
+
+E-RABToBeModifiedItemBearerModInd ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	transportLayerAddress			TransportLayerAddress,
+	dL-GTP-TEID						GTP-TEID,
+	iE-Extensions					ProtocolExtensionContainer { { E-RABToBeModifiedItemBearerModInd-ExtIEs} }			OPTIONAL,
+	...
+}
+
+E-RABToBeModifiedItemBearerModInd-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABNotToBeModifiedListBearerModInd ::= E-RAB-IE-ContainerList { {E-RABNotToBeModifiedItemBearerModIndIEs} }
+
+E-RABNotToBeModifiedItemBearerModIndIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABNotToBeModifiedItemBearerModInd		CRITICALITY reject	TYPE E-RABNotToBeModifiedItemBearerModInd		PRESENCE mandatory},
+	...
+}
+
+E-RABNotToBeModifiedItemBearerModInd ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	transportLayerAddress			TransportLayerAddress,
+	dL-GTP-TEID						GTP-TEID,
+	iE-Extensions					ProtocolExtensionContainer { { E-RABNotToBeModifiedItemBearerModInd-ExtIEs} }		OPTIONAL,
+	...
+}
+
+E-RABNotToBeModifiedItemBearerModInd-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CSGMembershipInfo ::= SEQUENCE {
+	cSGMembershipStatus		CSGMembershipStatus,
+	cSG-Id					CSG-Id,
+	cellAccessMode			CellAccessMode	OPTIONAL,
+	pLMNidentity			PLMNidentity	OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { { CSGMembershipInfo-ExtIEs} }		OPTIONAL,
+	...
+}
+
+CSGMembershipInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- E-RAB Modification Confirm
+--
+-- **************************************************************
+
+E-RABModificationConfirm ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container { {E-RABModificationConfirmIEs} },
+	...
+}
+
+E-RABModificationConfirmIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID							CRITICALITY ignore	TYPE MME-UE-S1AP-ID					PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID							CRITICALITY ignore	TYPE ENB-UE-S1AP-ID					PRESENCE mandatory}|
+	{ ID id-E-RABModifyListBearerModConf			CRITICALITY ignore	TYPE E-RABModifyListBearerModConf	PRESENCE optional}|
+	{ ID id-E-RABFailedToModifyListBearerModConf	CRITICALITY ignore	TYPE E-RABList						PRESENCE optional}|
+	{ ID id-E-RABToBeReleasedListBearerModConf		CRITICALITY ignore	TYPE E-RABList						PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics					CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional}|
+	{ ID id-CSGMembershipStatus						CRITICALITY ignore	TYPE CSGMembershipStatus			PRESENCE optional},
+	...
+}
+
+E-RABModifyListBearerModConf ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABModifyItemBearerModConfIEs} }
+
+E-RABModifyItemBearerModConfIEs 	S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABModifyItemBearerModConf		CRITICALITY ignore	TYPE E-RABModifyItemBearerModConf		PRESENCE mandatory},
+	...
+}
+
+E-RABModifyItemBearerModConf ::= SEQUENCE {
+	e-RAB-ID					E-RAB-ID,
+	iE-Extensions				ProtocolExtensionContainer { {E-RABModifyItemBearerModConfExtIEs} } OPTIONAL,
+	...
+}
+
+
+E-RABModifyItemBearerModConfExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+-- **************************************************************
+--
+-- UE CONTEXT MODIFICATION INDICATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE Context Modification Indication
+--
+-- **************************************************************
+
+UEContextModificationIndication ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { UEContextModificationIndicationIEs} },
+	...
+}
+
+UEContextModificationIndicationIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID			CRITICALITY reject	TYPE MME-UE-S1AP-ID			PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID			CRITICALITY reject	TYPE ENB-UE-S1AP-ID			PRESENCE mandatory}|
+	{ ID id-CSGMembershipInfo		CRITICALITY reject	TYPE CSGMembershipInfo		PRESENCE optional},
+	...
+}
+
+
+-- **************************************************************
+--
+-- UE Context Modification Confirm
+--
+-- **************************************************************
+
+UEContextModificationConfirm ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container { {UEContextModificationConfirmIEs} },
+	...
+}
+
+UEContextModificationConfirmIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY ignore	TYPE MME-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY ignore	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-CSGMembershipStatus			CRITICALITY ignore	TYPE CSGMembershipStatus		PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- UE CONTEXT SUSPEND ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE Context Suspend Request
+--
+-- **************************************************************
+
+UEContextSuspendRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { UEContextSuspendRequestIEs} },
+	...
+}
+
+UEContextSuspendRequestIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID									CRITICALITY reject	TYPE MME-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID									CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-InformationOnRecommendedCellsAndENBsForPaging	CRITICALITY ignore	TYPE InformationOnRecommendedCellsAndENBsForPaging PRESENCE optional}|
+	{ ID id-CellIdentifierAndCELevelForCECapableUEs			CRITICALITY ignore	TYPE CellIdentifierAndCELevelForCECapableUEs	PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- UE Context Suspend Response
+--
+-- **************************************************************
+
+UEContextSuspendResponse ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container { {UEContextSuspendResponseIEs} },
+	...
+}
+
+UEContextSuspendResponseIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY ignore	TYPE MME-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY ignore	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional}|
+	{ ID id-SecurityContext				CRITICALITY reject	TYPE SecurityContext			PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- UE CONTEXT RESUME ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE Context Resume Request
+--
+-- **************************************************************
+
+UEContextResumeRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { UEContextResumeRequestIEs} },
+	...
+}
+
+UEContextResumeRequestIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID										CRITICALITY reject	TYPE MME-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID									CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-E-RABFailedToResumeListResumeReq 				CRITICALITY reject	TYPE E-RABFailedToResumeListResumeReq		PRESENCE optional}|
+	{ ID id-RRC-Resume-Cause								CRITICALITY ignore	TYPE RRC-Establishment-Cause	PRESENCE optional},
+	...
+}
+
+E-RABFailedToResumeListResumeReq ::= E-RAB-IE-ContainerList { {E-RABFailedToResumeItemResumeReqIEs} }
+
+E-RABFailedToResumeItemResumeReqIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABFailedToResumeItemResumeReq	CRITICALITY reject	TYPE E-RABFailedToResumeItemResumeReq	PRESENCE mandatory},
+	...
+}
+
+E-RABFailedToResumeItemResumeReq ::= SEQUENCE {
+	e-RAB-ID							E-RAB-ID,
+	cause								Cause,
+	iE-Extensions						ProtocolExtensionContainer { { E-RABFailedToResumeItemResumeReq-ExtIEs} }		OPTIONAL,
+	...
+}
+
+E-RABFailedToResumeItemResumeReq-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- UE Context Resume Response
+--
+-- **************************************************************
+
+UEContextResumeResponse ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { UEContextResumeResponseIEs} },
+	...
+}
+
+UEContextResumeResponseIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID						CRITICALITY ignore	TYPE MME-UE-S1AP-ID							PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID						CRITICALITY ignore	TYPE ENB-UE-S1AP-ID							PRESENCE mandatory}|
+	{ ID id-E-RABFailedToResumeListResumeRes	CRITICALITY reject	TYPE E-RABFailedToResumeListResumeRes		PRESENCE optional}|
+	{ ID id-CriticalityDiagnostics				CRITICALITY ignore	TYPE CriticalityDiagnostics					PRESENCE optional}|
+	{ ID id-SecurityContext						CRITICALITY reject	TYPE SecurityContext						PRESENCE optional},
+	...
+}
+
+E-RABFailedToResumeListResumeRes ::= E-RAB-IE-ContainerList { {E-RABFailedToResumeItemResumeResIEs} }
+
+E-RABFailedToResumeItemResumeResIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABFailedToResumeItemResumeRes	CRITICALITY reject	TYPE E-RABFailedToResumeItemResumeRes	PRESENCE mandatory},
+	...
+}
+
+E-RABFailedToResumeItemResumeRes ::= SEQUENCE {
+	e-RAB-ID							E-RAB-ID,
+	cause								Cause,
+	iE-Extensions						ProtocolExtensionContainer { { E-RABFailedToResumeItemResumeRes-ExtIEs} }		OPTIONAL,
+	...
+}
+
+E-RABFailedToResumeItemResumeRes-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- UE Context Resume Failure
+--
+-- **************************************************************
+
+UEContextResumeFailure ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { UEContextResumeFailureIEs} },
+	...
+}
+
+UEContextResumeFailureIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID						CRITICALITY ignore	TYPE MME-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID						CRITICALITY ignore	TYPE ENB-UE-S1AP-ID						PRESENCE mandatory}|
+	{ ID id-Cause								CRITICALITY ignore	TYPE Cause								PRESENCE mandatory}|
+	{ ID id-CriticalityDiagnostics				CRITICALITY ignore	TYPE CriticalityDiagnostics				PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- Connection Establishment Indication
+--
+-- **************************************************************
+
+ConnectionEstablishmentIndication::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container { {ConnectionEstablishmentIndicationIEs} },
+	...
+}
+
+ConnectionEstablishmentIndicationIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY ignore	TYPE MME-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY ignore	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-UERadioCapability			CRITICALITY ignore	TYPE UERadioCapability			PRESENCE optional }|
+	{ ID id-EnhancedCoverageRestricted	CRITICALITY ignore	TYPE EnhancedCoverageRestricted	PRESENCE optional }|
+	{ ID id-DL-CP-SecurityInformation	CRITICALITY ignore	TYPE DL-CP-SecurityInformation	PRESENCE optional },
+	...
+}
+
+-- **************************************************************
+--
+-- Retrieve UE Information 
+--
+-- **************************************************************
+
+RetrieveUEInformation ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { { RetrieveUEInformationIEs} },
+	...
+}
+
+RetrieveUEInformationIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-S-TMSI						CRITICALITY reject	TYPE S-TMSI				PRESENCE mandatory},
+...
+
+}
+
+
+-- **************************************************************
+
+-- UE Information Transfer
+--
+-- **************************************************************
+UEInformationTransfer ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container       { {  UEInformationTransferIEs} },
+	...
+}
+
+UEInformationTransferIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-S-TMSI						CRITICALITY reject 	TYPE S-TMSI						PRESENCE mandatory}|
+	{ ID id-UE-Level-QoS-Parameters		CRITICALITY ignore	TYPE E-RABLevelQoSParameters	PRESENCE optional}|
+	{ ID id-UERadioCapability			CRITICALITY ignore	TYPE UERadioCapability			PRESENCE optional},
+	...
+}
+
+
+-- **************************************************************
+--
+-- eNB CP Relocation Indication
+--
+-- **************************************************************
+
+ENBCPRelocationIndication ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container { { ENBCPRelocationIndicationIEs} },
+	...
+}
+
+ENBCPRelocationIndicationIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-S-TMSI						CRITICALITY reject	TYPE S-TMSI						PRESENCE mandatory}|
+	{ ID id-EUTRAN-CGI					CRITICALITY ignore	TYPE EUTRAN-CGI					PRESENCE mandatory}|
+	{ ID id-TAI							CRITICALITY ignore	TYPE TAI						PRESENCE mandatory}|
+	{ ID id-UL-CP-SecurityInformation	CRITICALITY reject	TYPE UL-CP-SecurityInformation	PRESENCE mandatory},
+	...
+}
+
+
+-- **************************************************************
+--
+-- MME CP Relocation Indication
+--
+-- **************************************************************
+
+MMECPRelocationIndication ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container { { MMECPRelocationIndicationIEs} },
+	...
+}
+
+MMECPRelocationIndicationIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-MME-UE-S1AP-ID				CRITICALITY reject	TYPE MME-UE-S1AP-ID				PRESENCE mandatory}|
+	{ ID id-eNB-UE-S1AP-ID				CRITICALITY reject	TYPE ENB-UE-S1AP-ID				PRESENCE mandatory},
+	...
+}
+
+END
+
+
+
+-- **************************************************************
+--
+-- Information Element Definitions
+--
+-- **************************************************************
+
+S1AP-IEs {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-IEs (2) }
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+IMPORTS
+	id-E-RABInformationListItem,
+	id-E-RABItem,
+	id-Bearers-SubjectToStatusTransfer-Item,
+	id-Time-Synchronisation-Info,
+	id-x2TNLConfigurationInfo,
+	id-eNBX2ExtendedTransportLayerAddresses,
+	id-MDTConfiguration,
+	id-Time-UE-StayedInCell-EnhancedGranularity,
+	id-HO-Cause,
+	id-M3Configuration,
+	id-M4Configuration,
+	id-M5Configuration,
+	id-MDT-Location-Info,
+	id-SignallingBasedMDTPLMNList,
+	id-MobilityInformation,
+	id-ULCOUNTValueExtended,
+	id-DLCOUNTValueExtended,
+	id-ReceiveStatusOfULPDCPSDUsExtended,
+	id-eNBIndirectX2TransportLayerAddresses,
+	id-Muting-Availability-Indication,
+	id-Muting-Pattern-Information,
+	id-Synchronisation-Information,
+	id-uE-HistoryInformationFromTheUE,
+	id-LoggedMBSFNMDT,
+	id-SON-Information-Report,
+	id-RecommendedCellItem,
+	id-RecommendedENBItem,
+	id-ProSeUEtoNetworkRelaying,
+	id-ULCOUNTValuePDCP-SNlength18,
+	id-DLCOUNTValuePDCP-SNlength18,
+	id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18,
+	id-M6Configuration,
+	id-M7Configuration,
+	id-RAT-Type,
+	maxnoofCSGs,
+	maxnoofE-RABs,
+	maxnoofErrors,
+	maxnoofBPLMNs,
+	maxnoofPLMNsPerMME,
+	maxnoofTACs,
+	maxnoofEPLMNs,
+	maxnoofEPLMNsPlusOne,
+	maxnoofForbLACs,
+	maxnoofForbTACs,
+	maxnoofCells,
+	maxnoofCellID,
+	maxnoofDCNs,
+	maxnoofEmergencyAreaID,
+	maxnoofTAIforWarning,
+	maxnoofCellinTAI,
+	maxnoofCellinEAI,
+	maxnoofeNBX2TLAs,
+	maxnoofeNBX2ExtTLAs,
+	maxnoofeNBX2GTPTLAs,
+	maxnoofRATs,
+	maxnoofGroupIDs,
+	maxnoofMMECs,
+	maxnoofTAforMDT,
+	maxnoofCellIDforMDT,
+	maxnoofMDTPLMNs,
+	maxnoofCellsforRestart,
+	maxnoofRestartTAIs,
+	maxnoofRestartEmergencyAreaIDs,
+	maxnoofMBSFNAreaMDT,
+	maxEARFCN,
+	maxnoofCellsineNB,
+	maxnoofRecommendedCells,
+	maxnoofRecommendedENBs
+
+
+
+FROM S1AP-Constants
+
+	Criticality,
+	ProcedureCode,
+	ProtocolIE-ID,
+	TriggeringMessage
+FROM S1AP-CommonDataTypes
+
+	ProtocolExtensionContainer{},
+	S1AP-PROTOCOL-EXTENSION,
+	ProtocolIE-SingleContainer{},
+	S1AP-PROTOCOL-IES
+
+FROM S1AP-Containers;	
+
+-- A
+
+Additional-GUTI::= SEQUENCE {
+	gUMMEI					GUMMEI,
+	m-TMSI					M-TMSI,
+	iE-Extensions			ProtocolExtensionContainer { {Additional-GUTI-ExtIEs} } OPTIONAL,
+	...
+}
+
+Additional-GUTI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+AreaScopeOfMDT ::= CHOICE {	
+	cellBased					CellBasedMDT,
+	tABased						TABasedMDT,
+	pLMNWide					NULL,
+	...,
+	tAIBased					TAIBasedMDT
+}
+
+AllocationAndRetentionPriority ::= SEQUENCE {
+	priorityLevel				PriorityLevel,
+	pre-emptionCapability		Pre-emptionCapability,
+	pre-emptionVulnerability	Pre-emptionVulnerability,
+	iE-Extensions				ProtocolExtensionContainer { {AllocationAndRetentionPriority-ExtIEs} } OPTIONAL,
+	...
+}
+
+AllocationAndRetentionPriority-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+AssistanceDataForCECapableUEs ::= SEQUENCE {
+	cellIdentifierAndCELevelForCECapableUEs		CellIdentifierAndCELevelForCECapableUEs,
+	iE-Extensions								ProtocolExtensionContainer { { InformationForCECapableUEs-ExtIEs} } OPTIONAL,
+	...
+}
+
+InformationForCECapableUEs-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+AssistanceDataForPaging ::= SEQUENCE {
+	assistanceDataForRecommendedCells	AssistanceDataForRecommendedCells		OPTIONAL,
+	assistanceDataForCECapableUEs		AssistanceDataForCECapableUEs			OPTIONAL,
+	pagingAttemptInformation			PagingAttemptInformation				OPTIONAL,
+	iE-Extensions						ProtocolExtensionContainer { { AssistanceDataForPaging-ExtIEs} }	OPTIONAL,
+	...
+}
+
+AssistanceDataForPaging-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+AssistanceDataForRecommendedCells ::= SEQUENCE {
+	recommendedCellsForPaging	RecommendedCellsForPaging, 
+	iE-Extensions				ProtocolExtensionContainer { { AssistanceDataForRecommendedCells-ExtIEs} }	OPTIONAL,
+	...
+}
+
+AssistanceDataForRecommendedCells-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- B
+
+Bearers-SubjectToStatusTransferList ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { { Bearers-SubjectToStatusTransfer-ItemIEs } }
+
+Bearers-SubjectToStatusTransfer-ItemIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-Bearers-SubjectToStatusTransfer-Item	CRITICALITY ignore	TYPE Bearers-SubjectToStatusTransfer-Item 	PRESENCE mandatory	},
+	...
+}
+
+Bearers-SubjectToStatusTransfer-Item ::= SEQUENCE {
+	e-RAB-ID								E-RAB-ID,
+	uL-COUNTvalue							COUNTvalue,
+	dL-COUNTvalue							COUNTvalue,
+	receiveStatusofULPDCPSDUs				ReceiveStatusofULPDCPSDUs			OPTIONAL,
+	iE-Extensions							ProtocolExtensionContainer { {Bearers-SubjectToStatusTransfer-ItemExtIEs} } OPTIONAL,
+	...
+}
+
+Bearers-SubjectToStatusTransfer-ItemExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-ULCOUNTValueExtended						CRITICALITY ignore	EXTENSION COUNTValueExtended				PRESENCE optional}|
+	{ ID id-DLCOUNTValueExtended						CRITICALITY ignore	EXTENSION COUNTValueExtended				PRESENCE optional}|
+	{ ID id-ReceiveStatusOfULPDCPSDUsExtended			CRITICALITY ignore	EXTENSION ReceiveStatusOfULPDCPSDUsExtended		PRESENCE optional}|
+	{ ID id-ULCOUNTValuePDCP-SNlength18					CRITICALITY ignore	EXTENSION COUNTvaluePDCP-SNlength18			PRESENCE optional}|
+	{ ID id-DLCOUNTValuePDCP-SNlength18					CRITICALITY ignore	EXTENSION COUNTvaluePDCP-SNlength18			PRESENCE optional}|
+	{ ID id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18	CRITICALITY ignore	EXTENSION ReceiveStatusOfULPDCPSDUsPDCP-SNlength18	PRESENCE optional},
+	...
+}
+
+BearerType ::= ENUMERATED {
+	non-IP,
+	...
+}
+
+BitRate	::= INTEGER (0..10000000000) 
+
+BPLMNs ::= SEQUENCE (SIZE(1.. maxnoofBPLMNs)) OF PLMNidentity
+
+BroadcastCancelledAreaList ::= CHOICE {
+	cellID-Cancelled				CellID-Cancelled,
+	tAI-Cancelled					TAI-Cancelled,
+	emergencyAreaID-Cancelled		EmergencyAreaID-Cancelled,
+	...
+}
+
+BroadcastCompletedAreaList ::= CHOICE {
+	cellID-Broadcast				CellID-Broadcast,
+	tAI-Broadcast					TAI-Broadcast,
+	emergencyAreaID-Broadcast		EmergencyAreaID-Broadcast,
+	...
+}
+
+
+-- C
+
+CancelledCellinEAI ::= SEQUENCE (SIZE(1..maxnoofCellinEAI)) OF CancelledCellinEAI-Item
+
+CancelledCellinEAI-Item ::= SEQUENCE {
+	eCGI					EUTRAN-CGI,
+	numberOfBroadcasts		NumberOfBroadcasts,
+	iE-Extensions			ProtocolExtensionContainer { {CancelledCellinEAI-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+CancelledCellinEAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CancelledCellinTAI ::= SEQUENCE (SIZE(1..maxnoofCellinTAI)) OF CancelledCellinTAI-Item
+
+CancelledCellinTAI-Item ::= SEQUENCE{
+	eCGI				EUTRAN-CGI,
+	numberOfBroadcasts	NumberOfBroadcasts,
+	iE-Extensions		ProtocolExtensionContainer { {CancelledCellinTAI-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+CancelledCellinTAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+Cause ::= CHOICE {
+	radioNetwork		CauseRadioNetwork,
+	transport			CauseTransport,
+	nas					CauseNas,
+	protocol			CauseProtocol,
+	misc				CauseMisc,
+	...
+}
+
+CauseMisc ::= ENUMERATED {
+	control-processing-overload,
+	not-enough-user-plane-processing-resources,
+	hardware-failure,
+	om-intervention,
+	unspecified,
+	unknown-PLMN,
+...
+}
+
+CauseProtocol ::= ENUMERATED {
+	transfer-syntax-error,
+	abstract-syntax-error-reject,
+	abstract-syntax-error-ignore-and-notify,
+	message-not-compatible-with-receiver-state,
+	semantic-error,
+	abstract-syntax-error-falsely-constructed-message,
+	unspecified,
+	...
+}
+
+CauseRadioNetwork ::= ENUMERATED {
+	unspecified,
+	tx2relocoverall-expiry,
+	successful-handover,
+	release-due-to-eutran-generated-reason,
+	handover-cancelled,	
+	partial-handover,	
+	ho-failure-in-target-EPC-eNB-or-target-system,
+	ho-target-not-allowed,
+	tS1relocoverall-expiry,
+	tS1relocprep-expiry,
+	cell-not-available,
+	unknown-targetID,
+	no-radio-resources-available-in-target-cell,
+	unknown-mme-ue-s1ap-id,
+	unknown-enb-ue-s1ap-id,
+	unknown-pair-ue-s1ap-id,
+	handover-desirable-for-radio-reason,
+	time-critical-handover,
+	resource-optimisation-handover,
+	reduce-load-in-serving-cell,
+	user-inactivity,
+	radio-connection-with-ue-lost,
+	load-balancing-tau-required,
+	cs-fallback-triggered,
+	ue-not-available-for-ps-service,
+	radio-resources-not-available,
+	failure-in-radio-interface-procedure,
+	invalid-qos-combination,
+	interrat-redirection,
+	interaction-with-other-procedure,
+	unknown-E-RAB-ID,
+	multiple-E-RAB-ID-instances,
+	encryption-and-or-integrity-protection-algorithms-not-supported,
+	s1-intra-system-handover-triggered,
+	s1-inter-system-handover-triggered,
+	x2-handover-triggered,
+	...,
+	redirection-towards-1xRTT,
+	not-supported-QCI-value,
+	invalid-CSG-Id,
+	release-due-to-pre-emption
+
+}
+
+CauseTransport ::= ENUMERATED {
+	transport-resource-unavailable,
+	unspecified,
+	...
+}
+
+CauseNas ::= ENUMERATED {
+	normal-release,
+	authentication-failure,
+	detach,
+	unspecified,
+	...,
+	csg-subscription-expiry
+}
+
+CellAccessMode ::= ENUMERATED {
+	hybrid, 
+	...
+}
+
+CellIdentifierAndCELevelForCECapableUEs ::= SEQUENCE {
+	global-Cell-ID		EUTRAN-CGI,
+	cELevel				CELevel,
+	iE-Extensions		ProtocolExtensionContainer { { CellIdentifierAndCELevelForCECapableUEs-ExtIEs} } OPTIONAL,
+	...
+}
+
+CellIdentifierAndCELevelForCECapableUEs-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- Coverage Enhancement level encoded according to TS 36.331 [16] --
+CELevel ::= OCTET STRING
+
+CE-mode-B-SupportIndicator ::= ENUMERATED {
+	supported,
+	...
+}
+
+CellIdentity ::= BIT STRING (SIZE (28))
+
+CellID-Broadcast ::= SEQUENCE (SIZE(1..maxnoofCellID)) OF CellID-Broadcast-Item
+
+CellID-Broadcast-Item ::= SEQUENCE {
+	eCGI				EUTRAN-CGI,
+	iE-Extensions		ProtocolExtensionContainer { {CellID-Broadcast-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+CellID-Broadcast-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CellID-Cancelled::= SEQUENCE (SIZE(1..maxnoofCellID)) OF CellID-Cancelled-Item
+
+CellID-Cancelled-Item ::= SEQUENCE {
+	eCGI				EUTRAN-CGI,
+	numberOfBroadcasts	NumberOfBroadcasts,
+	iE-Extensions		ProtocolExtensionContainer { {CellID-Cancelled-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+CellID-Cancelled-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CellBasedMDT::= SEQUENCE {
+	cellIdListforMDT	CellIdListforMDT,
+	iE-Extensions		ProtocolExtensionContainer { {CellBasedMDT-ExtIEs} } OPTIONAL,
+	...
+}
+
+CellBasedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CellIdListforMDT ::= SEQUENCE (SIZE(1..maxnoofCellIDforMDT)) OF EUTRAN-CGI
+
+Cdma2000PDU	::= OCTET STRING
+
+Cdma2000RATType ::= ENUMERATED {
+	hRPD,
+	onexRTT,
+	...
+}
+
+Cdma2000SectorID ::= OCTET STRING
+
+Cdma2000HOStatus ::= ENUMERATED {
+	hOSuccess,
+	hOFailure,
+	...
+}
+
+Cdma2000HORequiredIndication ::= ENUMERATED {
+	true,
+	...
+}
+
+Cdma2000OneXSRVCCInfo ::= SEQUENCE {
+	cdma2000OneXMEID			Cdma2000OneXMEID,
+	cdma2000OneXMSI				Cdma2000OneXMSI,
+	cdma2000OneXPilot			Cdma2000OneXPilot,
+	iE-Extensions				ProtocolExtensionContainer { {Cdma2000OneXSRVCCInfo-ExtIEs} } OPTIONAL,
+	...
+}
+
+Cdma2000OneXSRVCCInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+Cdma2000OneXMEID ::= OCTET STRING
+
+Cdma2000OneXMSI ::= OCTET STRING
+
+Cdma2000OneXPilot ::= OCTET STRING
+
+Cdma2000OneXRAND ::= OCTET STRING
+
+
+Cell-Size ::= ENUMERATED {verysmall, small, medium, large, ...}
+
+CellType ::= SEQUENCE {
+	cell-Size				Cell-Size,
+	iE-Extensions			ProtocolExtensionContainer { { CellType-ExtIEs}}	OPTIONAL,
+	...
+}
+
+CellType-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CGI ::= SEQUENCE {
+	pLMNidentity	PLMNidentity,
+	lAC				LAC,
+	cI				CI,
+	rAC				RAC												OPTIONAL,
+	iE-Extensions	ProtocolExtensionContainer { {CGI-ExtIEs} }		OPTIONAL,
+	...
+	}
+
+CGI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CI					::= OCTET STRING (SIZE (2))
+
+CNDomain ::= ENUMERATED {
+	ps, 
+	cs 
+}
+
+ConcurrentWarningMessageIndicator ::= ENUMERATED {
+	true
+}
+
+Correlation-ID		::= OCTET STRING (SIZE (4))
+
+CSFallbackIndicator ::= ENUMERATED { 
+	cs-fallback-required,
+	...,
+	cs-fallback-high-priority 
+}
+
+AdditionalCSFallbackIndicator ::= ENUMERATED { 
+	no-restriction,
+	restriction,
+	...
+}
+
+CSG-Id		::= BIT STRING (SIZE (27))
+
+
+CSG-IdList ::= SEQUENCE (SIZE (1.. maxnoofCSGs)) OF CSG-IdList-Item
+
+CSG-IdList-Item ::= SEQUENCE {
+	cSG-Id			CSG-Id,
+	iE-Extensions	ProtocolExtensionContainer { {CSG-IdList-Item-ExtIEs} }	OPTIONAL,
+	...
+}
+
+CSG-IdList-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CSGMembershipStatus ::= ENUMERATED { 
+	member, 
+	not-member
+}
+
+
+COUNTvalue ::= SEQUENCE {
+	pDCP-SN			PDCP-SN,
+	hFN				HFN,
+	iE-Extensions	ProtocolExtensionContainer { {COUNTvalue-ExtIEs} } OPTIONAL,
+	...
+}
+COUNTvalue-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+COUNTValueExtended  ::= SEQUENCE {
+	pDCP-SNExtended		PDCP-SNExtended,
+	hFNModified			HFNModified,
+	iE-Extensions		ProtocolExtensionContainer { {COUNTValueExtended-ExtIEs} } OPTIONAL,
+	...
+}
+
+COUNTValueExtended-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+COUNTvaluePDCP-SNlength18 ::= SEQUENCE {
+	pDCP-SNlength18				PDCP-SNlength18,
+	hFNforPDCP-SNlength18		HFNforPDCP-SNlength18,
+	iE-Extensions				ProtocolExtensionContainer { {COUNTvaluePDCP-SNlength18-ExtIEs} } OPTIONAL,
+	...
+}
+
+COUNTvaluePDCP-SNlength18-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+Coverage-Level ::= ENUMERATED {
+	extendedcoverage,
+	...
+}
+
+CriticalityDiagnostics ::= SEQUENCE {
+	procedureCode					ProcedureCode														OPTIONAL,
+	triggeringMessage				TriggeringMessage													OPTIONAL,
+	procedureCriticality			Criticality															OPTIONAL,
+	iEsCriticalityDiagnostics		CriticalityDiagnostics-IE-List										OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer {{CriticalityDiagnostics-ExtIEs}}		OPTIONAL,
+	...
+}
+
+CriticalityDiagnostics-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1.. maxnoofErrors)) OF CriticalityDiagnostics-IE-Item
+
+CriticalityDiagnostics-IE-Item ::= SEQUENCE {
+	iECriticality			Criticality,
+	iE-ID					ProtocolIE-ID,
+	typeOfError 			TypeOfError,
+	iE-Extensions			ProtocolExtensionContainer {{CriticalityDiagnostics-IE-Item-ExtIEs}}	OPTIONAL,
+	...
+}
+
+CriticalityDiagnostics-IE-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+-- D
+
+DataCodingScheme ::= BIT STRING (SIZE (8))
+
+DCN-ID ::= INTEGER (0..65535)
+
+ServedDCNs ::= SEQUENCE (SIZE(0..maxnoofDCNs)) OF ServedDCNsItem
+
+ServedDCNsItem ::= SEQUENCE {
+	dCN-ID						DCN-ID,
+	relativeDCNCapacity			RelativeMMECapacity,
+	iE-Extensions			ProtocolExtensionContainer { {ServedDCNsItem-ExtIEs} }	OPTIONAL,
+	...
+}
+
+ServedDCNsItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+DL-CP-SecurityInformation ::= SEQUENCE {
+	dl-NAS-MAC				DL-NAS-MAC,
+	iE-Extensions			ProtocolExtensionContainer { { DL-CP-SecurityInformation-ExtIEs} }	OPTIONAL,
+	...
+}
+
+DL-CP-SecurityInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+DL-Forwarding ::= ENUMERATED {
+	dL-Forwarding-proposed,
+	...
+}
+
+DL-NAS-MAC ::= BIT STRING (SIZE (16))
+
+Direct-Forwarding-Path-Availability ::= ENUMERATED {
+	directPathAvailable,
+	...
+}
+
+Data-Forwarding-Not-Possible ::= ENUMERATED {
+	data-Forwarding-not-Possible,
+	...
+}
+
+DLNASPDUDeliveryAckRequest ::= ENUMERATED {
+	requested,
+	...
+}
+
+-- E
+
+EARFCN ::= INTEGER(0..maxEARFCN, ...)
+
+ECGIList ::= SEQUENCE (SIZE(1..maxnoofCellID)) OF EUTRAN-CGI
+
+PWSfailedECGIList ::= SEQUENCE (SIZE(1..maxnoofCellsineNB)) OF EUTRAN-CGI
+
+EmergencyAreaIDList ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaID
+
+EmergencyAreaID ::= OCTET STRING (SIZE (3))
+
+EmergencyAreaID-Broadcast ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaID-Broadcast-Item
+
+EmergencyAreaID-Broadcast-Item ::= SEQUENCE {
+	emergencyAreaID			EmergencyAreaID,
+	completedCellinEAI		CompletedCellinEAI,
+	iE-Extensions			ProtocolExtensionContainer { {EmergencyAreaID-Broadcast-Item-ExtIEs} }	OPTIONAL,
+	...
+}
+
+EmergencyAreaID-Broadcast-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+EmergencyAreaID-Cancelled ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaID-Cancelled-Item
+
+EmergencyAreaID-Cancelled-Item ::= SEQUENCE {
+	emergencyAreaID			EmergencyAreaID,
+	cancelledCellinEAI		CancelledCellinEAI,
+	iE-Extensions			ProtocolExtensionContainer { {EmergencyAreaID-Cancelled-Item-ExtIEs} }	OPTIONAL,
+	...
+}
+
+EmergencyAreaID-Cancelled-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CompletedCellinEAI ::= SEQUENCE (SIZE(1..maxnoofCellinEAI)) OF CompletedCellinEAI-Item
+
+CompletedCellinEAI-Item ::= SEQUENCE {
+	eCGI					EUTRAN-CGI,
+	iE-Extensions			ProtocolExtensionContainer { {CompletedCellinEAI-Item-ExtIEs} }	OPTIONAL,
+	...
+}
+
+CompletedCellinEAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ECGI-List ::= SEQUENCE (SIZE(1..maxnoofCellsineNB)) OF EUTRAN-CGI
+
+EmergencyAreaIDListForRestart	::= SEQUENCE (SIZE(1..maxnoofRestartEmergencyAreaIDs)) OF EmergencyAreaID
+
+ENB-ID ::= CHOICE {
+	macroENB-ID			BIT STRING (SIZE(20)),
+	homeENB-ID			BIT STRING (SIZE(28)),
+	... ,
+	short-macroENB-ID 	BIT STRING (SIZE(18)),
+	long-macroENB-ID		BIT STRING (SIZE(21))
+}
+
+GERAN-Cell-ID ::= SEQUENCE {
+	lAI				LAI,
+    rAC				RAC, 
+	cI				CI,
+	iE-Extensions			ProtocolExtensionContainer { { GERAN-Cell-ID-ExtIEs} }	OPTIONAL,
+	...
+}
+
+GERAN-Cell-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+Global-ENB-ID ::= SEQUENCE {
+	pLMNidentity			PLMNidentity,
+	eNB-ID					ENB-ID,
+	iE-Extensions			ProtocolExtensionContainer { {GlobalENB-ID-ExtIEs} }		OPTIONAL,
+	...
+}
+
+GlobalENB-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GUMMEIList::= SEQUENCE (SIZE (1.. maxnoofMMECs)) OF GUMMEI
+
+ENB-StatusTransfer-TransparentContainer		::= SEQUENCE {
+	bearers-SubjectToStatusTransferList		Bearers-SubjectToStatusTransferList,
+	iE-Extensions			ProtocolExtensionContainer { {ENB-StatusTransfer-TransparentContainer-ExtIEs} }	OPTIONAL,
+	...
+}
+
+ENB-StatusTransfer-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ENB-UE-S1AP-ID				::= INTEGER (0..16777215)
+
+ENBname ::= PrintableString (SIZE (1..150,...))
+
+ENBX2TLAs ::= SEQUENCE (SIZE(1.. maxnoofeNBX2TLAs)) OF TransportLayerAddress
+
+EncryptionAlgorithms ::= BIT STRING (SIZE (16,...))
+
+EnhancedCoverageRestricted ::= ENUMERATED {
+	restricted,
+	...
+}
+
+EPLMNs ::= SEQUENCE (SIZE(1..maxnoofEPLMNs)) OF PLMNidentity
+EventType	::= ENUMERATED {
+	direct,
+	change-of-serve-cell,
+	stop-change-of-serve-cell,
+	...
+}
+
+E-RAB-ID		::= INTEGER (0..15, ...)
+
+E-RABInformationList	::= SEQUENCE (SIZE (1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { { E-RABInformationListIEs } }
+
+E-RABInformationListIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABInformationListItem			CRITICALITY ignore	TYPE E-RABInformationListItem			PRESENCE mandatory	},
+	...
+}
+
+E-RABInformationListItem ::= SEQUENCE {
+	e-RAB-ID						E-RAB-ID,
+	dL-Forwarding					DL-Forwarding		OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {E-RABInformationListItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+E-RABInformationListItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+E-RABList ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABItemIEs} }
+
+E-RABItemIEs 	S1AP-PROTOCOL-IES ::= {
+	{ ID id-E-RABItem	 CRITICALITY ignore 	TYPE E-RABItem 	PRESENCE mandatory },
+	...
+}
+
+E-RABItem ::= SEQUENCE {
+	e-RAB-ID					E-RAB-ID,
+	cause						Cause,
+	iE-Extensions				ProtocolExtensionContainer { {E-RABItem-ExtIEs} } OPTIONAL,
+	...
+}
+
+E-RABItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+E-RABLevelQoSParameters ::= SEQUENCE {
+	qCI			QCI,
+	allocationRetentionPriority		AllocationAndRetentionPriority,
+	gbrQosInformation					GBR-QosInformation												OPTIONAL,
+	iE-Extensions						ProtocolExtensionContainer { {E-RABQoSParameters-ExtIEs} }	OPTIONAL,
+	...
+}
+
+E-RABQoSParameters-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+EUTRAN-CGI ::= SEQUENCE {
+	pLMNidentity			PLMNidentity,
+	cell-ID					CellIdentity,
+	iE-Extensions			ProtocolExtensionContainer { {EUTRAN-CGI-ExtIEs} } OPTIONAL,
+	...
+}
+
+EUTRAN-CGI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+EUTRANRoundTripDelayEstimationInfo ::= INTEGER (0..2047)
+
+ExpectedUEBehaviour ::= SEQUENCE {
+	expectedActivity		ExpectedUEActivityBehaviour OPTIONAL,
+	expectedHOInterval		ExpectedHOInterval		 	OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { { ExpectedUEBehaviour-ExtIEs} } OPTIONAL,
+	...
+}
+
+ExpectedUEBehaviour-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ExpectedUEActivityBehaviour ::= SEQUENCE {
+	expectedActivityPeriod					ExpectedActivityPeriod					OPTIONAL,
+	expectedIdlePeriod						ExpectedIdlePeriod						OPTIONAL,
+	sourceofUEActivityBehaviourInformation	SourceOfUEActivityBehaviourInformation	OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { { ExpectedUEActivityBehaviour-ExtIEs} } OPTIONAL,
+	...
+}
+
+ExpectedUEActivityBehaviour-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ExpectedActivityPeriod ::= INTEGER (1..30|40|50|60|80|100|120|150|180|181,...)
+
+ExpectedIdlePeriod ::= INTEGER (1..30|40|50|60|80|100|120|150|180|181,...)
+
+SourceOfUEActivityBehaviourInformation ::= ENUMERATED {
+	subscription-information,
+	statistics,
+	...
+}
+
+ExpectedHOInterval ::= ENUMERATED {
+	sec15, sec30, sec60, sec90, sec120, sec180, long-time,
+	...
+}
+
+ExtendedRNC-ID					::= INTEGER (4096..65535)
+
+ExtendedRepetitionPeriod ::= INTEGER (4096..131071) 
+
+Extended-UEIdentityIndexValue ::= BIT STRING (SIZE (14))
+
+-- F
+
+ForbiddenInterRATs ::= ENUMERATED {
+	all,
+	geran,
+	utran,
+	cdma2000,
+	...,
+	geranandutran,
+	cdma2000andutran
+
+}
+
+ForbiddenTAs ::= SEQUENCE (SIZE(1.. maxnoofEPLMNsPlusOne)) OF ForbiddenTAs-Item
+
+ForbiddenTAs-Item ::= SEQUENCE {
+	pLMN-Identity		PLMNidentity,
+	forbiddenTACs		ForbiddenTACs,
+	iE-Extensions		ProtocolExtensionContainer { {ForbiddenTAs-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+ForbiddenTAs-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ForbiddenTACs ::= SEQUENCE (SIZE(1..maxnoofForbTACs)) OF TAC
+
+ForbiddenLAs ::= SEQUENCE (SIZE(1..maxnoofEPLMNsPlusOne)) OF ForbiddenLAs-Item
+
+ForbiddenLAs-Item ::= SEQUENCE {
+	pLMN-Identity		PLMNidentity,
+	forbiddenLACs		ForbiddenLACs,
+	iE-Extensions		ProtocolExtensionContainer { {ForbiddenLAs-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+ForbiddenLAs-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ForbiddenLACs ::= SEQUENCE (SIZE(1..maxnoofForbLACs)) OF LAC
+
+-- G
+
+GBR-QosInformation ::= SEQUENCE {
+	e-RAB-MaximumBitrateDL			BitRate,
+	e-RAB-MaximumBitrateUL			BitRate,
+	e-RAB-GuaranteedBitrateDL		BitRate,
+	e-RAB-GuaranteedBitrateUL		BitRate,
+	iE-Extensions					ProtocolExtensionContainer { { GBR-QosInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+GBR-QosInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+GTP-TEID					::= OCTET STRING (SIZE (4))
+
+GUMMEI			::= SEQUENCE {
+	pLMN-Identity		PLMNidentity,
+	mME-Group-ID		MME-Group-ID,
+	mME-Code			MME-Code,
+	iE-Extensions		ProtocolExtensionContainer { {GUMMEI-ExtIEs} } OPTIONAL,
+	...
+}
+
+GUMMEI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GUMMEIType ::= ENUMERATED {
+	native,
+	mapped,
+	...
+}
+
+GWContextReleaseIndication ::= ENUMERATED {
+	true,
+	...
+}
+
+-- H
+
+HandoverRestrictionList ::= SEQUENCE {
+	servingPLMN					PLMNidentity,
+	equivalentPLMNs				EPLMNs					OPTIONAL,
+	forbiddenTAs				ForbiddenTAs			OPTIONAL,
+	forbiddenLAs				ForbiddenLAs			OPTIONAL,
+	forbiddenInterRATs			ForbiddenInterRATs		OPTIONAL, 
+	iE-Extensions				ProtocolExtensionContainer { {HandoverRestrictionList-ExtIEs} }	OPTIONAL,
+	...
+}
+
+HandoverRestrictionList-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+HandoverType ::= ENUMERATED {
+	intralte,
+	ltetoutran,
+	ltetogeran,
+	utrantolte,
+	gerantolte,
+	...
+}
+
+HFN ::= INTEGER (0..1048575)
+
+HFNModified ::= INTEGER (0..131071)
+
+HFNforPDCP-SNlength18 ::= INTEGER (0..16383)
+
+-- I
+
+Masked-IMEISV ::= BIT STRING (SIZE (64))
+
+ImmediateMDT ::= SEQUENCE { 
+	measurementsToActivate		MeasurementsToActivate,
+	m1reportingTrigger			M1ReportingTrigger,
+	m1thresholdeventA2			M1ThresholdEventA2				OPTIONAL,
+-- Included in case of event-triggered, or event-triggered periodic reporting for measurement M1
+	m1periodicReporting			M1PeriodicReporting				OPTIONAL,
+-- Included in case of periodic or event-triggered periodic reporting
+	iE-Extensions				ProtocolExtensionContainer { { ImmediateMDT-ExtIEs} } OPTIONAL,
+	...
+}
+
+ImmediateMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-M3Configuration		CRITICALITY ignore	EXTENSION M3Configuration		PRESENCE conditional}|
+	{ ID id-M4Configuration		CRITICALITY ignore	EXTENSION M4Configuration		PRESENCE conditional}|
+	{ ID id-M5Configuration		CRITICALITY ignore	EXTENSION M5Configuration		PRESENCE conditional}|
+	{ ID id-MDT-Location-Info	CRITICALITY ignore	EXTENSION MDT-Location-Info		PRESENCE optional}|
+	{ ID id-M6Configuration		CRITICALITY ignore	EXTENSION M6Configuration		PRESENCE conditional}|
+	{ ID id-M7Configuration		CRITICALITY ignore	EXTENSION M7Configuration		PRESENCE conditional},
+	...
+}
+
+IMSI	::=	OCTET STRING (SIZE (3..8))
+
+InformationOnRecommendedCellsAndENBsForPaging ::= SEQUENCE {
+	recommendedCellsForPaging	RecommendedCellsForPaging,
+	recommendENBsForPaging		RecommendedENBsForPaging,
+	iE-Extensions				ProtocolExtensionContainer { { InformationOnRecommendedCellsAndENBsForPaging-ExtIEs} }	OPTIONAL,
+	...
+}
+
+InformationOnRecommendedCellsAndENBsForPaging-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+IntegrityProtectionAlgorithms ::= BIT STRING (SIZE (16,...))
+
+IntendedNumberOfPagingAttempts ::= INTEGER (1..16, ...)
+
+InterfacesToTrace ::= BIT STRING (SIZE (8))
+
+
+
+-- J
+-- K
+
+KillAllWarningMessages ::= ENUMERATED {true}
+
+-- L
+
+
+LAC	::= OCTET STRING (SIZE (2))
+
+LAI ::= SEQUENCE {
+	pLMNidentity				PLMNidentity,
+	lAC				LAC,
+	iE-Extensions			ProtocolExtensionContainer { {LAI-ExtIEs} } OPTIONAL,
+	...
+}
+
+LAI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+LastVisitedCell-Item ::= CHOICE {
+	e-UTRAN-Cell					LastVisitedEUTRANCellInformation,
+	uTRAN-Cell						LastVisitedUTRANCellInformation,
+	gERAN-Cell						LastVisitedGERANCellInformation,
+	...
+}
+LastVisitedEUTRANCellInformation ::= SEQUENCE {
+	global-Cell-ID					EUTRAN-CGI,
+	cellType						CellType,
+	time-UE-StayedInCell			Time-UE-StayedInCell,
+	iE-Extensions					ProtocolExtensionContainer { { LastVisitedEUTRANCellInformation-ExtIEs} } OPTIONAL,
+	...
+}
+LastVisitedEUTRANCellInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+-- Extension for Rel-11 to support enhanced granularity for time UE stayed in cell --
+	{ ID id-Time-UE-StayedInCell-EnhancedGranularity	CRITICALITY ignore	EXTENSION Time-UE-StayedInCell-EnhancedGranularity	PRESENCE optional}|
+	{ ID id-HO-Cause									CRITICALITY ignore	EXTENSION Cause							PRESENCE optional},
+	...
+}
+LastVisitedUTRANCellInformation	::= OCTET STRING
+
+LastVisitedGERANCellInformation ::= CHOICE {
+	undefined						NULL,
+	...
+}
+
+L3-Information				::= OCTET STRING
+-- This is a dummy IE used only as a reference to the actual definition in relevant specification.
+
+LPPa-PDU ::=  OCTET STRING
+
+LHN-ID ::=  OCTET STRING(SIZE (32..256))
+
+Links-to-log ::= ENUMERATED {uplink, downlink, both-uplink-and-downlink, ...} 
+
+ListeningSubframePattern ::= SEQUENCE {
+	pattern-period				ENUMERATED {ms1280, ms2560, ms5120, ms10240, ...},
+	pattern-offset				INTEGER (0..10239, ...),
+	iE-Extensions				ProtocolExtensionContainer { { ListeningSubframePattern-ExtIEs} } OPTIONAL,
+	...
+}
+
+ListeningSubframePattern-ExtIEs	S1AP-PROTOCOL-EXTENSION ::= {
+...
+}
+
+LoggedMDT ::= SEQUENCE {
+	loggingInterval				LoggingInterval,
+	loggingDuration				LoggingDuration,
+	iE-Extensions				ProtocolExtensionContainer { {LoggedMDT-ExtIEs} } OPTIONAL,
+	...
+}
+
+LoggedMDT-ExtIEs	S1AP-PROTOCOL-EXTENSION ::= {
+...
+}
+
+LoggingInterval ::= ENUMERATED {ms128, ms256, ms512, ms1024, ms2048, ms3072, ms4096, ms6144}
+
+LoggingDuration ::= ENUMERATED {m10, m20, m40, m60, m90, m120}
+
+LoggedMBSFNMDT ::= SEQUENCE {
+	loggingInterval				LoggingInterval,
+	loggingDuration				LoggingDuration,
+	mBSFN-ResultToLog			MBSFN-ResultToLog		OPTIONAL,
+	iE-Extensions				ProtocolExtensionContainer { { LoggedMBSFNMDT-ExtIEs } } OPTIONAL,
+	...
+}
+
+LoggedMBSFNMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- M
+
+M3Configuration ::= SEQUENCE {
+	m3period			M3period,
+	iE-Extensions		ProtocolExtensionContainer { { M3Configuration-ExtIEs} } OPTIONAL,
+	...
+}
+
+M3Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M3period ::= ENUMERATED {ms100, ms1000, ms10000, ... } 
+
+M4Configuration ::= SEQUENCE {
+	m4period			M4period,
+	m4-links-to-log		Links-to-log,
+	iE-Extensions		ProtocolExtensionContainer { { M4Configuration-ExtIEs} } OPTIONAL,
+	...
+}
+
+M4Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M4period ::= ENUMERATED {ms1024, ms2048, ms5120, ms10240, min1, ... } 
+
+M5Configuration ::= SEQUENCE {
+	m5period			M5period,
+	m5-links-to-log		Links-to-log,
+	iE-Extensions		ProtocolExtensionContainer { { M5Configuration-ExtIEs} } OPTIONAL,
+	...
+}
+
+M5Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M5period ::= ENUMERATED {ms1024, ms2048, ms5120, ms10240, min1, ... } 
+
+M6Configuration ::= SEQUENCE {
+	m6report-Interval	M6report-Interval,
+	m6delay-threshold	M6delay-threshold		OPTIONAL,
+-- This IE shall be present if the M6 Links to log IE is set to “uplink” or to “both-uplink-and-downlink” --
+	m6-links-to-log		Links-to-log,
+	iE-Extensions		ProtocolExtensionContainer { { M6Configuration-ExtIEs} } OPTIONAL,
+	...
+}
+
+M6Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M6report-Interval ::= ENUMERATED { ms1024, ms2048, ms5120, ms10240, ... }
+
+M6delay-threshold ::= ENUMERATED { ms30, ms40, ms50, ms60, ms70, ms80, ms90, ms100, ms150, ms300, ms500, ms750, ... }
+
+M7Configuration ::= SEQUENCE {
+	m7period			M7period,
+	m7-links-to-log		Links-to-log,
+	iE-Extensions		ProtocolExtensionContainer { { M7Configuration-ExtIEs} } OPTIONAL,
+	...
+}
+
+M7Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M7period ::= INTEGER(1..60, ...)
+
+MDT-Activation 	::= ENUMERATED { 
+	immediate-MDT-only,
+	immediate-MDT-and-Trace,
+	logged-MDT-only,
+	...,
+	logged-MBSFN-MDT
+}
+
+MDT-Location-Info ::= BIT STRING (SIZE (8))
+
+MDT-Configuration ::= SEQUENCE {
+	mdt-Activation		MDT-Activation,
+	areaScopeOfMDT		AreaScopeOfMDT,
+	mDTMode				MDTMode,
+	iE-Extensions		ProtocolExtensionContainer { { MDT-Configuration-ExtIEs} } OPTIONAL,
+	...
+}
+MDT-Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-SignallingBasedMDTPLMNList			CRITICALITY ignore	EXTENSION MDTPLMNList	PRESENCE optional	},
+	...
+}
+
+ManagementBasedMDTAllowed ::= ENUMERATED {allowed, ...}
+
+MBSFN-ResultToLog ::= SEQUENCE (SIZE(1..maxnoofMBSFNAreaMDT)) OF MBSFN-ResultToLogInfo
+
+MBSFN-ResultToLogInfo ::= SEQUENCE {
+	mBSFN-AreaId		INTEGER (0..255)		OPTIONAL,
+	carrierFreq			EARFCN,	
+	iE-Extensions		ProtocolExtensionContainer { { MBSFN-ResultToLogInfo-ExtIEs} } OPTIONAL,
+	...
+}
+
+MBSFN-ResultToLogInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+MDTPLMNList ::= SEQUENCE (SIZE(1..maxnoofMDTPLMNs)) OF PLMNidentity
+
+PrivacyIndicator ::= ENUMERATED {
+	immediate-MDT,
+	logged-MDT,
+	...
+}
+
+MDTMode ::= CHOICE {
+	immediateMDT				ImmediateMDT,
+	loggedMDT					LoggedMDT,
+	...,
+	mDTMode-Extension			MDTMode-Extension
+}
+
+MDTMode-Extension ::= ProtocolIE-SingleContainer {{ MDTMode-ExtensionIE }}
+
+MDTMode-ExtensionIE S1AP-PROTOCOL-IES ::= {
+	{ ID id-LoggedMBSFNMDT		CRITICALITY ignore	TYPE LoggedMBSFNMDT		PRESENCE mandatory}
+}
+
+MeasurementsToActivate ::= BIT STRING (SIZE (8))
+
+MeasurementThresholdA2 ::= CHOICE { 
+	threshold-RSRP				Threshold-RSRP,
+	threshold-RSRQ				Threshold-RSRQ,
+	...
+}
+
+MessageIdentifier	::= BIT STRING (SIZE (16))
+
+MobilityInformation ::= BIT STRING (SIZE(32))
+
+MMEname ::= PrintableString (SIZE (1..150,...))
+
+MMEPagingTarget ::= CHOICE {
+	global-ENB-ID		Global-ENB-ID,
+	tAI					TAI,
+	...
+}
+
+MMERelaySupportIndicator ::= ENUMERATED {true, ...}
+
+MME-Group-ID	::= OCTET STRING (SIZE (2))
+
+MME-Code		::= OCTET STRING (SIZE (1))
+
+MME-UE-S1AP-ID	::= INTEGER (0..4294967295)
+M-TMSI			::= OCTET STRING (SIZE (4))
+
+MSClassmark2	::= OCTET STRING
+MSClassmark3	::= OCTET STRING
+
+MutingAvailabilityIndication ::= ENUMERATED {
+	available,
+	unavailable,
+	...
+}
+
+
+MutingPatternInformation ::= SEQUENCE {
+	muting-pattern-period				ENUMERATED {ms0, ms1280, ms2560, ms5120, ms10240, ...},
+	muting-pattern-offset				INTEGER (0..10239, ...)		OPTIONAL,
+	iE-Extensions						ProtocolExtensionContainer { {MutingPatternInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+MutingPatternInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- N
+
+NAS-PDU ::=  OCTET STRING
+
+NASSecurityParametersfromE-UTRAN ::= OCTET STRING
+
+NASSecurityParameterstoE-UTRAN ::= OCTET STRING
+
+NB-IoT-DefaultPagingDRX ::= ENUMERATED {
+	v128,
+	v256,
+	v512,
+	v1024,
+	...
+	}
+
+NB-IoT-Paging-eDRXInformation ::= SEQUENCE { 
+	nB-IoT-paging-eDRX-Cycle		NB-IoT-Paging-eDRX-Cycle,
+	nB-IoT-pagingTimeWindow			NB-IoT-PagingTimeWindow			OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { { NB-IoT-Paging-eDRXInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+NB-IoT-Paging-eDRXInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+NB-IoT-Paging-eDRX-Cycle ::= ENUMERATED{hf2, hf4, hf6, hf8, hf10, hf12, hf14, hf16, hf32, hf64, hf128, hf256, hf512, hf1024, ...}
+
+NB-IoT-PagingTimeWindow ::= ENUMERATED{s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, ...}
+
+NB-IoT-UEIdentityIndexValue ::= BIT STRING (SIZE (12))
+
+NextPagingAreaScope ::= ENUMERATED {
+	same,
+	changed,
+	...
+}
+
+NumberofBroadcastRequest ::= INTEGER (0..65535)
+
+NumberOfBroadcasts ::= INTEGER (0..65535)
+
+-- O
+OldBSS-ToNewBSS-Information		::= OCTET STRING
+-- This is a dummy IE used only as a reference to the actual definition in relevant specification.
+
+OverloadAction ::= ENUMERATED {
+	reject-non-emergency-mo-dt,
+	reject-rrc-cr-signalling,
+	permit-emergency-sessions-and-mobile-terminated-services-only,
+	...,
+	permit-high-priority-sessions-and-mobile-terminated-services-only,
+	reject-delay-tolerant-access,
+	permit-high-priority-sessions-and-exception-reporting-and-mobile-terminated-services-only,
+	not-accept-mo-data-or-delay-tolerant-access-from-CP-CIoT
+
+}
+
+OverloadResponse ::= CHOICE {
+	overloadAction					OverloadAction,
+	...
+}
+
+
+-- P
+
+PagingAttemptInformation ::= SEQUENCE {
+	pagingAttemptCount					PagingAttemptCount,
+	intendedNumberOfPagingAttempts		IntendedNumberOfPagingAttempts,
+	nextPagingAreaScope					NextPagingAreaScope		OPTIONAL,
+	iE-Extensions						ProtocolExtensionContainer { { PagingAttemptInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+PagingAttemptInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+PagingAttemptCount ::= INTEGER (1..16, ...)
+
+Paging-eDRXInformation ::= SEQUENCE { 
+	paging-eDRX-Cycle			Paging-eDRX-Cycle,
+	pagingTimeWindow			PagingTimeWindow			OPTIONAL,
+	iE-Extensions				ProtocolExtensionContainer { { Paging-eDRXInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+Paging-eDRXInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+Paging-eDRX-Cycle ::= ENUMERATED{hfhalf, hf1, hf2, hf4, hf6, hf8, hf10, hf12, hf14, hf16, hf32, hf64, hf128, hf256, ...}
+
+PagingTimeWindow ::= ENUMERATED{s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, ...}
+
+PagingDRX ::= ENUMERATED {
+	v32,
+	v64,
+	v128,
+	v256,
+	...
+	}
+
+PagingPriority ::= ENUMERATED {
+	priolevel1,
+	priolevel2,
+	priolevel3,
+	priolevel4,
+	priolevel5,
+	priolevel6,
+	priolevel7,
+	priolevel8,
+	...
+}
+
+PDCP-SN ::= INTEGER (0..4095)
+
+PDCP-SNExtended ::= INTEGER (0..32767)
+
+PDCP-SNlength18 ::= INTEGER (0..262143)
+
+M1PeriodicReporting ::= SEQUENCE { 
+	reportInterval				ReportIntervalMDT,
+	reportAmount				ReportAmountMDT,
+	iE-Extensions				ProtocolExtensionContainer { { M1PeriodicReporting-ExtIEs} } OPTIONAL,
+	...
+}
+
+M1PeriodicReporting-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+PLMNidentity 				::= TBCD-STRING 
+
+Port-Number		::= OCTET STRING (SIZE (2))
+
+Pre-emptionCapability ::= ENUMERATED {
+	shall-not-trigger-pre-emption,
+	may-trigger-pre-emption
+}
+
+Pre-emptionVulnerability ::= ENUMERATED {
+	not-pre-emptable,
+	pre-emptable
+}
+
+PriorityLevel				::= INTEGER { spare (0), highest (1), lowest (14), no-priority (15) } (0..15)
+
+ProSeAuthorized ::= SEQUENCE {
+	proSeDirectDiscovery		ProSeDirectDiscovery									OPTIONAL,
+	proSeDirectCommunication	ProSeDirectCommunication								OPTIONAL,
+	iE-Extensions				ProtocolExtensionContainer { {ProSeAuthorized-ExtIEs} }	OPTIONAL,
+	...
+}
+
+ProSeAuthorized-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	{ ID id-ProSeUEtoNetworkRelaying	CRITICALITY ignore	EXTENSION ProSeUEtoNetworkRelaying		PRESENCE optional},
+	...
+}
+
+ProSeDirectDiscovery ::= ENUMERATED { 
+	authorized,
+	not-authorized,
+	...
+}
+
+ProSeUEtoNetworkRelaying ::= ENUMERATED {
+	authorized,
+	not-authorized,
+	...
+}
+
+ProSeDirectCommunication ::= ENUMERATED { 
+	authorized,
+	not-authorized,
+	...
+}
+
+PS-ServiceNotAvailable ::= ENUMERATED {
+	ps-service-not-available,
+	...
+}
+
+-- Q
+
+QCI						::= INTEGER (0..255)
+
+-- R
+
+ReceiveStatusofULPDCPSDUs ::= BIT STRING (SIZE(4096))
+
+ReceiveStatusOfULPDCPSDUsExtended ::= BIT STRING (SIZE(1..16384))
+
+ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 ::= BIT STRING (SIZE(1..131072))
+
+RecommendedCellsForPaging ::= SEQUENCE {
+	recommendedCellList			RecommendedCellList,
+	iE-Extensions				ProtocolExtensionContainer { { RecommendedCellsForPaging-ExtIEs} }	OPTIONAL,
+	...
+}
+
+RecommendedCellsForPaging-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RecommendedCellList ::= SEQUENCE (SIZE(1.. maxnoofRecommendedCells)) OF ProtocolIE-SingleContainer { { RecommendedCellItemIEs } }
+
+RecommendedCellItemIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-RecommendedCellItem	CRITICALITY ignore 	TYPE RecommendedCellItem		PRESENCE mandatory },
+	...
+}
+
+RecommendedCellItem::= SEQUENCE {
+	eUTRAN-CGI				EUTRAN-CGI,
+	timeStayedInCell		INTEGER (0..4095)		OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { { RecommendedCellsForPagingItem-ExtIEs} }	OPTIONAL,
+	...
+}
+
+RecommendedCellsForPagingItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RecommendedENBsForPaging ::= SEQUENCE {
+	recommendedENBList		RecommendedENBList,
+	iE-Extensions			ProtocolExtensionContainer { { RecommendedENBsForPaging-ExtIEs} }	OPTIONAL,
+	...
+}
+
+RecommendedENBsForPaging-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RecommendedENBList::= SEQUENCE (SIZE(1.. maxnoofRecommendedENBs)) OF ProtocolIE-SingleContainer { { RecommendedENBItemIEs } }
+
+RecommendedENBItemIEs S1AP-PROTOCOL-IES ::= {
+	{ ID id-RecommendedENBItem	CRITICALITY ignore	TYPE RecommendedENBItem		PRESENCE mandatory },
+	...
+}
+
+RecommendedENBItem ::= SEQUENCE {
+	mMEPagingTarget			MMEPagingTarget,
+	iE-Extensions			ProtocolExtensionContainer { { RecommendedENBItem-ExtIEs} }	OPTIONAL,
+	...
+}
+
+RecommendedENBItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RelativeMMECapacity				::= INTEGER (0..255)
+
+RelayNode-Indicator ::= ENUMERATED {
+	true,
+	...
+}
+
+RAC					::= OCTET STRING (SIZE (1))
+
+RAT-Type ::= ENUMERATED {
+	nbiot,
+	...
+}
+
+ReportAmountMDT ::= ENUMERATED{r1, r2, r4, r8, r16, r32, r64, rinfinity}
+
+ReportIntervalMDT ::= ENUMERATED {ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240, min1, min6, min12, min30, min60} 
+
+M1ReportingTrigger ::= ENUMERATED{
+	periodic,
+	a2eventtriggered,
+	...,
+	a2eventtriggered-periodic
+}
+
+RequestType	::= SEQUENCE {
+	eventType 				EventType,
+	reportArea 				ReportArea,
+	iE-Extensions			ProtocolExtensionContainer { { RequestType-ExtIEs} }	OPTIONAL,
+	...
+}
+
+
+RequestType-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RIMTransfer ::= SEQUENCE {
+	rIMInformation			RIMInformation,
+	rIMRoutingAddress		RIMRoutingAddress		OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { { RIMTransfer-ExtIEs} }	OPTIONAL,
+	...
+}
+
+RIMTransfer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RIMInformation ::= OCTET STRING
+
+RIMRoutingAddress ::= CHOICE {
+	gERAN-Cell-ID			GERAN-Cell-ID,
+	...,
+	targetRNC-ID			TargetRNC-ID,
+	eHRPD-Sector-ID			OCTET STRING (SIZE(16))
+}
+
+ReportArea ::= ENUMERATED {
+	ecgi,
+	...
+}
+
+RepetitionPeriod ::= INTEGER (0..4095)
+
+RLFReportInformation ::= SEQUENCE {
+	uE-RLF-Report-Container							UE-RLF-Report-Container,
+	uE-RLF-Report-Container-for-extended-bands		UE-RLF-Report-Container-for-extended-bands		OPTIONAL,
+	iE-Extensions									ProtocolExtensionContainer {{ RLFReportInformation-ExtIEs}} OPTIONAL,
+	...
+}
+
+RLFReportInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RNC-ID ::= INTEGER (0..4095)
+
+RRC-Container ::= OCTET STRING
+
+RRC-Establishment-Cause ::= ENUMERATED {
+	emergency,
+	highPriorityAccess,
+	mt-Access,
+	mo-Signalling,
+	mo-Data,
+	...,
+	delay-TolerantAccess,
+	mo-VoiceCall,
+	mo-ExceptionData
+}
+
+ECGIListForRestart ::= SEQUENCE (SIZE(1..maxnoofCellsforRestart)) OF EUTRAN-CGI
+
+Routing-ID ::= INTEGER (0..255)
+
+-- S
+
+
+SecurityKey	::= BIT STRING (SIZE(256))
+
+
+
+SecurityContext ::= SEQUENCE {
+	nextHopChainingCount		INTEGER (0..7),
+	nextHopParameter			SecurityKey,
+	iE-Extensions				ProtocolExtensionContainer { { SecurityContext-ExtIEs} }	OPTIONAL,
+	...
+}
+
+
+SecurityContext-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SerialNumber ::= BIT STRING (SIZE (16))
+
+SONInformation ::= CHOICE{
+	sONInformationRequest		SONInformationRequest,
+	sONInformationReply			SONInformationReply,
+	...
+--	...,
+--	sONInformation-Extension	SONInformation-Extension
+}
+
+SONInformation-Extension ::= ProtocolIE-SingleContainer {{ SONInformation-ExtensionIE }}
+
+SONInformation-ExtensionIE S1AP-PROTOCOL-IES ::= {
+	{ ID id-SON-Information-Report	CRITICALITY ignore	TYPE SONInformationReport	PRESENCE mandatory}
+}
+
+SONInformationRequest ::= ENUMERATED { 
+	x2TNL-Configuration-Info,
+	...,
+	time-Synchronisation-Info,
+	activate-Muting,
+	deactivate-Muting}
+
+SONInformationReply ::= SEQUENCE {
+	x2TNLConfigurationInfo			X2TNLConfigurationInfo			OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer {{SONInformationReply-ExtIEs}} OPTIONAL,
+	...
+}
+
+SONInformationReply-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 9 to transfer Time synchronisation information --
+	{ID id-Time-Synchronisation-Info		CRITICALITY ignore	EXTENSION TimeSynchronisationInfo		PRESENCE optional},
+	...,
+	{ID id-Muting-Pattern-Information		CRITICALITY ignore	EXTENSION MutingPatternInformation	PRESENCE optional}
+}
+
+SONInformationReport ::= CHOICE{
+	rLFReportInformation		RLFReportInformation,
+	...
+}
+
+SONConfigurationTransfer ::= SEQUENCE {
+	targeteNB-ID					TargeteNB-ID,
+	sourceeNB-ID					SourceeNB-ID,
+	sONInformation					SONInformation,
+	iE-Extensions			ProtocolExtensionContainer { { SONConfigurationTransfer-ExtIEs} }			OPTIONAL,
+...
+}
+
+SONConfigurationTransfer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 10 to transfer the IP addresses of the eNB initiating the ANR action --
+	{ID id-x2TNLConfigurationInfo		CRITICALITY ignore	EXTENSION X2TNLConfigurationInfo				PRESENCE conditional
+	-- This IE shall be present if the SON Information IE contains the SON Information Request IE and the SON Information Request IE is set to “X2TNL Configuration Info” --}|
+-- Extension for Release 12 to transfer information concerning the source cell of synchronisation and the aggressor cell --
+	{ID id-Synchronisation-Information	CRITICALITY ignore	EXTENSION SynchronisationInformation			PRESENCE conditional
+	-- This IE shall be present if the SON Information IE contains the SON Information Request IE set to “ Activate Muting ” --},
+	...
+}
+
+
+SynchronisationInformation ::= SEQUENCE {
+	sourceStratumLevel				StratumLevel				OPTIONAL,
+	listeningSubframePattern		ListeningSubframePattern	OPTIONAL,
+	aggressoreCGI-List				ECGI-List					OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {SynchronisationInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+SynchronisationInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+Source-ToTarget-TransparentContainer ::= OCTET STRING
+-- This IE includes a transparent container from the source RAN node to the target RAN node. 
+-- The octets of the OCTET STRING are encoded according to the specifications of the target system.
+
+SourceBSS-ToTargetBSS-TransparentContainer		::= OCTET STRING
+-- This is a dummy IE used only as a reference to the actual definition in relevant specification.
+
+SourceeNB-ID ::= SEQUENCE {
+	global-ENB-ID	Global-ENB-ID,
+	selected-TAI	TAI,
+	iE-Extensions	ProtocolExtensionContainer { {SourceeNB-ID-ExtIEs} } OPTIONAL
+}
+
+SourceeNB-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SRVCCOperationNotPossible ::= ENUMERATED {
+	notPossible,
+	...
+}
+
+SRVCCOperationPossible ::= ENUMERATED {
+	possible,
+	...
+}
+
+SRVCCHOIndication ::= ENUMERATED {
+	pSandCS,
+	cSonly,
+	...
+}
+
+SourceeNB-ToTargeteNB-TransparentContainer		::= SEQUENCE {
+	rRC-Container				RRC-Container,
+	e-RABInformationList		E-RABInformationList			OPTIONAL,
+	targetCell-ID				EUTRAN-CGI,
+	subscriberProfileIDforRFP	SubscriberProfileIDforRFP		OPTIONAL,
+	uE-HistoryInformation		UE-HistoryInformation,
+	iE-Extensions				ProtocolExtensionContainer { {SourceeNB-ToTargeteNB-TransparentContainer-ExtIEs} } OPTIONAL,
+	...
+}
+
+SourceeNB-ToTargeteNB-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	{ID id-MobilityInformation				CRITICALITY ignore	EXTENSION MobilityInformation				PRESENCE optional}|
+	{ID id-uE-HistoryInformationFromTheUE	CRITICALITY ignore	EXTENSION UE-HistoryInformationFromTheUE		PRESENCE optional},
+	...
+}
+
+
+SourceRNC-ToTargetRNC-TransparentContainer		::= OCTET STRING
+-- This is a dummy IE used only as a reference to the actual definition in relevant specification.
+
+
+ServedGUMMEIs ::= SEQUENCE (SIZE (1.. maxnoofRATs)) OF ServedGUMMEIsItem
+
+ServedGUMMEIsItem ::= SEQUENCE {
+	servedPLMNs				ServedPLMNs,
+	servedGroupIDs			ServedGroupIDs,
+	servedMMECs				ServedMMECs,
+	iE-Extensions			ProtocolExtensionContainer { {ServedGUMMEIsItem-ExtIEs} }	OPTIONAL,
+	...
+}
+
+ServedGUMMEIsItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ServedGroupIDs ::= SEQUENCE (SIZE(1.. maxnoofGroupIDs)) OF MME-Group-ID
+ServedMMECs ::= SEQUENCE (SIZE(1.. maxnoofMMECs)) OF MME-Code
+
+ServedPLMNs ::= SEQUENCE (SIZE(1.. maxnoofPLMNsPerMME)) OF PLMNidentity
+
+SubscriberProfileIDforRFP ::= INTEGER (1..256) 
+
+SupportedTAs ::= SEQUENCE (SIZE(1.. maxnoofTACs)) OF SupportedTAs-Item
+
+SupportedTAs-Item ::=	SEQUENCE  {
+	tAC					TAC,
+	broadcastPLMNs		BPLMNs,
+	iE-Extensions		ProtocolExtensionContainer { {SupportedTAs-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+SupportedTAs-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	-- Extension for Release 13 to transfer RAT-Type per TAC --
+	{ID id-RAT-Type		CRITICALITY reject	EXTENSION RAT-Type		PRESENCE optional},
+	...
+}
+
+StratumLevel ::= INTEGER (0..3, ...)
+
+SynchronisationStatus ::= ENUMERATED { synchronous, asynchronous, ... }
+
+TimeSynchronisationInfo ::= SEQUENCE {
+	stratumLevel					StratumLevel,
+	synchronisationStatus			SynchronisationStatus,
+	iE-Extensions					ProtocolExtensionContainer { { TimeSynchronisationInfo-ExtIEs} } OPTIONAL,
+	...
+}
+
+TimeSynchronisationInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	-- Extension for Release 12 to transfer Muting Availability Indication --
+	{ID id-Muting-Availability-Indication		CRITICALITY ignore	EXTENSION MutingAvailabilityIndication	PRESENCE optional},
+	...
+}
+
+S-TMSI ::= SEQUENCE {
+	mMEC	MME-Code,
+	m-TMSI	M-TMSI,
+	iE-Extensions		ProtocolExtensionContainer { {S-TMSI-ExtIEs} } OPTIONAL,
+	...
+}
+
+S-TMSI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- T
+
+TAC ::= OCTET STRING (SIZE (2))
+
+TAIBasedMDT ::= SEQUENCE {
+	tAIListforMDT			TAIListforMDT,
+	iE-Extensions			ProtocolExtensionContainer { {TAIBasedMDT-ExtIEs} } OPTIONAL,
+	...
+}
+
+TAIBasedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TAIListforMDT ::= SEQUENCE (SIZE(1..maxnoofTAforMDT)) OF TAI
+
+TAIListforWarning ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAI
+
+TAI ::= SEQUENCE {
+	pLMNidentity			PLMNidentity,
+	tAC						TAC,
+	iE-Extensions			ProtocolExtensionContainer { {TAI-ExtIEs} } OPTIONAL,
+	...
+}
+
+TAI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TAI-Broadcast ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAI-Broadcast-Item
+
+TAI-Broadcast-Item ::= SEQUENCE {
+	tAI					TAI,
+	completedCellinTAI	CompletedCellinTAI,
+	iE-Extensions		ProtocolExtensionContainer { {TAI-Broadcast-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+TAI-Broadcast-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TAI-Cancelled ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAI-Cancelled-Item
+
+TAI-Cancelled-Item ::= SEQUENCE {
+	tAI					TAI,
+	cancelledCellinTAI	CancelledCellinTAI,
+	iE-Extensions		ProtocolExtensionContainer { {TAI-Cancelled-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+TAI-Cancelled-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TABasedMDT ::= SEQUENCE {
+	tAListforMDT		TAListforMDT,
+	iE-Extensions		ProtocolExtensionContainer { {TABasedMDT-ExtIEs} } OPTIONAL,
+	...
+}
+
+TABasedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TAListforMDT ::= SEQUENCE (SIZE(1..maxnoofTAforMDT)) OF TAC
+
+CompletedCellinTAI ::= SEQUENCE (SIZE(1..maxnoofCellinTAI)) OF CompletedCellinTAI-Item
+
+CompletedCellinTAI-Item ::= SEQUENCE{
+	eCGI				EUTRAN-CGI,
+	iE-Extensions		ProtocolExtensionContainer { {CompletedCellinTAI-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+CompletedCellinTAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TBCD-STRING ::= OCTET STRING (SIZE (3))
+
+TargetID ::= CHOICE {
+	targeteNB-ID		TargeteNB-ID,
+	targetRNC-ID		TargetRNC-ID,
+	cGI					CGI,
+	...
+}
+
+TargeteNB-ID ::= SEQUENCE {
+	global-ENB-ID		Global-ENB-ID,
+	selected-TAI		TAI,
+	iE-Extensions		ProtocolExtensionContainer { {TargeteNB-ID-ExtIEs} } OPTIONAL,
+	...
+}
+
+TargeteNB-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TargetRNC-ID ::= SEQUENCE {
+	lAI					LAI,
+	rAC					RAC 		OPTIONAL,
+	rNC-ID				RNC-ID,
+	extendedRNC-ID		ExtendedRNC-ID		OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { {TargetRNC-ID-ExtIEs} } OPTIONAL,
+	...
+	}
+
+
+TargetRNC-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+TargeteNB-ToSourceeNB-TransparentContainer		::= SEQUENCE {
+	rRC-Container		RRC-Container,
+	iE-Extensions		ProtocolExtensionContainer { {TargeteNB-ToSourceeNB-TransparentContainer-ExtIEs} } OPTIONAL,
+	...
+}
+
+TargeteNB-ToSourceeNB-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+Target-ToSource-TransparentContainer ::= OCTET STRING
+-- This IE includes a transparent container from the target RAN node to the source RAN node. 
+-- The octets of the OCTET STRING are coded according to the specifications of the target system.
+
+TargetRNC-ToSourceRNC-TransparentContainer		::= OCTET STRING
+-- This is a dummy IE used only as a reference to the actual definition in relevant specification.
+
+TargetBSS-ToSourceBSS-TransparentContainer		::= OCTET STRING
+-- This is a dummy IE used only as a reference to the actual definition in relevant specification.
+
+M1ThresholdEventA2 ::= SEQUENCE { 
+	measurementThreshold	MeasurementThresholdA2,
+	iE-Extensions			ProtocolExtensionContainer { { M1ThresholdEventA2-ExtIEs} } OPTIONAL,
+	...
+}
+
+M1ThresholdEventA2-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+Threshold-RSRP ::= INTEGER(0..97)
+
+Threshold-RSRQ ::= INTEGER(0..34)
+
+TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...}
+
+Time-UE-StayedInCell ::= INTEGER (0..4095)
+
+Time-UE-StayedInCell-EnhancedGranularity ::= INTEGER (0..40950)
+
+TransportInformation ::= SEQUENCE {
+	transportLayerAddress				TransportLayerAddress,
+	uL-GTP-TEID							GTP-TEID,
+	...
+}
+
+TransportLayerAddress		::= BIT STRING (SIZE(1..160, ...))
+
+TraceActivation ::= SEQUENCE {
+	e-UTRAN-Trace-ID					E-UTRAN-Trace-ID,
+	interfacesToTrace					InterfacesToTrace,
+     traceDepth							TraceDepth,
+     traceCollectionEntityIPAddress		TransportLayerAddress,
+	iE-Extensions						ProtocolExtensionContainer { { TraceActivation-ExtIEs} }	OPTIONAL,
+	...
+}
+
+TraceActivation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+-- Extension for Rel-10 to support MDT --
+	{ ID id-MDTConfiguration	CRITICALITY ignore	EXTENSION MDT-Configuration		PRESENCE optional },
+	...
+}
+
+TraceDepth ::= ENUMERATED { 
+	minimum,
+	medium,
+	maximum,
+	minimumWithoutVendorSpecificExtension,
+	mediumWithoutVendorSpecificExtension,
+	maximumWithoutVendorSpecificExtension,
+	...
+}
+
+E-UTRAN-Trace-ID ::=  OCTET STRING (SIZE (8))
+
+TrafficLoadReductionIndication ::= INTEGER (1..99)
+
+TunnelInformation ::= SEQUENCE {
+	transportLayerAddress	TransportLayerAddress,
+	uDP-Port-Number			Port-Number			OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { {Tunnel-Information-ExtIEs} } OPTIONAL,
+	...
+}
+
+Tunnel-Information-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TypeOfError ::= ENUMERATED {
+	not-understood,
+	missing,
+	...
+}
+
+TAIListForRestart ::= SEQUENCE (SIZE(1..maxnoofRestartTAIs)) OF TAI
+
+-- U
+
+UEAggregateMaximumBitrate ::= SEQUENCE {
+	uEaggregateMaximumBitRateDL		BitRate,
+	uEaggregateMaximumBitRateUL		BitRate,
+	iE-Extensions					ProtocolExtensionContainer { {UEAggregate-MaximumBitrates-ExtIEs} } OPTIONAL,
+	...
+}
+
+UEAggregate-MaximumBitrates-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+UE-RetentionInformation ::= ENUMERATED {
+	ues-retained,
+	...}
+
+UE-S1AP-IDs ::= CHOICE{
+	uE-S1AP-ID-pair		UE-S1AP-ID-pair,
+	mME-UE-S1AP-ID		MME-UE-S1AP-ID,
+	...
+}
+
+UE-S1AP-ID-pair ::= SEQUENCE{
+	mME-UE-S1AP-ID		MME-UE-S1AP-ID,
+	eNB-UE-S1AP-ID		ENB-UE-S1AP-ID,
+	iE-Extensions		ProtocolExtensionContainer { {UE-S1AP-ID-pair-ExtIEs} } OPTIONAL,
+	...
+}
+UE-S1AP-ID-pair-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+UE-associatedLogicalS1-ConnectionItem ::= SEQUENCE {
+	mME-UE-S1AP-ID		MME-UE-S1AP-ID OPTIONAL,
+	eNB-UE-S1AP-ID		ENB-UE-S1AP-ID OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { { UE-associatedLogicalS1-ConnectionItemExtIEs} } OPTIONAL,
+	...
+}
+
+
+UE-associatedLogicalS1-ConnectionItemExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+UEIdentityIndexValue	::=	BIT STRING (SIZE (10))
+
+UE-HistoryInformation ::= SEQUENCE (SIZE(1..maxnoofCells)) OF LastVisitedCell-Item
+
+UE-HistoryInformationFromTheUE ::= OCTET STRING
+-- This IE is a transparent container and shall be encoded as the VisitedCellInfoList field contained in the UEInformationResponse message as defined in TS 36.331 [16]
+
+UEPagingID ::= CHOICE {
+	s-TMSI		S-TMSI,
+	iMSI		IMSI,
+	...
+	}
+
+UERadioCapability ::= OCTET STRING
+
+UERadioCapabilityForPaging ::= OCTET STRING
+
+UE-RLF-Report-Container ::= OCTET STRING
+-- This IE is a transparent container and shall be encoded as the rlf-Report-r9 field contained in the UEInformationResponse message as defined in TS 36.331 [16]
+
+UE-RLF-Report-Container-for-extended-bands ::= OCTET STRING
+-- This IE is a transparent container and shall be encoded as the rlf-Report-v9e0 contained in the UEInformationResponse message as defined in TS 36.331 [16]
+
+UESecurityCapabilities ::= SEQUENCE {
+	encryptionAlgorithms			EncryptionAlgorithms,
+	integrityProtectionAlgorithms	IntegrityProtectionAlgorithms,
+	iE-Extensions					ProtocolExtensionContainer { { UESecurityCapabilities-ExtIEs} }	OPTIONAL,
+...
+}
+
+UESecurityCapabilities-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+UESidelinkAggregateMaximumBitrate ::= SEQUENCE {
+	uESidelinkAggregateMaximumBitRate		BitRate,
+	iE-Extensions					ProtocolExtensionContainer { {UE-Sidelink-Aggregate-MaximumBitrates-ExtIEs} } OPTIONAL,
+	...
+}
+
+UE-Sidelink-Aggregate-MaximumBitrates-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+UE-Usage-Type ::= INTEGER (0..255) 
+
+UL-CP-SecurityInformation ::= SEQUENCE {
+	ul-NAS-MAC				UL-NAS-MAC,
+	ul-NAS-Count			UL-NAS-Count,
+	iE-Extensions			ProtocolExtensionContainer { { UL-CP-SecurityInformation-ExtIEs} }	OPTIONAL,
+	...
+}
+
+UL-CP-SecurityInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+UL-NAS-MAC ::= BIT STRING (SIZE (16))
+
+UL-NAS-Count ::= BIT STRING (SIZE (5))
+
+
+UserLocationInformation ::= SEQUENCE {
+	eutran-cgi 				EUTRAN-CGI,
+	tai						TAI,
+	iE-Extensions			ProtocolExtensionContainer { { UserLocationInformation-ExtIEs} }	OPTIONAL,
+	...
+}
+
+UserLocationInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+UEUserPlaneCIoTSupportIndicator ::= ENUMERATED {
+	supported,
+	...
+}
+
+-- V
+
+VoiceSupportMatchIndicator ::= ENUMERATED { 
+	supported,
+	not-supported,
+	...
+}
+
+V2XServicesAuthorized ::= SEQUENCE {
+	vehicleUE			VehicleUE											OPTIONAL,
+	pedestrianUE 		PedestrianUE						OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { {V2XServicesAuthorized-ExtIEs} }	OPTIONAL,
+	...
+}
+
+V2XServicesAuthorized-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+VehicleUE ::= ENUMERATED { 
+	authorized,
+	not-authorized,
+	...
+}
+
+PedestrianUE ::= ENUMERATED { 
+	authorized,
+	not-authorized,
+	...
+}
+
+-- W
+
+WarningAreaList ::= CHOICE {
+	cellIDList						ECGIList,
+	trackingAreaListforWarning		TAIListforWarning,
+	emergencyAreaIDList				EmergencyAreaIDList,
+	...
+}
+
+
+WarningType ::= OCTET STRING (SIZE (2))
+
+WarningSecurityInfo ::= OCTET STRING (SIZE (50))
+
+
+WarningMessageContents ::= OCTET STRING (SIZE(1..9600))
+
+
+-- X
+
+
+X2TNLConfigurationInfo ::= SEQUENCE {
+	eNBX2TransportLayerAddresses	ENBX2TLAs,
+	iE-Extensions					ProtocolExtensionContainer { { X2TNLConfigurationInfo-ExtIEs} } OPTIONAL,
+	...
+}
+
+X2TNLConfigurationInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 10 to transfer the IPsec and U-plane addresses during ANR action --
+	{ID id-eNBX2ExtendedTransportLayerAddresses		CRITICALITY ignore	EXTENSION ENBX2ExtTLAs	PRESENCE optional}|
+-- Extension for Release 12 to transfer the IP addresses of the X2 GW --
+	{ID id-eNBIndirectX2TransportLayerAddresses	CRITICALITY ignore	EXTENSION ENBIndirectX2TransportLayerAddresses	PRESENCE optional},
+	...
+}
+
+ENBX2ExtTLAs ::= SEQUENCE (SIZE(1.. maxnoofeNBX2ExtTLAs)) OF ENBX2ExtTLA
+
+ENBX2ExtTLA ::= SEQUENCE {
+	iPsecTLA					TransportLayerAddress		OPTIONAL,
+	gTPTLAa						ENBX2GTPTLAs				OPTIONAL,
+	iE-Extensions				ProtocolExtensionContainer { { ENBX2ExtTLA-ExtIEs} } OPTIONAL,
+	...
+}
+
+ENBX2ExtTLA-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ENBX2GTPTLAs ::= SEQUENCE (SIZE(1.. maxnoofeNBX2GTPTLAs)) OF TransportLayerAddress
+
+ENBIndirectX2TransportLayerAddresses ::= SEQUENCE (SIZE(1..maxnoofeNBX2TLAs)) OF TransportLayerAddress
+
+-- Y
+-- Z
+
+END
+
+
+
+-- **************************************************************
+--
+-- Common definitions
+--
+-- **************************************************************
+
+S1AP-CommonDataTypes {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-CommonDataTypes (3) }
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+Criticality		::= ENUMERATED { reject, ignore, notify }
+
+Presence		::= ENUMERATED { optional, conditional, mandatory }
+
+PrivateIE-ID	::= CHOICE {
+	local				INTEGER (0..65535),
+	global				OBJECT IDENTIFIER
+}
+
+ProcedureCode		::= INTEGER (0..255)
+
+ProtocolExtensionID	::= INTEGER (0..65535)
+
+ProtocolIE-ID		::= INTEGER (0..65535)
+
+TriggeringMessage	::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome }
+
+END
+
+
+-- **************************************************************
+--
+-- Constant definitions
+--
+-- **************************************************************
+
+S1AP-Constants { 
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-Constants (4) } 
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+	ProcedureCode,
+	ProtocolIE-ID
+
+FROM S1AP-CommonDataTypes;
+
+
+-- **************************************************************
+--
+-- Elementary Procedures
+--
+-- **************************************************************
+
+id-HandoverPreparation						ProcedureCode ::= 0
+id-HandoverResourceAllocation				ProcedureCode ::= 1
+id-HandoverNotification						ProcedureCode ::= 2
+id-PathSwitchRequest						ProcedureCode ::= 3
+id-HandoverCancel							ProcedureCode ::= 4
+id-E-RABSetup								ProcedureCode ::= 5
+id-E-RABModify								ProcedureCode ::= 6
+id-E-RABRelease								ProcedureCode ::= 7
+id-E-RABReleaseIndication					ProcedureCode ::= 8
+id-InitialContextSetup						ProcedureCode ::= 9
+id-Paging									ProcedureCode ::= 10
+id-downlinkNASTransport						ProcedureCode ::= 11
+id-initialUEMessage							ProcedureCode ::= 12
+id-uplinkNASTransport						ProcedureCode ::= 13
+id-Reset									ProcedureCode ::= 14
+id-ErrorIndication							ProcedureCode ::= 15
+id-NASNonDeliveryIndication					ProcedureCode ::= 16
+id-S1Setup									ProcedureCode ::= 17
+id-UEContextReleaseRequest					ProcedureCode ::= 18
+id-DownlinkS1cdma2000tunnelling				ProcedureCode ::= 19
+id-UplinkS1cdma2000tunnelling				ProcedureCode ::= 20
+id-UEContextModification					ProcedureCode ::= 21
+id-UECapabilityInfoIndication				ProcedureCode ::= 22
+id-UEContextRelease							ProcedureCode ::= 23
+id-eNBStatusTransfer						ProcedureCode ::= 24
+id-MMEStatusTransfer						ProcedureCode ::= 25
+id-DeactivateTrace							ProcedureCode ::= 26
+id-TraceStart								ProcedureCode ::= 27
+id-TraceFailureIndication					ProcedureCode ::= 28
+id-ENBConfigurationUpdate					ProcedureCode ::= 29
+id-MMEConfigurationUpdate					ProcedureCode ::= 30
+id-LocationReportingControl					ProcedureCode ::= 31
+id-LocationReportingFailureIndication		ProcedureCode ::= 32
+id-LocationReport							ProcedureCode ::= 33
+id-OverloadStart							ProcedureCode ::= 34
+id-OverloadStop								ProcedureCode ::= 35
+id-WriteReplaceWarning						ProcedureCode ::= 36
+id-eNBDirectInformationTransfer				ProcedureCode ::= 37
+id-MMEDirectInformationTransfer				ProcedureCode ::= 38
+id-PrivateMessage							ProcedureCode ::= 39
+id-eNBConfigurationTransfer					ProcedureCode ::= 40
+id-MMEConfigurationTransfer					ProcedureCode ::= 41
+id-CellTrafficTrace							ProcedureCode ::= 42
+id-Kill										ProcedureCode ::= 43
+id-downlinkUEAssociatedLPPaTransport		ProcedureCode ::= 44
+id-uplinkUEAssociatedLPPaTransport			ProcedureCode ::= 45
+id-downlinkNonUEAssociatedLPPaTransport		ProcedureCode ::= 46
+id-uplinkNonUEAssociatedLPPaTransport		ProcedureCode ::= 47
+id-UERadioCapabilityMatch					ProcedureCode ::= 48
+id-PWSRestartIndication						ProcedureCode ::= 49
+id-E-RABModificationIndication				ProcedureCode ::= 50
+id-PWSFailureIndication						ProcedureCode ::= 51
+id-RerouteNASRequest						ProcedureCode ::= 52
+id-UEContextModificationIndication			ProcedureCode ::= 53
+id-ConnectionEstablishmentIndication		ProcedureCode ::= 54
+id-UEContextSuspend							ProcedureCode ::= 55
+id-UEContextResume							ProcedureCode ::= 56
+id-NASDeliveryIndication					ProcedureCode ::= 57
+id-RetrieveUEInformation					ProcedureCode ::= 58
+id-UEInformationTransfer					ProcedureCode ::= 59
+id-eNBCPRelocationIndication				ProcedureCode ::= 60
+id-MMECPRelocationIndication				ProcedureCode ::= 61
+
+-- **************************************************************
+--
+-- Extension constants
+--
+-- **************************************************************
+
+maxPrivateIEs							INTEGER ::= 65535
+maxProtocolExtensions					INTEGER ::= 65535
+maxProtocolIEs							INTEGER ::= 65535
+-- **************************************************************
+--
+-- Lists
+--
+-- **************************************************************
+
+maxnoofCSGs								INTEGER ::= 256
+maxnoofE-RABs							INTEGER ::= 256
+maxnoofTAIs								INTEGER ::= 256
+maxnoofTACs								INTEGER ::= 256
+maxnoofErrors							INTEGER ::= 256
+maxnoofBPLMNs							INTEGER ::= 6
+maxnoofPLMNsPerMME						INTEGER ::= 32
+maxnoofEPLMNs							INTEGER ::= 15
+maxnoofEPLMNsPlusOne					INTEGER ::= 16
+maxnoofForbLACs							INTEGER ::= 4096
+maxnoofForbTACs							INTEGER ::= 4096
+maxnoofIndividualS1ConnectionsToReset	INTEGER ::= 256
+maxnoofCells							INTEGER ::= 16
+maxnoofCellsineNB						INTEGER ::= 256
+maxnoofTAIforWarning					INTEGER ::= 65535 
+maxnoofCellID							INTEGER ::= 65535 
+maxnoofDCNs								INTEGER ::= 32 
+maxnoofEmergencyAreaID					INTEGER ::= 65535 
+maxnoofCellinTAI						INTEGER ::= 65535 
+maxnoofCellinEAI						INTEGER ::= 65535 
+maxnoofeNBX2TLAs						INTEGER ::= 2
+maxnoofeNBX2ExtTLAs						INTEGER ::= 16
+maxnoofeNBX2GTPTLAs						INTEGER ::= 16
+maxnoofRATs								INTEGER ::= 8
+maxnoofGroupIDs							INTEGER ::= 65535
+maxnoofMMECs							INTEGER ::= 256
+maxnoofCellIDforMDT						INTEGER ::= 32
+maxnoofTAforMDT							INTEGER ::= 8
+maxnoofMDTPLMNs							INTEGER ::= 16
+maxnoofCellsforRestart					INTEGER ::= 256
+maxnoofRestartTAIs						INTEGER ::= 2048
+maxnoofRestartEmergencyAreaIDs			INTEGER ::= 256
+maxEARFCN								INTEGER ::= 262143
+maxnoofMBSFNAreaMDT						INTEGER ::= 8
+maxnoofRecommendedCells					INTEGER ::= 16
+maxnoofRecommendedENBs					INTEGER ::= 16
+
+-- **************************************************************
+--
+-- IEs
+--
+-- **************************************************************
+
+id-MME-UE-S1AP-ID									ProtocolIE-ID ::= 0
+id-HandoverType										ProtocolIE-ID ::= 1
+id-Cause											ProtocolIE-ID ::= 2
+id-SourceID											ProtocolIE-ID ::= 3
+id-TargetID											ProtocolIE-ID ::= 4
+id-eNB-UE-S1AP-ID									ProtocolIE-ID ::= 8
+id-E-RABSubjecttoDataForwardingList					ProtocolIE-ID ::= 12
+id-E-RABtoReleaseListHOCmd							ProtocolIE-ID ::= 13
+id-E-RABDataForwardingItem							ProtocolIE-ID ::= 14
+id-E-RABReleaseItemBearerRelComp					ProtocolIE-ID ::= 15
+id-E-RABToBeSetupListBearerSUReq					ProtocolIE-ID ::= 16
+id-E-RABToBeSetupItemBearerSUReq					ProtocolIE-ID ::= 17
+id-E-RABAdmittedList								ProtocolIE-ID ::= 18
+id-E-RABFailedToSetupListHOReqAck					ProtocolIE-ID ::= 19
+id-E-RABAdmittedItem								ProtocolIE-ID ::= 20
+id-E-RABFailedtoSetupItemHOReqAck					ProtocolIE-ID ::= 21
+id-E-RABToBeSwitchedDLList							ProtocolIE-ID ::= 22
+id-E-RABToBeSwitchedDLItem							ProtocolIE-ID ::= 23
+id-E-RABToBeSetupListCtxtSUReq						ProtocolIE-ID ::= 24
+id-TraceActivation									ProtocolIE-ID ::= 25
+id-NAS-PDU											ProtocolIE-ID ::= 26
+id-E-RABToBeSetupItemHOReq							ProtocolIE-ID ::= 27
+id-E-RABSetupListBearerSURes						ProtocolIE-ID ::= 28
+id-E-RABFailedToSetupListBearerSURes				ProtocolIE-ID ::= 29
+id-E-RABToBeModifiedListBearerModReq				ProtocolIE-ID ::= 30
+id-E-RABModifyListBearerModRes						ProtocolIE-ID ::= 31
+id-E-RABFailedToModifyList							ProtocolIE-ID ::= 32
+id-E-RABToBeReleasedList							ProtocolIE-ID ::= 33
+id-E-RABFailedToReleaseList							ProtocolIE-ID ::= 34
+id-E-RABItem										ProtocolIE-ID ::= 35
+id-E-RABToBeModifiedItemBearerModReq				ProtocolIE-ID ::= 36
+id-E-RABModifyItemBearerModRes						ProtocolIE-ID ::= 37
+id-E-RABReleaseItem									ProtocolIE-ID ::= 38
+id-E-RABSetupItemBearerSURes						ProtocolIE-ID ::= 39
+id-SecurityContext									ProtocolIE-ID ::= 40
+id-HandoverRestrictionList							ProtocolIE-ID ::= 41
+id-UEPagingID										ProtocolIE-ID ::= 43
+id-pagingDRX										ProtocolIE-ID ::= 44
+id-TAIList											ProtocolIE-ID ::= 46
+id-TAIItem											ProtocolIE-ID ::= 47
+id-E-RABFailedToSetupListCtxtSURes					ProtocolIE-ID ::= 48
+id-E-RABReleaseItemHOCmd							ProtocolIE-ID ::= 49
+id-E-RABSetupItemCtxtSURes							ProtocolIE-ID ::= 50
+id-E-RABSetupListCtxtSURes							ProtocolIE-ID ::= 51
+id-E-RABToBeSetupItemCtxtSUReq						ProtocolIE-ID ::= 52
+id-E-RABToBeSetupListHOReq							ProtocolIE-ID ::= 53
+id-GERANtoLTEHOInformationRes						ProtocolIE-ID ::= 55
+id-UTRANtoLTEHOInformationRes						ProtocolIE-ID ::= 57
+id-CriticalityDiagnostics 							ProtocolIE-ID ::= 58
+id-Global-ENB-ID									ProtocolIE-ID ::= 59
+id-eNBname											ProtocolIE-ID ::= 60
+id-MMEname											ProtocolIE-ID ::= 61
+id-ServedPLMNs										ProtocolIE-ID ::= 63
+id-SupportedTAs										ProtocolIE-ID ::= 64
+id-TimeToWait										ProtocolIE-ID ::= 65
+id-uEaggregateMaximumBitrate						ProtocolIE-ID ::= 66
+id-TAI												ProtocolIE-ID ::= 67
+id-E-RABReleaseListBearerRelComp					ProtocolIE-ID ::= 69
+id-cdma2000PDU										ProtocolIE-ID ::= 70
+id-cdma2000RATType									ProtocolIE-ID ::= 71
+id-cdma2000SectorID									ProtocolIE-ID ::= 72
+id-SecurityKey										ProtocolIE-ID ::= 73
+id-UERadioCapability								ProtocolIE-ID ::= 74
+id-GUMMEI-ID										ProtocolIE-ID ::= 75
+id-E-RABInformationListItem							ProtocolIE-ID ::= 78
+id-Direct-Forwarding-Path-Availability				ProtocolIE-ID ::= 79
+id-UEIdentityIndexValue								ProtocolIE-ID ::= 80
+id-cdma2000HOStatus									ProtocolIE-ID ::= 83
+id-cdma2000HORequiredIndication						ProtocolIE-ID ::= 84
+id-E-UTRAN-Trace-ID									ProtocolIE-ID ::= 86
+id-RelativeMMECapacity								ProtocolIE-ID ::= 87
+id-SourceMME-UE-S1AP-ID								ProtocolIE-ID ::= 88
+id-Bearers-SubjectToStatusTransfer-Item				ProtocolIE-ID ::= 89
+id-eNB-StatusTransfer-TransparentContainer			ProtocolIE-ID ::= 90
+id-UE-associatedLogicalS1-ConnectionItem			ProtocolIE-ID ::= 91
+id-ResetType										ProtocolIE-ID ::= 92
+id-UE-associatedLogicalS1-ConnectionListResAck		ProtocolIE-ID ::= 93
+id-E-RABToBeSwitchedULItem							ProtocolIE-ID ::= 94
+id-E-RABToBeSwitchedULList							ProtocolIE-ID ::= 95
+id-S-TMSI											ProtocolIE-ID ::= 96
+id-cdma2000OneXRAND									ProtocolIE-ID ::= 97
+id-RequestType										ProtocolIE-ID ::= 98
+id-UE-S1AP-IDs										ProtocolIE-ID ::= 99
+id-EUTRAN-CGI										ProtocolIE-ID ::= 100
+id-OverloadResponse									ProtocolIE-ID ::= 101
+id-cdma2000OneXSRVCCInfo							ProtocolIE-ID ::= 102
+id-E-RABFailedToBeReleasedList						ProtocolIE-ID ::= 103
+id-Source-ToTarget-TransparentContainer				ProtocolIE-ID ::= 104
+id-ServedGUMMEIs									ProtocolIE-ID ::= 105
+id-SubscriberProfileIDforRFP						ProtocolIE-ID ::= 106
+id-UESecurityCapabilities							ProtocolIE-ID ::= 107
+id-CSFallbackIndicator								ProtocolIE-ID ::= 108
+id-CNDomain											ProtocolIE-ID ::= 109
+id-E-RABReleasedList								ProtocolIE-ID ::= 110
+id-MessageIdentifier								ProtocolIE-ID ::= 111
+id-SerialNumber										ProtocolIE-ID ::= 112
+id-WarningAreaList									ProtocolIE-ID ::= 113
+id-RepetitionPeriod									ProtocolIE-ID ::= 114
+id-NumberofBroadcastRequest							ProtocolIE-ID ::= 115
+id-WarningType										ProtocolIE-ID ::= 116
+id-WarningSecurityInfo								ProtocolIE-ID ::= 117
+id-DataCodingScheme									ProtocolIE-ID ::= 118
+id-WarningMessageContents							ProtocolIE-ID ::= 119
+id-BroadcastCompletedAreaList						ProtocolIE-ID ::= 120
+id-Inter-SystemInformationTransferTypeEDT			ProtocolIE-ID ::= 121
+id-Inter-SystemInformationTransferTypeMDT			ProtocolIE-ID ::= 122
+id-Target-ToSource-TransparentContainer				ProtocolIE-ID ::= 123
+id-SRVCCOperationPossible							ProtocolIE-ID ::= 124
+id-SRVCCHOIndication								ProtocolIE-ID ::= 125
+id-NAS-DownlinkCount								ProtocolIE-ID ::= 126
+id-CSG-Id											ProtocolIE-ID ::= 127
+id-CSG-IdList										ProtocolIE-ID ::= 128
+id-SONConfigurationTransferECT						ProtocolIE-ID ::= 129
+id-SONConfigurationTransferMCT						ProtocolIE-ID ::= 130
+id-TraceCollectionEntityIPAddress					ProtocolIE-ID ::= 131
+id-MSClassmark2										ProtocolIE-ID ::= 132
+id-MSClassmark3										ProtocolIE-ID ::= 133
+id-RRC-Establishment-Cause							ProtocolIE-ID ::= 134
+id-NASSecurityParametersfromE-UTRAN					ProtocolIE-ID ::= 135
+id-NASSecurityParameterstoE-UTRAN					ProtocolIE-ID ::= 136
+id-DefaultPagingDRX									ProtocolIE-ID ::= 137
+id-Source-ToTarget-TransparentContainer-Secondary	ProtocolIE-ID ::= 138
+id-Target-ToSource-TransparentContainer-Secondary	ProtocolIE-ID ::= 139
+id-EUTRANRoundTripDelayEstimationInfo				ProtocolIE-ID ::= 140
+id-BroadcastCancelledAreaList						ProtocolIE-ID ::= 141
+id-ConcurrentWarningMessageIndicator				ProtocolIE-ID ::= 142
+id-Data-Forwarding-Not-Possible						ProtocolIE-ID ::= 143
+id-ExtendedRepetitionPeriod							ProtocolIE-ID ::= 144
+id-CellAccessMode									ProtocolIE-ID ::= 145
+id-CSGMembershipStatus 								ProtocolIE-ID ::= 146
+id-LPPa-PDU											ProtocolIE-ID ::= 147
+id-Routing-ID										ProtocolIE-ID ::= 148
+id-Time-Synchronisation-Info						ProtocolIE-ID ::= 149
+id-PS-ServiceNotAvailable							ProtocolIE-ID ::= 150
+id-PagingPriority									ProtocolIE-ID ::= 151
+id-x2TNLConfigurationInfo							ProtocolIE-ID ::= 152
+id-eNBX2ExtendedTransportLayerAddresses				ProtocolIE-ID ::= 153
+id-GUMMEIList										ProtocolIE-ID ::= 154
+id-GW-TransportLayerAddress							ProtocolIE-ID ::= 155
+id-Correlation-ID									ProtocolIE-ID ::= 156
+id-SourceMME-GUMMEI									ProtocolIE-ID ::= 157
+id-MME-UE-S1AP-ID-2									ProtocolIE-ID ::= 158
+id-RegisteredLAI									ProtocolIE-ID ::= 159
+id-RelayNode-Indicator								ProtocolIE-ID ::= 160
+id-TrafficLoadReductionIndication					ProtocolIE-ID ::= 161
+id-MDTConfiguration									ProtocolIE-ID ::= 162
+id-MMERelaySupportIndicator							ProtocolIE-ID ::= 163
+id-GWContextReleaseIndication						ProtocolIE-ID ::= 164
+id-ManagementBasedMDTAllowed						ProtocolIE-ID ::= 165
+id-PrivacyIndicator									ProtocolIE-ID ::= 166
+id-Time-UE-StayedInCell-EnhancedGranularity			ProtocolIE-ID ::= 167
+id-HO-Cause											ProtocolIE-ID ::= 168
+id-VoiceSupportMatchIndicator						ProtocolIE-ID ::= 169
+id-GUMMEIType										ProtocolIE-ID ::= 170
+id-M3Configuration									ProtocolIE-ID ::= 171
+id-M4Configuration									ProtocolIE-ID ::= 172
+id-M5Configuration									ProtocolIE-ID ::= 173
+id-MDT-Location-Info								ProtocolIE-ID ::= 174
+id-MobilityInformation								ProtocolIE-ID ::= 175
+id-Tunnel-Information-for-BBF						ProtocolIE-ID ::= 176
+id-ManagementBasedMDTPLMNList						ProtocolIE-ID ::= 177
+id-SignallingBasedMDTPLMNList						ProtocolIE-ID ::= 178
+id-ULCOUNTValueExtended								ProtocolIE-ID ::= 179
+id-DLCOUNTValueExtended								ProtocolIE-ID ::= 180
+id-ReceiveStatusOfULPDCPSDUsExtended				ProtocolIE-ID ::= 181
+id-ECGIListForRestart								ProtocolIE-ID ::= 182
+id-SIPTO-Correlation-ID								ProtocolIE-ID ::= 183
+id-SIPTO-L-GW-TransportLayerAddress					ProtocolIE-ID ::= 184
+id-TransportInformation								ProtocolIE-ID ::= 185
+id-LHN-ID											ProtocolIE-ID ::= 186
+id-AdditionalCSFallbackIndicator					ProtocolIE-ID ::= 187
+id-TAIListForRestart								ProtocolIE-ID ::= 188
+id-UserLocationInformation							ProtocolIE-ID ::= 189
+id-EmergencyAreaIDListForRestart					ProtocolIE-ID ::= 190
+id-KillAllWarningMessages							ProtocolIE-ID ::= 191
+id-Masked-IMEISV									ProtocolIE-ID ::= 192
+id-eNBIndirectX2TransportLayerAddresses				ProtocolIE-ID ::= 193
+id-uE-HistoryInformationFromTheUE					ProtocolIE-ID ::= 194
+id-ProSeAuthorized									ProtocolIE-ID ::= 195
+id-ExpectedUEBehaviour								ProtocolIE-ID ::= 196
+id-LoggedMBSFNMDT									ProtocolIE-ID ::= 197
+id-UERadioCapabilityForPaging						ProtocolIE-ID ::= 198
+id-E-RABToBeModifiedListBearerModInd				ProtocolIE-ID ::= 199
+id-E-RABToBeModifiedItemBearerModInd				ProtocolIE-ID ::= 200
+id-E-RABNotToBeModifiedListBearerModInd				ProtocolIE-ID ::= 201
+id-E-RABNotToBeModifiedItemBearerModInd				ProtocolIE-ID ::= 202
+id-E-RABModifyListBearerModConf						ProtocolIE-ID ::= 203
+id-E-RABModifyItemBearerModConf						ProtocolIE-ID ::= 204
+id-E-RABFailedToModifyListBearerModConf				ProtocolIE-ID ::= 205
+id-SON-Information-Report							ProtocolIE-ID ::= 206
+id-Muting-Availability-Indication					ProtocolIE-ID ::= 207
+id-Muting-Pattern-Information						ProtocolIE-ID ::= 208
+id-Synchronisation-Information						ProtocolIE-ID ::= 209
+id-E-RABToBeReleasedListBearerModConf				ProtocolIE-ID ::= 210
+id-AssistanceDataForPaging							ProtocolIE-ID ::= 211
+id-CellIdentifierAndCELevelForCECapableUEs			ProtocolIE-ID ::= 212
+id-InformationOnRecommendedCellsAndENBsForPaging	ProtocolIE-ID ::= 213
+id-RecommendedCellItem								ProtocolIE-ID ::= 214
+id-RecommendedENBItem								ProtocolIE-ID ::= 215
+id-ProSeUEtoNetworkRelaying							ProtocolIE-ID ::= 216
+id-ULCOUNTValuePDCP-SNlength18						ProtocolIE-ID ::= 217
+id-DLCOUNTValuePDCP-SNlength18						ProtocolIE-ID ::= 218
+id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18			ProtocolIE-ID ::= 219
+id-M6Configuration									ProtocolIE-ID ::= 220
+id-M7Configuration									ProtocolIE-ID ::= 221
+id-PWSfailedECGIList								ProtocolIE-ID ::= 222
+id-MME-Group-ID										ProtocolIE-ID ::= 223
+id-Additional-GUTI									ProtocolIE-ID ::= 224
+id-S1-Message										ProtocolIE-ID ::= 225
+id-CSGMembershipInfo								ProtocolIE-ID ::= 226
+id-Paging-eDRXInformation							ProtocolIE-ID ::= 227
+id-UE-RetentionInformation							ProtocolIE-ID ::= 228
+id-UE-Usage-Type									ProtocolIE-ID ::= 230
+id-extended-UEIdentityIndexValue					ProtocolIE-ID ::= 231
+id-RAT-Type											ProtocolIE-ID ::= 232
+id-BearerType										ProtocolIE-ID ::= 233
+id-NB-IoT-DefaultPagingDRX							ProtocolIE-ID ::= 234
+id-E-RABFailedToResumeListResumeReq					ProtocolIE-ID ::= 235
+id-E-RABFailedToResumeItemResumeReq					ProtocolIE-ID ::= 236
+id-E-RABFailedToResumeListResumeRes					ProtocolIE-ID ::= 237
+id-E-RABFailedToResumeItemResumeRes					ProtocolIE-ID ::= 238
+id-NB-IoT-Paging-eDRXInformation					ProtocolIE-ID ::= 239
+id-V2XServicesAuthorized							ProtocolIE-ID ::= 240
+id-UEUserPlaneCIoTSupportIndicator 					ProtocolIE-ID ::= 241
+id-CE-mode-B-SupportIndicator 						ProtocolIE-ID ::= 242
+id-SRVCCOperationNotPossible						ProtocolIE-ID ::= 243
+id-NB-IoT-UEIdentityIndexValue 						ProtocolIE-ID ::= 244
+id-RRC-Resume-Cause									ProtocolIE-ID ::= 245
+id-DCN-ID											ProtocolIE-ID ::= 246
+id-ServedDCNs					 					ProtocolIE-ID ::= 247
+id-UESidelinkAggregateMaximumBitrate 				ProtocolIE-ID ::= 248
+id-DLNASPDUDeliveryAckRequest						ProtocolIE-ID ::= 249
+id-Coverage-Level 									ProtocolIE-ID ::= 250
+id-EnhancedCoverageRestricted						ProtocolIE-ID ::= 251
+id-UE-Level-QoS-Parameters							ProtocolIE-ID ::= 252
+id-DL-CP-SecurityInformation						ProtocolIE-ID ::= 253
+id-UL-CP-SecurityInformation						ProtocolIE-ID ::= 254
+
+END
+
+
+-- **************************************************************
+--
+-- Container definitions
+--
+-- **************************************************************
+
+S1AP-Containers {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-Containers (5) }
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+	Criticality,
+	Presence,
+	PrivateIE-ID,
+	ProtocolExtensionID,
+	ProtocolIE-ID
+FROM S1AP-CommonDataTypes
+
+	maxPrivateIEs,
+	maxProtocolExtensions,
+	maxProtocolIEs
+FROM S1AP-Constants;
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+S1AP-PROTOCOL-IES ::= CLASS {
+	&id				ProtocolIE-ID 					UNIQUE,
+	&criticality	Criticality,
+	&Value,
+	&presence		Presence
+}
+WITH SYNTAX {
+	ID				&id
+	CRITICALITY		&criticality
+	TYPE			&Value
+	PRESENCE		&presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+S1AP-PROTOCOL-IES-PAIR ::= CLASS {
+	&id					ProtocolIE-ID 				UNIQUE,
+	&firstCriticality	Criticality,
+	&FirstValue,
+	&secondCriticality	Criticality,
+	&SecondValue,
+	&presence			Presence
+}
+WITH SYNTAX {
+	ID				&id
+	FIRST CRITICALITY		&firstCriticality
+	FIRST TYPE				&FirstValue
+	SECOND CRITICALITY		&secondCriticality
+	SECOND TYPE				&SecondValue
+	PRESENCE				&presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol Extensions
+--
+-- **************************************************************
+
+S1AP-PROTOCOL-EXTENSION ::= CLASS {
+	&id				ProtocolExtensionID			UNIQUE,
+	&criticality	Criticality,
+	&Extension,
+	&presence		Presence
+}
+WITH SYNTAX {
+	ID				&id
+	CRITICALITY		&criticality
+	EXTENSION		&Extension
+	PRESENCE		&presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Private IEs
+--
+-- **************************************************************
+
+S1AP-PRIVATE-IES ::= CLASS {
+	&id				PrivateIE-ID,
+	&criticality	Criticality,
+	&Value,
+	&presence		Presence
+}
+WITH SYNTAX {
+	ID				&id
+	CRITICALITY		&criticality
+	TYPE			&Value
+	PRESENCE		&presence
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IEs
+--
+-- **************************************************************
+
+ProtocolIE-Container {S1AP-PROTOCOL-IES : IEsSetParam} ::= 
+	SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+	ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-SingleContainer {S1AP-PROTOCOL-IES : IEsSetParam} ::= 
+	ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Field {S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
+	id				S1AP-PROTOCOL-IES.&id				({IEsSetParam}),
+	criticality		S1AP-PROTOCOL-IES.&criticality		({IEsSetParam}{@id}),
+	value			S1AP-PROTOCOL-IES.&Value			({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IE Pairs
+--
+-- **************************************************************
+
+ProtocolIE-ContainerPair {S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= 
+	SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+	ProtocolIE-FieldPair {{IEsSetParam}}
+
+ProtocolIE-FieldPair {S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
+	id					S1AP-PROTOCOL-IES-PAIR.&id					({IEsSetParam}),
+	firstCriticality	S1AP-PROTOCOL-IES-PAIR.&firstCriticality	({IEsSetParam}{@id}),
+	firstValue			S1AP-PROTOCOL-IES-PAIR.&FirstValue			({IEsSetParam}{@id}),
+	secondCriticality	S1AP-PROTOCOL-IES-PAIR.&secondCriticality	({IEsSetParam}{@id}),
+	secondValue			S1AP-PROTOCOL-IES-PAIR.&SecondValue		({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container Lists for Protocol IE Containers
+--
+-- **************************************************************
+
+ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES : IEsSetParam} ::=
+	SEQUENCE (SIZE (lowerBound..upperBound)) OF
+	ProtocolIE-SingleContainer {{IEsSetParam}}
+
+ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
+	SEQUENCE (SIZE (lowerBound..upperBound)) OF
+	ProtocolIE-ContainerPair {{IEsSetParam}}
+
+-- **************************************************************
+--
+-- Container for Protocol Extensions
+--
+-- **************************************************************
+
+ProtocolExtensionContainer {S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= 
+	SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
+	ProtocolExtensionField {{ExtensionSetParam}}
+
+ProtocolExtensionField {S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
+	id					S1AP-PROTOCOL-EXTENSION.&id				({ExtensionSetParam}),
+	criticality			S1AP-PROTOCOL-EXTENSION.&criticality	({ExtensionSetParam}{@id}),
+	extensionValue		S1AP-PROTOCOL-EXTENSION.&Extension		({ExtensionSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Private IEs
+--
+-- **************************************************************
+
+PrivateIE-Container {S1AP-PRIVATE-IES : IEsSetParam } ::= 
+	SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
+	PrivateIE-Field {{IEsSetParam}}
+
+PrivateIE-Field {S1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
+	id					S1AP-PRIVATE-IES.&id				({IEsSetParam}),
+	criticality			S1AP-PRIVATE-IES.&criticality		({IEsSetParam}{@id}),
+	value				S1AP-PRIVATE-IES.&Value				({IEsSetParam}{@id})
+}
+
+END
diff --git a/openair3/S1AP/s1ap_common.c b/openair3/S1AP/s1ap_common.c
index 0bd132a228625f4371d97bd3ef9b2ffc1779ec85..7c4f970af2f18d61e626c4a7d8f70d607a8d663c 100644
--- a/openair3/S1AP/s1ap_common.c
+++ b/openair3/S1AP/s1ap_common.c
@@ -22,7 +22,7 @@
 /*! \file s1ap_common.c
  * \brief s1ap procedures for both eNB and MME
  * \author Sebastien ROUX and Navid Nikaein
- * \email navid.nikaein@eurecom.fr 
+ * \email navid.nikaein@eurecom.fr
  * \date 2012-2015
  * \version 0.1
  */
@@ -30,7 +30,7 @@
 #include <stdint.h>
 
 #include "s1ap_common.h"
-#include "S1AP-PDU.h"
+#include "S1AP_S1AP-PDU.h"
 
 int asn_debug = 0;
 int asn1_xer_print = 0;
@@ -53,144 +53,6 @@ inline void ASN_DEBUG(const char *fmt, ...)
 }
 #endif
 
-ssize_t s1ap_generate_initiating_message(
-  uint8_t               **buffer,
-  uint32_t               *length,
-  e_S1ap_ProcedureCode    procedureCode,
-  S1ap_Criticality_t      criticality,
-  asn_TYPE_descriptor_t  *td,
-  void                   *sptr)
+void s1ap_handle_criticality(S1AP_Criticality_t criticality)
 {
-  S1AP_PDU_t pdu;
-  ssize_t    encoded;
-
-  memset(&pdu, 0, sizeof(S1AP_PDU_t));
-
-  pdu.present = S1AP_PDU_PR_initiatingMessage;
-  pdu.choice.initiatingMessage.procedureCode = procedureCode;
-  pdu.choice.initiatingMessage.criticality   = criticality;
-  ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
-
-  if (asn1_xer_print) {
-    xer_fprint(stdout, &asn_DEF_S1AP_PDU, (void *)&pdu);
-  }
-
-  /* We can safely free list of IE from sptr */
-  ASN_STRUCT_FREE_CONTENTS_ONLY(*td, sptr);
-
-  if ((encoded = aper_encode_to_new_buffer(&asn_DEF_S1AP_PDU, 0, &pdu,
-                 (void **)buffer)) < 0) {
-    return -1;
-  }
-
-  *length = encoded;
-  return encoded;
-}
-
-ssize_t s1ap_generate_successfull_outcome(
-  uint8_t               **buffer,
-  uint32_t               *length,
-  e_S1ap_ProcedureCode         procedureCode,
-  S1ap_Criticality_t           criticality,
-  asn_TYPE_descriptor_t  *td,
-  void                   *sptr)
-{
-  S1AP_PDU_t pdu;
-  ssize_t    encoded;
-
-  memset(&pdu, 0, sizeof(S1AP_PDU_t));
-
-  pdu.present = S1AP_PDU_PR_successfulOutcome;
-  pdu.choice.successfulOutcome.procedureCode = procedureCode;
-  pdu.choice.successfulOutcome.criticality   = criticality;
-  ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
-
-  if (asn1_xer_print) {
-    xer_fprint(stdout, &asn_DEF_S1AP_PDU, (void *)&pdu);
-  }
-
-  /* We can safely free list of IE from sptr */
-  ASN_STRUCT_FREE_CONTENTS_ONLY(*td, sptr);
-
-  if ((encoded = aper_encode_to_new_buffer(&asn_DEF_S1AP_PDU, 0, &pdu,
-                 (void **)buffer)) < 0) {
-    return -1;
-  }
-
-  *length = encoded;
-
-  return encoded;
-}
-
-ssize_t s1ap_generate_unsuccessfull_outcome(
-  uint8_t               **buffer,
-  uint32_t               *length,
-  e_S1ap_ProcedureCode         procedureCode,
-  S1ap_Criticality_t           criticality,
-  asn_TYPE_descriptor_t  *td,
-  void                   *sptr)
-{
-  S1AP_PDU_t pdu;
-  ssize_t    encoded;
-
-  memset(&pdu, 0, sizeof(S1AP_PDU_t));
-
-  pdu.present = S1AP_PDU_PR_unsuccessfulOutcome;
-  pdu.choice.successfulOutcome.procedureCode = procedureCode;
-  pdu.choice.successfulOutcome.criticality   = criticality;
-  ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
-
-  if (asn1_xer_print) {
-    xer_fprint(stdout, &asn_DEF_S1AP_PDU, (void *)&pdu);
-  }
-
-  /* We can safely free list of IE from sptr */
-  ASN_STRUCT_FREE_CONTENTS_ONLY(*td, sptr);
-
-  if ((encoded = aper_encode_to_new_buffer(&asn_DEF_S1AP_PDU, 0, &pdu,
-                 (void **)buffer)) < 0) {
-    return -1;
-  }
-
-  *length = encoded;
-
-  return encoded;
-}
-
-S1ap_IE_t *s1ap_new_ie(
-  S1ap_ProtocolIE_ID_t   id,
-  S1ap_Criticality_t     criticality,
-  asn_TYPE_descriptor_t *type,
-  void                  *sptr)
-{
-  S1ap_IE_t *buff;
-
-  if ((buff = malloc(sizeof(S1ap_IE_t))) == NULL) {
-    // Possible error on malloc
-    return NULL;
-  }
-
-  memset((void *)buff, 0, sizeof(S1ap_IE_t));
-
-  buff->id = id;
-  buff->criticality = criticality;
-
-  if (ANY_fromType_aper(&buff->value, type, sptr) < 0) {
-    fprintf(stderr, "Encoding of %s failed\n", type->name);
-    free(buff);
-    return NULL;
-  }
-
-  if (asn1_xer_print)
-    if (xer_fprint(stdout, &asn_DEF_S1ap_IE, buff) < 0) {
-      free(buff);
-      return NULL;
-    }
-
-  return buff;
-}
-
-void s1ap_handle_criticality(S1ap_Criticality_t criticality)
-{
-
 }
diff --git a/openair3/S1AP/s1ap_common.h b/openair3/S1AP/s1ap_common.h
index 003bdd2d62345371bf57fb520bf4ce545330bafb..09e8de0a05ceac208464a5593af3c1534d5d93b3 100644
--- a/openair3/S1AP/s1ap_common.h
+++ b/openair3/S1AP/s1ap_common.h
@@ -39,343 +39,19 @@ extern int asn_debug;
 inline void ASN_DEBUG(const char *fmt, ...);
 #endif
 
-#include "S1ap-Criticality.h"
-#include "S1ap-Presence.h"
-#include "S1ap-PrivateIE-ID.h"
-#include "S1ap-ProcedureCode.h"
-#include "S1ap-ProtocolExtensionID.h"
-#include "S1ap-ProtocolIE-ID.h"
-#include "S1ap-TriggeringMessage.h"
-#include "S1ap-AllocationAndRetentionPriority.h"
-#include "S1ap-Bearers-SubjectToStatusTransfer-List.h"
-#include "S1ap-Bearers-SubjectToStatusTransfer-Item.h"
-#include "S1ap-BitRate.h"
-#include "S1ap-BPLMNs.h"
-#include "S1ap-BroadcastCompletedAreaList.h"
-#include "S1ap-Cause.h"
-#include "S1ap-CauseMisc.h"
-#include "S1ap-CauseProtocol.h"
-#include "S1ap-CauseRadioNetwork.h"
-#include "S1ap-CauseTransport.h"
-#include "S1ap-CauseNas.h"
-#include "S1ap-CellIdentity.h"
-#include "S1ap-CellID-Broadcast.h"
-#include "S1ap-CellID-Broadcast-Item.h"
-#include "S1ap-Cdma2000PDU.h"
-#include "S1ap-Cdma2000RATType.h"
-#include "S1ap-Cdma2000SectorID.h"
-#include "S1ap-Cdma2000HOStatus.h"
-#include "S1ap-Cdma2000HORequiredIndication.h"
-#include "S1ap-Cdma2000OneXSRVCCInfo.h"
-#include "S1ap-Cdma2000OneXMEID.h"
-#include "S1ap-Cdma2000OneXMSI.h"
-#include "S1ap-Cdma2000OneXPilot.h"
-#include "S1ap-Cdma2000OneXRAND.h"
-#include "S1ap-Cell-Size.h"
-#include "S1ap-CellType.h"
-#include "S1ap-CGI.h"
-#include "S1ap-CI.h"
-#include "S1ap-CNDomain.h"
-#include "S1ap-CSFallbackIndicator.h"
-#include "S1ap-CSG-Id.h"
-#include "S1ap-CSG-IdList.h"
-#include "S1ap-CSG-IdList-Item.h"
-#include "S1ap-COUNTvalue.h"
-#include "S1ap-DataCodingScheme.h"
-#include "S1ap-DL-Forwarding.h"
-#include "S1ap-Direct-Forwarding-Path-Availability.h"
-#include "S1ap-ECGIList.h"
-#include "S1ap-EmergencyAreaIDList.h"
-#include "S1ap-EmergencyAreaID.h"
-#include "S1ap-EmergencyAreaID-Broadcast.h"
-#include "S1ap-EmergencyAreaID-Broadcast-Item.h"
-#include "S1ap-CompletedCellinEAI.h"
-#include "S1ap-CompletedCellinEAI-Item.h"
-#include "S1ap-ENB-ID.h"
-#include "S1ap-GERAN-Cell-ID.h"
-#include "S1ap-Global-ENB-ID.h"
-#include "S1ap-ENB-StatusTransfer-TransparentContainer.h"
-#include "S1ap-ENBname.h"
-#include "S1ap-ENBX2TLAs.h"
-#include "S1ap-EncryptionAlgorithms.h"
-#include "S1ap-EPLMNs.h"
-#include "S1ap-EventType.h"
-#include "S1ap-E-RAB-ID.h"
-#include "S1ap-E-RABInformationList.h"
-#include "S1ap-E-RABInformationListItem.h"
-#include "S1ap-E-RABList.h"
-#include "S1ap-E-RABItem.h"
-#include "S1ap-E-RABLevelQoSParameters.h"
-#include "S1ap-EUTRAN-CGI.h"
-#include "S1ap-ExtendedRNC-ID.h"
-#include "S1ap-ForbiddenInterRATs.h"
-#include "S1ap-ForbiddenTAs.h"
-#include "S1ap-ForbiddenTAs-Item.h"
-#include "S1ap-ForbiddenTACs.h"
-#include "S1ap-ForbiddenLAs.h"
-#include "S1ap-ForbiddenLAs-Item.h"
-#include "S1ap-ForbiddenLACs.h"
-#include "S1ap-GBR-QosInformation.h"
-#include "S1ap-GTP-TEID.h"
-#include "S1ap-GUMMEI.h"
-#include "S1ap-HandoverRestrictionList.h"
-#include "S1ap-HandoverType.h"
-#include "S1ap-HFN.h"
-#include "S1ap-IMSI.h"
-#include "S1ap-IntegrityProtectionAlgorithms.h"
-#include "S1ap-InterfacesToTrace.h"
-#include "S1ap-LAC.h"
-#include "S1ap-LAI.h"
-#include "S1ap-LastVisitedCell-Item.h"
-#include "S1ap-LastVisitedEUTRANCellInformation.h"
-#include "S1ap-LastVisitedUTRANCellInformation.h"
-#include "S1ap-LastVisitedGERANCellInformation.h"
-#include "S1ap-L3-Information.h"
-#include "S1ap-MessageIdentifier.h"
-#include "S1ap-MMEname.h"
-#include "S1ap-MME-Group-ID.h"
-#include "S1ap-MME-Code.h"
-#include "S1ap-M-TMSI.h"
-#include "S1ap-MSClassmark2.h"
-#include "S1ap-MSClassmark3.h"
-#include "S1ap-NAS-PDU.h"
-#include "S1ap-NASSecurityParametersfromE-UTRAN.h"
-#include "S1ap-NASSecurityParameterstoE-UTRAN.h"
-#include "S1ap-NumberofBroadcastRequest.h"
-#include "S1ap-NumberOfBroadcasts.h"
-#include "S1ap-OldBSS-ToNewBSS-Information.h"
-#include "S1ap-OverloadAction.h"
-#include "S1ap-OverloadResponse.h"
-#include "S1ap-PagingDRX.h"
-#include "S1ap-PDCP-SN.h"
-#include "S1ap-PLMNidentity.h"
-#include "S1ap-Pre-emptionCapability.h"
-#include "S1ap-Pre-emptionVulnerability.h"
-#include "S1ap-PriorityLevel.h"
-#include "S1ap-QCI.h"
-#include "S1ap-ReceiveStatusofULPDCPSDUs.h"
-#include "S1ap-RelativeMMECapacity.h"
-#include "S1ap-RAC.h"
-#include "S1ap-RequestType.h"
-#include "S1ap-RIMTransfer.h"
-#include "S1ap-RIMInformation.h"
-#include "S1ap-RIMRoutingAddress.h"
-#include "S1ap-ReportArea.h"
-#include "S1ap-RepetitionPeriod.h"
-#include "S1ap-RNC-ID.h"
-#include "S1ap-RRC-Container.h"
-#include "S1ap-RRC-Establishment-Cause.h"
-#include "S1ap-SecurityKey.h"
-#include "S1ap-SecurityContext.h"
-#include "S1ap-SerialNumber.h"
-#include "S1ap-SONInformation.h"
-#include "S1ap-SONInformationRequest.h"
-#include "S1ap-SONInformationReply.h"
-#include "S1ap-SONConfigurationTransfer.h"
-#include "S1ap-Source-ToTarget-TransparentContainer.h"
-#include "S1ap-SourceBSS-ToTargetBSS-TransparentContainer.h"
-#include "S1ap-SourceeNB-ID.h"
-#include "S1ap-SRVCCOperationPossible.h"
-#include "S1ap-SRVCCHOIndication.h"
-#include "S1ap-SourceeNB-ToTargeteNB-TransparentContainer.h"
-#include "S1ap-SourceRNC-ToTargetRNC-TransparentContainer.h"
-#include "S1ap-ServedGUMMEIs.h"
-#include "S1ap-ServedGUMMEIsItem.h"
-#include "S1ap-ServedGroupIDs.h"
-#include "S1ap-ServedMMECs.h"
-#include "S1ap-ServedPLMNs.h"
-#include "S1ap-SubscriberProfileIDforRFP.h"
-#include "S1ap-SupportedTAs.h"
-#include "S1ap-SupportedTAs-Item.h"
-#include "S1ap-S-TMSI.h"
-#include "S1ap-TAC.h"
-#include "S1ap-TAIItem.h"
-#include "S1ap-TAIList.h"
-#include "S1ap-TAIListforWarning.h"
-#include "S1ap-TAI.h"
-#include "S1ap-TAI-Broadcast.h"
-#include "S1ap-TAI-Broadcast-Item.h"
-#include "S1ap-CompletedCellinTAI.h"
-#include "S1ap-CompletedCellinTAI-Item.h"
-#include "S1ap-TargetID.h"
-#include "S1ap-TargeteNB-ID.h"
-#include "S1ap-TargetRNC-ID.h"
-#include "S1ap-TargeteNB-ToSourceeNB-TransparentContainer.h"
-#include "S1ap-Target-ToSource-TransparentContainer.h"
-#include "S1ap-TargetRNC-ToSourceRNC-TransparentContainer.h"
-#include "S1ap-TargetBSS-ToSourceBSS-TransparentContainer.h"
-#include "S1ap-TimeToWait.h"
-#include "S1ap-Time-UE-StayedInCell.h"
-#include "S1ap-TransportLayerAddress.h"
-#include "S1ap-TraceActivation.h"
-#include "S1ap-TraceDepth.h"
-#include "S1ap-E-UTRAN-Trace-ID.h"
-#include "S1ap-TypeOfError.h"
-#include "S1ap-UEAggregateMaximumBitrate.h"
-#include "S1ap-UE-associatedLogicalS1-ConnectionItem.h"
-#include "S1ap-UEIdentityIndexValue.h"
-#include "S1ap-UE-HistoryInformation.h"
-#include "S1ap-UEPagingID.h"
-#include "S1ap-UERadioCapability.h"
-#include "S1ap-UESecurityCapabilities.h"
-#include "S1ap-WarningAreaList.h"
-#include "S1ap-WarningType.h"
-#include "S1ap-WarningSecurityInfo.h"
-#include "S1ap-WarningMessageContents.h"
-#include "S1ap-X2TNLConfigurationInfo.h"
-#include "S1ap-CriticalityDiagnostics.h"
-#include "S1ap-CriticalityDiagnostics-IE-List.h"
-#include "S1ap-CriticalityDiagnostics-IE-Item.h"
-#include "S1ap-ResetType.h"
-#include "S1ap-Inter-SystemInformationTransferType.h"
-#include "S1ap-UE-S1AP-IDs.h"
-#include "S1ap-UE-S1AP-ID-pair.h"
-#include "S1ap-MME-UE-S1AP-ID.h"
-#include "S1ap-ENB-UE-S1AP-ID.h"
-#include "S1ap-TBCD-STRING.h"
-#include "S1ap-InitiatingMessage.h"
-#include "S1ap-SuccessfulOutcome.h"
-#include "S1ap-UnsuccessfulOutcome.h"
-#include "S1ap-HandoverRequired.h"
-#include "S1ap-HandoverCommand.h"
-#include "S1ap-HandoverNotify.h"
-#include "S1ap-HandoverPreparationFailure.h"
-#include "S1ap-HandoverRequest.h"
-#include "S1ap-HandoverRequestAcknowledge.h"
-#include "S1ap-HandoverFailure.h"
-#include "S1ap-PathSwitchRequest.h"
-#include "S1ap-PathSwitchRequestAcknowledge.h"
-#include "S1ap-PathSwitchRequestFailure.h"
-#include "S1ap-E-RABSetupRequest.h"
-#include "S1ap-E-RABSetupResponse.h"
-#include "S1ap-E-RABModifyRequest.h"
-#include "S1ap-E-RABModifyResponse.h"
-#include "S1ap-E-RABReleaseIndication.h"
-#include "S1ap-E-RABReleaseCommand.h"
-#include "S1ap-E-RABReleaseResponse.h"
-#include "S1ap-InitialContextSetupRequest.h"
-#include "S1ap-InitialContextSetupResponse.h"
-#include "S1ap-InitialContextSetupFailure.h"
-#include "S1ap-UEContextReleaseRequest.h"
-#include "S1ap-Paging.h"
-#include "S1ap-DownlinkNASTransport.h"
-#include "S1ap-InitialUEMessage.h"
-#include "S1ap-UplinkNASTransport.h"
-#include "S1ap-NASNonDeliveryIndication.h"
-#include "S1ap-HandoverCancel.h"
-#include "S1ap-HandoverCancelAcknowledge.h"
-#include "S1ap-Reset.h"
-#include "S1ap-ResetAcknowledge.h"
-#include "S1ap-S1SetupResponse.h"
-#include "S1ap-S1SetupRequest.h"
-#include "S1ap-S1SetupFailure.h"
-#include "S1ap-ErrorIndication.h"
-#include "S1ap-ENBConfigurationUpdate.h"
-#include "S1ap-ENBConfigurationUpdateAcknowledge.h"
-#include "S1ap-ENBConfigurationUpdateFailure.h"
-#include "S1ap-MMEConfigurationUpdate.h"
-#include "S1ap-MMEConfigurationUpdateAcknowledge.h"
-#include "S1ap-MMEConfigurationUpdateFailure.h"
-#include "S1ap-DownlinkS1cdma2000tunneling.h"
-#include "S1ap-UplinkS1cdma2000tunneling.h"
-#include "S1ap-UEContextModificationRequest.h"
-#include "S1ap-UEContextModificationResponse.h"
-#include "S1ap-UEContextModificationFailure.h"
-#include "S1ap-UECapabilityInfoIndication.h"
-#include "S1ap-UEContextReleaseCommand.h"
-#include "S1ap-UEContextReleaseComplete.h"
-#include "S1ap-ENBStatusTransfer.h"
-#include "S1ap-MMEStatusTransfer.h"
-#include "S1ap-DeactivateTrace.h"
-#include "S1ap-TraceStart.h"
-#include "S1ap-TraceFailureIndication.h"
-#include "S1ap-CellTrafficTrace.h"
-#include "S1ap-LocationReportingControl.h"
-#include "S1ap-LocationReportingFailureIndication.h"
-#include "S1ap-LocationReport.h"
-#include "S1ap-OverloadStart.h"
-#include "S1ap-OverloadStop.h"
-#include "S1ap-WriteReplaceWarningRequest.h"
-#include "S1ap-WriteReplaceWarningResponse.h"
-#include "S1ap-ENBDirectInformationTransfer.h"
-#include "S1ap-MMEDirectInformationTransfer.h"
-#include "S1ap-ENBConfigurationTransfer.h"
-#include "S1ap-MMEConfigurationTransfer.h"
-#include "S1ap-PrivateMessage.h"
-#include "S1ap-E-RABReleaseItemBearerRelComp.h"
-#include "S1ap-E-RABToBeSwitchedDLList.h"
-#include "S1ap-E-RABToBeSwitchedDLItem.h"
-#include "S1ap-E-RABToBeSwitchedULList.h"
-#include "S1ap-E-RABToBeSwitchedULItem.h"
-#include "S1ap-E-RABToBeSetupListBearerSUReq.h"
-#include "S1ap-E-RABToBeSetupItemBearerSUReq.h"
-#include "S1ap-E-RABDataForwardingList.h"
-#include "S1ap-E-RABDataForwardingItem.h"
-#include "S1ap-E-RABToBeSetupListHOReq.h"
-#include "S1ap-E-RABToBeSetupItemHOReq.h"
-#include "S1ap-E-RABAdmittedList.h"
-#include "S1ap-E-RABAdmittedItem.h"
-#include "S1ap-E-RABFailedToSetupListHOReqAck.h"
-#include "S1ap-E-RABToBeSetupItemCtxtSUReq.h"
-#include "S1ap-E-RABToBeSetupListCtxtSUReq.h"
-#include "S1ap-E-RABSetupItemBearerSURes.h"
-#include "S1ap-E-RABSetupListBearerSURes.h"
-#include "S1ap-E-RABSetupItemCtxtSURes.h"
-#include "S1ap-E-RABSetupListCtxtSURes.h"
-#include "S1ap-E-RABReleaseListBearerRelComp.h"
-#include "S1ap-E-RABModifyItemBearerModRes.h"
-#include "S1ap-E-RABModifyListBearerModRes.h"
-#include "S1ap-E-RABFailedToSetupItemHOReqAck.h"
-#include "S1ap-E-RABFailedToSetupListHOReqAck.h"
-#include "S1ap-E-RABToBeModifiedItemBearerModReq.h"
-#include "S1ap-E-RABToBeModifiedListBearerModReq.h"
-#include "S1ap-UE-associatedLogicalS1-ConnectionListResAck.h"
-#include "S1ap-IE.h"
-#include "S1AP-PDU.h"
-
-#if defined (UPDATE_RELEASE_9)
-# include "S1ap-BroadcastCancelledAreaList.h"
-# include "S1ap-CancelledCellinEAI.h"
-# include "S1ap-CancelledCellinEAI-Item.h"
-# include "S1ap-CancelledCellinTAI.h"
-# include "S1ap-CancelledCellinTAI-Item.h"
-# include "S1ap-CellAccessMode.h"
-# include "S1ap-CellID-Cancelled.h"
-# include "S1ap-CellID-Cancelled-Item.h"
-# include "S1ap-ConcurrentWarningMessageIndicator.h"
-# include "S1ap-CSGMembershipStatus.h"
-# include "S1ap-Data-Forwarding-Not-Possible.h"
-# include "S1ap-EmergencyAreaID-Cancelled.h"
-# include "S1ap-EmergencyAreaID-Cancelled-Item.h"
-# include "S1ap-E-RABList.h"
-# include "S1ap-EUTRANRoundTripDelayEstimationInfo.h"
-# include "S1ap-ExtendedRepetitionPeriod.h"
-# include "S1ap-LPPa-PDU.h"
-# include "S1ap-PS-ServiceNotAvailable.h"
-# include "S1ap-Routing-ID.h"
-# include "S1ap-StratumLevel.h"
-# include "S1ap-SynchronizationStatus.h"
-# include "S1ap-TimeSynchronizationInfo.h"
-# include "S1ap-TAI-Cancelled.h"
-# include "S1ap-TAI-Cancelled-Item.h"
-# include "S1ap-KillRequest.h"
-# include "S1ap-KillResponse.h"
-# include "S1ap-DownlinkUEAssociatedLPPaTransport.h"
-# include "S1ap-UplinkUEAssociatedLPPaTransport.h"
-# include "S1ap-DownlinkNonUEAssociatedLPPaTransport.h"
-# include "S1ap-UplinkNonUEAssociatedLPPaTransport.h"
-#endif /* (UPDATE_RELEASE_9) */
-
-#if defined(UPDATE_RELEASE_10)
-# include "S1ap-PagingPriority.h"
-# include "S1ap-RelayNode-Indicator.h"
-# include "S1ap-GWContextReleaseIndication.h"
-# include "S1ap-MMERelaySupportIndicator.h"
-# include "S1ap-ManagementBasedMDTAllowed.h"
-# include "S1ap-PrivacyIndicator.h"
-# include "S1ap-TrafficLoadReductionIndication.h"
-# include "S1ap-GUMMEIList.h"
-#endif /* (UPDATE_RELEASE_10) */
+#include "S1AP_ProtocolIE-Field.h"
+#include "S1AP_S1AP-PDU.h"
+#include "S1AP_InitiatingMessage.h"
+#include "S1AP_SuccessfulOutcome.h"
+#include "S1AP_UnsuccessfulOutcome.h"
+#include "S1AP_ProtocolIE-Field.h"
+#include "S1AP_ProtocolIE-FieldPair.h"
+#include "S1AP_ProtocolIE-ContainerPair.h"
+#include "S1AP_ProtocolExtensionField.h"
+#include "S1AP_ProtocolExtensionContainer.h"
+#include "S1AP_asn_constant.h"
+#include "S1AP_SupportedTAs-Item.h"
+#include "S1AP_ServedGUMMEIsItem.h"
 
 /* Checking version of ASN1C compiler */
 #if (ASN1C_ENVIRONMENT_VERSION < ASN1C_MINIMUM_VERSION)
@@ -411,84 +87,34 @@ extern int asn1_xer_print;
 # define S1AP_DEBUG(x, args...) do { fprintf(stdout, "[S1AP][D]"x, ##args); } while(0)
 #endif
 
-//Forward declaration
-struct s1ap_message_s;
+
+#define S1AP_FIND_PROTOCOLIE_BY_ID(IE_TYPE, ie, container, IE_ID, mandatory) \
+  do {\
+    IE_TYPE **ptr; \
+    ie = NULL; \
+    for (ptr = container->protocolIEs.list.array; \
+         ptr < &container->protocolIEs.list.array[container->protocolIEs.list.count]; \
+         ptr++) { \
+      if((*ptr)->id == IE_ID) { \
+        ie = *ptr; \
+        break; \
+      } \
+    } \
+    if (mandatory) DevAssert(ie != NULL); \
+  } while(0)
 
 /** \brief Function callback prototype.
  **/
 typedef int (*s1ap_message_decoded_callback)(
-  uint32_t               assoc_id,
-  uint32_t               stream,
-  struct s1ap_message_s *message_p
+  uint32_t         assoc_id,
+  uint32_t         stream,
+  S1AP_S1AP_PDU_t *pdu
 );
 
-/** \brief Encode a successfull outcome message
- \param buffer pointer to buffer in which data will be encoded
- \param length pointer to the length of buffer
- \param procedureCode Procedure code for the message
- \param criticality Criticality of the message
- \param td ASN1C type descriptor of the sptr
- \param sptr Deferenced pointer to the structure to encode
- @returns size in bytes encded on success or 0 on failure
- **/
-ssize_t s1ap_generate_successfull_outcome(
-  uint8_t               **buffer,
-  uint32_t               *length,
-  e_S1ap_ProcedureCode    procedureCode,
-  S1ap_Criticality_t      criticality,
-  asn_TYPE_descriptor_t  *td,
-  void                   *sptr);
-
-/** \brief Encode an initiating message
- \param buffer pointer to buffer in which data will be encoded
- \param length pointer to the length of buffer
- \param procedureCode Procedure code for the message
- \param criticality Criticality of the message
- \param td ASN1C type descriptor of the sptr
- \param sptr Deferenced pointer to the structure to encode
- @returns size in bytes encded on success or 0 on failure
- **/
-ssize_t s1ap_generate_initiating_message(
-  uint8_t               **buffer,
-  uint32_t               *length,
-  e_S1ap_ProcedureCode    procedureCode,
-  S1ap_Criticality_t      criticality,
-  asn_TYPE_descriptor_t  *td,
-  void                   *sptr);
-
-/** \brief Encode an unsuccessfull outcome message
- \param buffer pointer to buffer in which data will be encoded
- \param length pointer to the length of buffer
- \param procedureCode Procedure code for the message
- \param criticality Criticality of the message
- \param td ASN1C type descriptor of the sptr
- \param sptr Deferenced pointer to the structure to encode
- @returns size in bytes encded on success or 0 on failure
- **/
-ssize_t s1ap_generate_unsuccessfull_outcome(
-  uint8_t               **buffer,
-  uint32_t               *length,
-  e_S1ap_ProcedureCode    procedureCode,
-  S1ap_Criticality_t      criticality,
-  asn_TYPE_descriptor_t  *td,
-  void                   *sptr);
-
-/** \brief Generate a new IE
- \param id Protocol ie id of the IE
- \param criticality Criticality of the IE
- \param type ASN1 type descriptor of the IE value
- \param sptr Structure to be encoded in the value field
- @returns a pointer to the newly created IE structure or NULL in case of failure
- **/
-S1ap_IE_t *s1ap_new_ie(S1ap_ProtocolIE_ID_t   id,
-                       S1ap_Criticality_t     criticality,
-                       asn_TYPE_descriptor_t *type,
-                       void                  *sptr);
-
 /** \brief Handle criticality
  \param criticality Criticality of the IE
  @returns void
  **/
-void s1ap_handle_criticality(S1ap_Criticality_t criticality);
+void s1ap_handle_criticality(S1AP_Criticality_t criticality);
 
 #endif /* S1AP_COMMON_H_ */
diff --git a/openair3/S1AP/s1ap_eNB.c b/openair3/S1AP/s1ap_eNB.c
index 8085c239c304d85cdefeb6671fe57b3e2561c18c..548603bee7a6ba389fe369b4ef5b0f6ba8db6e47 100644
--- a/openair3/S1AP/s1ap_eNB.c
+++ b/openair3/S1AP/s1ap_eNB.c
@@ -20,8 +20,8 @@
  */
 
 /*! \file s1ap_eNB.c
- * \brief S1AP eNB task 
- * \author  S. Roux and Navid Nikaein 
+ * \brief S1AP eNB task
+ * \author  S. Roux and Navid Nikaein
  * \date 2010 - 2015
  * \email: navid.nikaein@eurecom.fr
  * \version 1.0
@@ -42,7 +42,6 @@
 #include "s1ap_eNB_default_values.h"
 
 #include "s1ap_common.h"
-#include "s1ap_ies_defs.h"
 
 #include "s1ap_eNB_defs.h"
 #include "s1ap_eNB.h"
@@ -81,16 +80,12 @@ uint32_t s1ap_generate_eNB_id(void)
   char     hostname[50];
   int      ret;
   uint32_t eNB_id;
-
   /* Retrieve the host name */
   ret = gethostname(hostname, sizeof(hostname));
   DevAssert(ret == 0);
-
   out = crypt(hostname, "eurecom");
   DevAssert(out != NULL);
-
   eNB_id = ((out[0] << 24) | (out[1] << 16) | (out[2] << 8) | out[3]);
-
   return eNB_id;
 }
 
@@ -104,46 +99,32 @@ static void s1ap_eNB_register_mme(s1ap_eNB_instance_t *instance_p,
   sctp_new_association_req_t *sctp_new_association_req_p  = NULL;
   s1ap_eNB_mme_data_t        *s1ap_mme_data_p             = NULL;
   struct s1ap_eNB_mme_data_s *mme                         = NULL;
- 
   DevAssert(instance_p != NULL);
   DevAssert(mme_ip_address != NULL);
-
   message_p = itti_alloc_new_message(TASK_S1AP, SCTP_NEW_ASSOCIATION_REQ);
-
   sctp_new_association_req_p = &message_p->ittiMsg.sctp_new_association_req;
-
   sctp_new_association_req_p->port = S1AP_PORT_NUMBER;
   sctp_new_association_req_p->ppid = S1AP_SCTP_PPID;
-
   sctp_new_association_req_p->in_streams  = in_streams;
   sctp_new_association_req_p->out_streams = out_streams;
-
   memcpy(&sctp_new_association_req_p->remote_address,
          mme_ip_address,
          sizeof(*mme_ip_address));
-
   memcpy(&sctp_new_association_req_p->local_address,
          local_ip_addr,
          sizeof(*local_ip_addr));
- 
   S1AP_INFO("[eNB %d] check the mme registration state\n",instance_p->instance);
-	      
   mme = s1ap_eNB_get_MME_from_instance(instance_p);
 
   if ( mme == NULL ) {
-    
     /* Create new MME descriptor */
     s1ap_mme_data_p = calloc(1, sizeof(*s1ap_mme_data_p));
     DevAssert(s1ap_mme_data_p != NULL);
-    
     s1ap_mme_data_p->cnx_id                = s1ap_eNB_fetch_add_global_cnx_id();
     sctp_new_association_req_p->ulp_cnx_id = s1ap_mme_data_p->cnx_id;
-    
     s1ap_mme_data_p->assoc_id          = -1;
     s1ap_mme_data_p->s1ap_eNB_instance = instance_p;
-    
     STAILQ_INIT(&s1ap_mme_data_p->served_gummei);
-  
     /* Insert the new descriptor in list of known MME
      * but not yet associated.
      */
@@ -154,27 +135,23 @@ static void s1ap_eNB_register_mme(s1ap_eNB_instance_t *instance_p,
   } else if (mme->state == S1AP_ENB_STATE_WAITING) {
     instance_p->s1ap_mme_pending_nb ++;
     sctp_new_association_req_p->ulp_cnx_id = mme->cnx_id;
-
     S1AP_INFO("[eNB %d] MME already registered, retrive the data (state %d, cnx %d, mme_nb %d, mme_pending_nb %d)\n",
-	      instance_p->instance, 
-	      mme->state, mme->cnx_id,
-	      instance_p->s1ap_mme_nb, instance_p->s1ap_mme_pending_nb);
-
+              instance_p->instance,
+              mme->state, mme->cnx_id,
+              instance_p->s1ap_mme_nb, instance_p->s1ap_mme_pending_nb);
     /*s1ap_mme_data_p->cnx_id                = mme->cnx_id;
     sctp_new_association_req_p->ulp_cnx_id = mme->cnx_id;
-    
+
     s1ap_mme_data_p->assoc_id          = -1;
     s1ap_mme_data_p->s1ap_eNB_instance = instance_p;
-    */ 
+    */
   } else {
-    
     S1AP_WARN("[eNB %d] MME already registered but not in the waiting state, retrive the data (state %d, cnx %d, mme_nb %d, mme_pending_nb %d)\n",
-	      instance_p->instance, 
-	      mme->state, mme->cnx_id, 
-	      instance_p->s1ap_mme_nb, instance_p->s1ap_mme_pending_nb);
-    
+              instance_p->instance,
+              mme->state, mme->cnx_id,
+              instance_p->s1ap_mme_nb, instance_p->s1ap_mme_pending_nb);
   }
-    
+
   itti_send_msg_to_task(TASK_SCTP, instance_p->instance, message_p);
 }
 
@@ -183,14 +160,11 @@ void s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t *
 {
   s1ap_eNB_instance_t *new_instance;
   uint8_t index;
-  
   DevAssert(s1ap_register_eNB != NULL);
-
   /* Look if the provided instance already exists */
   new_instance = s1ap_eNB_get_instance(instance);
-  
- 
-  if (new_instance != NULL) { 
+
+  if (new_instance != NULL) {
     /* Checks if it is a retry on the same eNB */
     DevCheck(new_instance->eNB_id == s1ap_register_eNB->eNB_id, new_instance->eNB_id, s1ap_register_eNB->eNB_id, 0);
     DevCheck(new_instance->cell_type == s1ap_register_eNB->cell_type, new_instance->cell_type, s1ap_register_eNB->cell_type, 0);
@@ -202,10 +176,8 @@ void s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t *
   } else {
     new_instance = calloc(1, sizeof(s1ap_eNB_instance_t));
     DevAssert(new_instance != NULL);
-
     RB_INIT(&new_instance->s1ap_ue_head);
     RB_INIT(&new_instance->s1ap_mme_head);
-
     /* Copy usefull parameters */
     new_instance->instance         = instance;
     new_instance->eNB_name         = s1ap_register_eNB->eNB_name;
@@ -216,14 +188,12 @@ void s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t *
     new_instance->mnc              = s1ap_register_eNB->mnc;
     new_instance->mnc_digit_length = s1ap_register_eNB->mnc_digit_length;
     new_instance->default_drx      = s1ap_register_eNB->default_drx;
-
     /* Add the new instance to the list of eNB (meaningfull in virtual mode) */
     s1ap_eNB_insert_new_instance(new_instance);
-
     S1AP_INFO("Registered new eNB[%d] and %s eNB id %u\n",
-               instance,
-               s1ap_register_eNB->cell_type == CELL_MACRO_ENB ? "macro" : "home",
-               s1ap_register_eNB->eNB_id);
+              instance,
+              s1ap_register_eNB->cell_type == CELL_MACRO_ENB ? "macro" : "home",
+              s1ap_register_eNB->eNB_id);
   }
 
   DevCheck(s1ap_register_eNB->nb_mme <= S1AP_MAX_NB_MME_IP_ADDRESS,
@@ -232,7 +202,7 @@ void s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t *
   /* Trying to connect to provided list of MME ip address */
   for (index = 0; index < s1ap_register_eNB->nb_mme; index++) {
     s1ap_eNB_register_mme(new_instance,
-    		          &s1ap_register_eNB->mme_ip_address[index],
+                          &s1ap_register_eNB->mme_ip_address[index],
                           &s1ap_register_eNB->enb_ip_address,
                           s1ap_register_eNB->sctp_in_streams,
                           s1ap_register_eNB->sctp_out_streams);
@@ -243,12 +213,9 @@ void s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
 {
   s1ap_eNB_instance_t *instance_p;
   s1ap_eNB_mme_data_t *s1ap_mme_data_p;
-
   DevAssert(sctp_new_association_resp != NULL);
-
   instance_p = s1ap_eNB_get_instance(instance);
   DevAssert(instance_p != NULL);
-
   s1ap_mme_data_p = s1ap_eNB_get_MME(instance_p, -1,
                                      sctp_new_association_resp->ulp_cnx_id);
   DevAssert(s1ap_mme_data_p != NULL);
@@ -258,9 +225,7 @@ void s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
               sctp_new_association_resp->sctp_state,
               instance,
               sctp_new_association_resp->ulp_cnx_id);
-
     s1ap_handle_s1_setup_message(s1ap_mme_data_p, sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN);
-
     return;
   }
 
@@ -268,7 +233,6 @@ void s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
   s1ap_mme_data_p->assoc_id    = sctp_new_association_resp->assoc_id;
   s1ap_mme_data_p->in_streams  = sctp_new_association_resp->in_streams;
   s1ap_mme_data_p->out_streams = sctp_new_association_resp->out_streams;
-
   /* Prepare new S1 Setup Request */
   s1ap_eNB_generate_s1_setup_request(instance_p, s1ap_mme_data_p);
 }
@@ -277,11 +241,10 @@ static
 void s1ap_eNB_handle_sctp_data_ind(sctp_data_ind_t *sctp_data_ind)
 {
   int result;
-
   DevAssert(sctp_data_ind != NULL);
 #if defined(TEST_S1C_MME)
   mme_test_s1_notify_sctp_data_ind(sctp_data_ind->assoc_id, sctp_data_ind->stream,
-          sctp_data_ind->buffer, sctp_data_ind->buffer_length);
+                                   sctp_data_ind->buffer, sctp_data_ind->buffer_length);
 #else
   s1ap_eNB_handle_message(sctp_data_ind->assoc_id, sctp_data_ind->stream,
                           sctp_data_ind->buffer, sctp_data_ind->buffer_length);
@@ -294,11 +257,8 @@ void *s1ap_eNB_task(void *arg)
 {
   MessageDef *received_msg = NULL;
   int         result;
-
   S1AP_DEBUG("Starting S1AP layer\n");
-
   s1ap_eNB_prepare_internal_data();
-
   itti_mark_task_ready(TASK_S1AP);
   MSC_START_USE();
 
@@ -306,116 +266,112 @@ void *s1ap_eNB_task(void *arg)
     itti_receive_msg(TASK_S1AP, &received_msg);
 
     switch (ITTI_MSG_ID(received_msg)) {
-    case TERMINATE_MESSAGE:
-      S1AP_WARN(" *** Exiting S1AP thread\n");
-      itti_exit_task();
+      case TERMINATE_MESSAGE:
+        S1AP_WARN(" *** Exiting S1AP thread\n");
+        itti_exit_task();
+        break;
+
+      case S1AP_REGISTER_ENB_REQ: {
+        /* Register a new eNB.
+         * in Virtual mode eNBs will be distinguished using the mod_id/
+         * Each eNB has to send an S1AP_REGISTER_ENB message with its
+         * own parameters.
+         */
+        s1ap_eNB_handle_register_eNB(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                     &S1AP_REGISTER_ENB_REQ(received_msg));
+      }
       break;
 
-    case S1AP_REGISTER_ENB_REQ: {
-      /* Register a new eNB.
-       * in Virtual mode eNBs will be distinguished using the mod_id/
-       * Each eNB has to send an S1AP_REGISTER_ENB message with its
-       * own parameters.
-       */
-      s1ap_eNB_handle_register_eNB(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                   &S1AP_REGISTER_ENB_REQ(received_msg));
-    }
-    break;
-
-    case SCTP_NEW_ASSOCIATION_RESP: {
-      s1ap_eNB_handle_sctp_association_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                            &received_msg->ittiMsg.sctp_new_association_resp);
-    }
-    break;
-
-    case SCTP_DATA_IND: {
-      s1ap_eNB_handle_sctp_data_ind(&received_msg->ittiMsg.sctp_data_ind);
-    }
-    break;
-
-    case S1AP_NAS_FIRST_REQ: {
-      s1ap_eNB_handle_nas_first_req(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                    &S1AP_NAS_FIRST_REQ(received_msg));
-    }
-    break;
-
-    case S1AP_UPLINK_NAS: {
-      s1ap_eNB_nas_uplink(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                          &S1AP_UPLINK_NAS(received_msg));
-    }
-    break;
+      case SCTP_NEW_ASSOCIATION_RESP: {
+        s1ap_eNB_handle_sctp_association_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                              &received_msg->ittiMsg.sctp_new_association_resp);
+      }
+      break;
 
-    case S1AP_UE_CAPABILITIES_IND: {
-      s1ap_eNB_ue_capabilities(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                               &S1AP_UE_CAPABILITIES_IND(received_msg));
-    }
-    break;
+      case SCTP_DATA_IND: {
+        s1ap_eNB_handle_sctp_data_ind(&received_msg->ittiMsg.sctp_data_ind);
+      }
+      break;
 
-    case S1AP_INITIAL_CONTEXT_SETUP_RESP: {
-      s1ap_eNB_initial_ctxt_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                 &S1AP_INITIAL_CONTEXT_SETUP_RESP(received_msg));
-    }
-    break;
+      case S1AP_NAS_FIRST_REQ: {
+        s1ap_eNB_handle_nas_first_req(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                      &S1AP_NAS_FIRST_REQ(received_msg));
+      }
+      break;
 
-    case S1AP_E_RAB_SETUP_RESP: {
-      s1ap_eNB_e_rab_setup_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-				&S1AP_E_RAB_SETUP_RESP(received_msg));
-    }
-    break;
+      case S1AP_UPLINK_NAS: {
+        s1ap_eNB_nas_uplink(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                            &S1AP_UPLINK_NAS(received_msg));
+      }
+      break;
 
-    case S1AP_E_RAB_MODIFY_RESP: {
-      s1ap_eNB_e_rab_modify_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-        &S1AP_E_RAB_MODIFY_RESP(received_msg));
-    }
-    break;
-      
-    case S1AP_NAS_NON_DELIVERY_IND: {
-      s1ap_eNB_nas_non_delivery_ind(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                    &S1AP_NAS_NON_DELIVERY_IND(received_msg));
-    }
-    break;
+      case S1AP_UE_CAPABILITIES_IND: {
+        s1ap_eNB_ue_capabilities(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                 &S1AP_UE_CAPABILITIES_IND(received_msg));
+      }
+      break;
 
-    case S1AP_UE_CONTEXT_RELEASE_COMPLETE: {
-      s1ap_ue_context_release_complete(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                       &S1AP_UE_CONTEXT_RELEASE_COMPLETE(received_msg));
-    }
-    break;
+      case S1AP_INITIAL_CONTEXT_SETUP_RESP: {
+        s1ap_eNB_initial_ctxt_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                   &S1AP_INITIAL_CONTEXT_SETUP_RESP(received_msg));
+      }
+      break;
 
-    case S1AP_UE_CONTEXT_RELEASE_REQ: {
-      s1ap_eNB_instance_t               *s1ap_eNB_instance_p           = NULL; // test
-      struct s1ap_eNB_ue_context_s      *ue_context_p                  = NULL; // test
+      case S1AP_E_RAB_SETUP_RESP: {
+        s1ap_eNB_e_rab_setup_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                  &S1AP_E_RAB_SETUP_RESP(received_msg));
+      }
+      break;
 
-      s1ap_ue_context_release_req(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                  &S1AP_UE_CONTEXT_RELEASE_REQ(received_msg));
+      case S1AP_E_RAB_MODIFY_RESP: {
+        s1ap_eNB_e_rab_modify_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                   &S1AP_E_RAB_MODIFY_RESP(received_msg));
+      }
+      break;
 
+      case S1AP_NAS_NON_DELIVERY_IND: {
+        s1ap_eNB_nas_non_delivery_ind(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                      &S1AP_NAS_NON_DELIVERY_IND(received_msg));
+      }
+      break;
 
-      s1ap_eNB_instance_p = s1ap_eNB_get_instance(ITTI_MESSAGE_GET_INSTANCE(received_msg)); // test
-      DevAssert(s1ap_eNB_instance_p != NULL); // test
+      case S1AP_UE_CONTEXT_RELEASE_COMPLETE: {
+        s1ap_ue_context_release_complete(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                         &S1AP_UE_CONTEXT_RELEASE_COMPLETE(received_msg));
+      }
+      break;
 
-      if ((ue_context_p = s1ap_eNB_get_ue_context(s1ap_eNB_instance_p,
-                          S1AP_UE_CONTEXT_RELEASE_REQ(received_msg).eNB_ue_s1ap_id)) == NULL) { // test
-        /* The context for this eNB ue s1ap id doesn't exist in the map of eNB UEs */
-        S1AP_ERROR("Failed to find ue context associated with eNB ue s1ap id: %u\n",
-                   S1AP_UE_CONTEXT_RELEASE_REQ(received_msg).eNB_ue_s1ap_id); // test
-      }  // test
-    }
-    break;
+      case S1AP_UE_CONTEXT_RELEASE_REQ: {
+        s1ap_eNB_instance_t               *s1ap_eNB_instance_p           = NULL; // test
+        struct s1ap_eNB_ue_context_s      *ue_context_p                  = NULL; // test
+        s1ap_ue_context_release_req(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                    &S1AP_UE_CONTEXT_RELEASE_REQ(received_msg));
+        s1ap_eNB_instance_p = s1ap_eNB_get_instance(ITTI_MESSAGE_GET_INSTANCE(received_msg)); // test
+        DevAssert(s1ap_eNB_instance_p != NULL); // test
+
+        if ((ue_context_p = s1ap_eNB_get_ue_context(s1ap_eNB_instance_p,
+                            S1AP_UE_CONTEXT_RELEASE_REQ(received_msg).eNB_ue_s1ap_id)) == NULL) { // test
+          /* The context for this eNB ue s1ap id doesn't exist in the map of eNB UEs */
+          S1AP_ERROR("Failed to find ue context associated with eNB ue s1ap id: %u\n",
+                     S1AP_UE_CONTEXT_RELEASE_REQ(received_msg).eNB_ue_s1ap_id); // test
+        }  // test
+      }
+      break;
 
-   case S1AP_E_RAB_RELEASE_RESPONSE: {
+      case S1AP_E_RAB_RELEASE_RESPONSE: {
         s1ap_eNB_e_rab_release_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
                                     &S1AP_E_RAB_RELEASE_RESPONSE(received_msg));
-    }
-    break;
-
-    default:
-      S1AP_ERROR("Received unhandled message: %d:%s\n",
-                 ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
+      }
       break;
+
+      default:
+        S1AP_ERROR("Received unhandled message: %d:%s\n",
+                   ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
+        break;
     }
 
     result = itti_free (ITTI_MSG_ORIGIN_ID(received_msg), received_msg);
     AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-
     received_msg = NULL;
   }
 
@@ -425,62 +381,102 @@ void *s1ap_eNB_task(void *arg)
 static int s1ap_eNB_generate_s1_setup_request(
   s1ap_eNB_instance_t *instance_p, s1ap_eNB_mme_data_t *s1ap_mme_data_p)
 {
-  s1ap_message               message;
-
-  S1ap_S1SetupRequestIEs_t *s1SetupRequest_p;
-  S1ap_PLMNidentity_t       plmnIdentity;
-  S1ap_SupportedTAs_Item_t  ta;
-
+  S1AP_S1AP_PDU_t                     pdu;
+  S1AP_S1SetupRequest_t              *out;
+  S1AP_S1SetupRequestIEs_t           *ie;
+  S1AP_SupportedTAs_Item_t           *ta;
+  S1AP_PLMNidentity_t                *plmn;
   uint8_t  *buffer;
   uint32_t  len;
   int       ret = 0;
-
-  DevAssert(instance_p != NULL);
-  DevAssert(s1ap_mme_data_p != NULL);
-
-  memset(&message, 0, sizeof(s1ap_message));
-
-  message.direction     = S1AP_PDU_PR_initiatingMessage;
-  message.procedureCode = S1ap_ProcedureCode_id_S1Setup;
-  message.criticality   = S1ap_Criticality_reject;
-
-  s1SetupRequest_p = &message.msg.s1ap_S1SetupRequestIEs;
-  memset((void *)&plmnIdentity, 0, sizeof(S1ap_PLMNidentity_t));
-
-  memset((void *)&ta, 0, sizeof(S1ap_SupportedTAs_Item_t));
-
   s1ap_mme_data_p->state = S1AP_ENB_STATE_WAITING;
-
-  s1SetupRequest_p->global_ENB_ID.eNB_ID.present = S1ap_ENB_ID_PR_macroENB_ID;
-  MACRO_ENB_ID_TO_BIT_STRING(instance_p->eNB_id,
-                             &s1SetupRequest_p->global_ENB_ID.eNB_ID.choice.macroENB_ID);
+  /* Prepare the S1AP message to encode */
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = S1AP_S1AP_PDU_PR_initiatingMessage;
+  pdu.choice.initiatingMessage.procedureCode = S1AP_ProcedureCode_id_S1Setup;
+  pdu.choice.initiatingMessage.criticality = S1AP_Criticality_reject;
+  pdu.choice.initiatingMessage.value.present = S1AP_InitiatingMessage__value_PR_S1SetupRequest;
+  out = &pdu.choice.initiatingMessage.value.choice.S1SetupRequest;
+  ie = (S1AP_S1SetupRequestIEs_t *)calloc(1, sizeof(S1AP_S1SetupRequestIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_Global_ENB_ID;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_S1SetupRequestIEs__value_PR_Global_ENB_ID;
   MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length,
-                    &s1SetupRequest_p->global_ENB_ID.pLMNidentity);
-
-  S1AP_INFO("%d -> %02x%02x%02x\n", instance_p->eNB_id, s1SetupRequest_p->global_ENB_ID.eNB_ID.choice.macroENB_ID.buf[0], s1SetupRequest_p->global_ENB_ID.eNB_ID.choice.macroENB_ID.buf[1],
-            s1SetupRequest_p->global_ENB_ID.eNB_ID.choice.macroENB_ID.buf[2]);
-
-  INT16_TO_OCTET_STRING(instance_p->tac, &ta.tAC);
-  MCC_MNC_TO_TBCD(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length, &plmnIdentity);
+                    &ie->value.choice.Global_ENB_ID.pLMNidentity);
+  ie->value.choice.Global_ENB_ID.eNB_ID.present = S1AP_ENB_ID_PR_macroENB_ID;
+  MACRO_ENB_ID_TO_BIT_STRING(instance_p->eNB_id,
+                             &ie->value.choice.Global_ENB_ID.eNB_ID.choice.macroENB_ID);
+  S1AP_INFO("%d -> %02x%02x%02x\n", instance_p->eNB_id,
+            ie->value.choice.Global_ENB_ID.eNB_ID.choice.macroENB_ID.buf[0],
+            ie->value.choice.Global_ENB_ID.eNB_ID.choice.macroENB_ID.buf[1],
+            ie->value.choice.Global_ENB_ID.eNB_ID.choice.macroENB_ID.buf[2]);
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  /* optional */
+  if (instance_p->eNB_name) {
+    ie = (S1AP_S1SetupRequestIEs_t *)calloc(1, sizeof(S1AP_S1SetupRequestIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_eNBname;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_S1SetupRequestIEs__value_PR_ENBname;
+    OCTET_STRING_fromBuf(&ie->value.choice.ENBname, instance_p->eNB_name,
+                         strlen(instance_p->eNB_name));
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-  ASN_SEQUENCE_ADD(&ta.broadcastPLMNs.list, &plmnIdentity);
-  ASN_SEQUENCE_ADD(&s1SetupRequest_p->supportedTAs.list, &ta);
+  ie = (S1AP_S1SetupRequestIEs_t *)calloc(1, sizeof(S1AP_S1SetupRequestIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_SupportedTAs;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_S1SetupRequestIEs__value_PR_SupportedTAs;
+  ta = (S1AP_SupportedTAs_Item_t *)calloc(1, sizeof(S1AP_SupportedTAs_Item_t));
+  INT16_TO_OCTET_STRING(instance_p->tac, &ta->tAC);
+  plmn = (S1AP_PLMNidentity_t *)calloc(1, sizeof(S1AP_PLMNidentity_t));
+  MCC_MNC_TO_TBCD(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length, plmn);
+  ASN_SEQUENCE_ADD(&ta->broadcastPLMNs.list, plmn);
+  ASN_SEQUENCE_ADD(&ie->value.choice.SupportedTAs.list, ta);
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  ie = (S1AP_S1SetupRequestIEs_t *)calloc(1, sizeof(S1AP_S1SetupRequestIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_DefaultPagingDRX;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_S1SetupRequestIEs__value_PR_PagingDRX;
+  ie->value.choice.PagingDRX = instance_p->default_drx;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_S1SetupRequestIEs_t *)calloc(1, sizeof(S1AP_S1SetupRequestIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_CSG_IdList;
+    ie->criticality = S1AP_Criticality_reject;
+    ie->value.present = S1AP_S1SetupRequestIEs__value_PR_CSG_IdList;
+    // ie->value.choice.CSG_IdList = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-  s1SetupRequest_p->defaultPagingDRX = instance_p->default_drx;
+  /* optional */
+  if (0) {
+    ie = (S1AP_S1SetupRequestIEs_t *)calloc(1, sizeof(S1AP_S1SetupRequestIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_UE_RetentionInformation  ;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_S1SetupRequestIEs__value_PR_UE_RetentionInformation;
+    // ie->value.choice.UE_RetentionInformation = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-  if (instance_p->eNB_name != NULL) {
-    s1SetupRequest_p->presenceMask |= S1AP_S1SETUPREQUESTIES_ENBNAME_PRESENT;
-    OCTET_STRING_fromBuf(&s1SetupRequest_p->eNBname, instance_p->eNB_name,
-                         strlen(instance_p->eNB_name));
+  /* optional */
+  if (0) {
+    ie = (S1AP_S1SetupRequestIEs_t *)calloc(1, sizeof(S1AP_S1SetupRequestIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_NB_IoT_DefaultPagingDRX;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_S1SetupRequestIEs__value_PR_NB_IoT_DefaultPagingDRX;
+    // ie->value.choice.NB_IoT_DefaultPagingDRX = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
   }
 
-  if (s1ap_eNB_encode_pdu(&message, &buffer, &len) < 0) {
+  if (s1ap_eNB_encode_pdu(&pdu, &buffer, &len) < 0) {
     S1AP_ERROR("Failed to encode S1 setup request\n");
     return -1;
   }
 
   /* Non UE-Associated signalling -> stream = 0 */
   s1ap_eNB_itti_send_sctp_data_req(instance_p->instance, s1ap_mme_data_p->assoc_id, buffer, len, 0);
-
   return ret;
 }
diff --git a/openair3/S1AP/s1ap_eNB_context_management_procedures.c b/openair3/S1AP/s1ap_eNB_context_management_procedures.c
index 49c5ed28acdbc8b1fdf82edcc05f52a6d2cbbb39..f10ccf58dd52f725632b085ec5008bb1f23c1148 100644
--- a/openair3/S1AP/s1ap_eNB_context_management_procedures.c
+++ b/openair3/S1AP/s1ap_eNB_context_management_procedures.c
@@ -20,8 +20,8 @@
  */
 
 /*! \file s1ap_eNB_context_management_procedures.c
- * \brief S1AP context management procedures 
- * \author  S. Roux and Navid Nikaein 
+ * \brief S1AP context management procedures
+ * \author  S. Roux and Navid Nikaein
  * \date 2010 - 2015
  * \email: navid.nikaein@eurecom.fr
  * \version 1.0
@@ -41,7 +41,6 @@
 
 #include "s1ap_eNB_itti_messaging.h"
 
-#include "s1ap_ies_defs.h"
 #include "s1ap_eNB_encoder.h"
 #include "s1ap_eNB_nnsf.h"
 #include "s1ap_eNB_ue_context.h"
@@ -54,27 +53,22 @@
 int s1ap_ue_context_release_complete(instance_t instance,
                                      s1ap_ue_release_complete_t *ue_release_complete_p)
 {
-  s1ap_eNB_instance_t          *s1ap_eNB_instance_p = NULL;
-  struct s1ap_eNB_ue_context_s *ue_context_p        = NULL;
-
-  S1ap_UEContextReleaseCompleteIEs_t *ue_ctxt_release_complete_ies_p = NULL;
-
-  s1ap_message  message;
-
+  s1ap_eNB_instance_t                 *s1ap_eNB_instance_p = NULL;
+  struct s1ap_eNB_ue_context_s        *ue_context_p        = NULL;
+  S1AP_S1AP_PDU_t                      pdu;
+  S1AP_UEContextReleaseComplete_t     *out;
+  S1AP_UEContextReleaseComplete_IEs_t *ie;
   uint8_t  *buffer;
   uint32_t length;
-  int      ret = -1;
-
   /* Retrieve the S1AP eNB instance associated with Mod_id */
   s1ap_eNB_instance_p = s1ap_eNB_get_instance(instance);
-
   DevAssert(ue_release_complete_p != NULL);
   DevAssert(s1ap_eNB_instance_p != NULL);
 
   /*RB_FOREACH(ue_context_p, s1ap_ue_map, &s1ap_eNB_instance_p->s1ap_ue_head) {
-	  S1AP_WARN("in s1ap_ue_map: UE context eNB_ue_s1ap_id %u mme_ue_s1ap_id %u state %u\n",
-			  ue_context_p->eNB_ue_s1ap_id, ue_context_p->mme_ue_s1ap_id,
-			  ue_context_p->ue_state);
+    S1AP_WARN("in s1ap_ue_map: UE context eNB_ue_s1ap_id %u mme_ue_s1ap_id %u state %u\n",
+        ue_context_p->eNB_ue_s1ap_id, ue_context_p->mme_ue_s1ap_id,
+        ue_context_p->ue_state);
   }*/
   if ((ue_context_p = s1ap_eNB_get_ue_context(s1ap_eNB_instance_p,
                       ue_release_complete_p->eNB_ue_s1ap_id)) == NULL) {
@@ -85,20 +79,62 @@ int s1ap_ue_context_release_complete(instance_t instance,
   }
 
   /* Prepare the S1AP message to encode */
-  memset(&message, 0, sizeof(s1ap_message));
-
-  message.direction     = S1AP_PDU_PR_successfulOutcome;
-  message.procedureCode = S1ap_ProcedureCode_id_UEContextRelease;
-  //message.criticality   = S1ap_Criticality_reject;
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = S1AP_S1AP_PDU_PR_successfulOutcome;
+  pdu.choice.successfulOutcome.procedureCode = S1AP_ProcedureCode_id_UEContextRelease;
+  pdu.choice.successfulOutcome.criticality = S1AP_Criticality_reject;
+  pdu.choice.successfulOutcome.value.present = S1AP_SuccessfulOutcome__value_PR_UEContextReleaseComplete;
+  out = &pdu.choice.successfulOutcome.value.choice.UEContextReleaseComplete;
+  ie = (S1AP_UEContextReleaseComplete_IEs_t *)calloc(1, sizeof(S1AP_UEContextReleaseComplete_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_UEContextReleaseComplete_IEs__value_PR_MME_UE_S1AP_ID;
+  ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  ie = (S1AP_UEContextReleaseComplete_IEs_t *)calloc(1, sizeof(S1AP_UEContextReleaseComplete_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_UEContextReleaseComplete_IEs__value_PR_ENB_UE_S1AP_ID;
+  ie->value.choice.ENB_UE_S1AP_ID = ue_release_complete_p->eNB_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_UEContextReleaseComplete_IEs_t *)calloc(1, sizeof(S1AP_UEContextReleaseComplete_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_CriticalityDiagnostics;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_UEContextReleaseComplete_IEs__value_PR_CriticalityDiagnostics;
+    // ie->value.choice.CriticalityDiagnostics = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-  ue_ctxt_release_complete_ies_p = &message.msg.s1ap_UEContextReleaseCompleteIEs;
+  /* release 12 */
+  if (0) {
+    ie = (S1AP_UEContextReleaseComplete_IEs_t *)calloc(1, sizeof(S1AP_UEContextReleaseComplete_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_UserLocationInformation;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_UEContextReleaseComplete_IEs__value_PR_UserLocationInformation;
+    // ie->value.choice.UserLocationInformation = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-  ue_ctxt_release_complete_ies_p->eNB_UE_S1AP_ID = ue_release_complete_p->eNB_ue_s1ap_id;
-  ue_ctxt_release_complete_ies_p->mme_ue_s1ap_id = ue_context_p->mme_ue_s1ap_id;
-  //ue_ctxt_release_complete_ies_p->criticalityDiagnostics
-  //ue_ctxt_release_complete_ies_p->presenceMask
+  /* release 13 */
+  if (0) {
+    ie = (S1AP_UEContextReleaseComplete_IEs_t *)calloc(1, sizeof(S1AP_UEContextReleaseComplete_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_InformationOnRecommendedCellsAndENBsForPaging;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_UEContextReleaseComplete_IEs__value_PR_InformationOnRecommendedCellsAndENBsForPaging;
+    // ie->value.choice.InformationOnRecommendedCellsAndENBsForPaging = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+    ie = (S1AP_UEContextReleaseComplete_IEs_t *)calloc(1, sizeof(S1AP_UEContextReleaseComplete_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_CellIdentifierAndCELevelForCECapableUEs;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_UEContextReleaseComplete_IEs__value_PR_CellIdentifierAndCELevelForCECapableUEs;
+    // ie->value.choice.CellIdentifierAndCELevelForCECapableUEs = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-  if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+  if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
     /* Encode procedure has failed... */
     S1AP_ERROR("Failed to encode UE context release complete\n");
     return -1;
@@ -113,18 +149,12 @@ int s1ap_ue_context_release_complete(instance_t instance,
     0,0, //MSC_AS_TIME_ARGS(ctxt_pP),
     ue_ctxt_release_complete_ies_p->eNB_UE_S1AP_ID,
     ue_ctxt_release_complete_ies_p->mme_ue_s1ap_id);
-
   /* UE associated signalling -> use the allocated stream */
   s1ap_eNB_itti_send_sctp_data_req(s1ap_eNB_instance_p->instance,
                                    ue_context_p->mme_ref->assoc_id, buffer,
                                    length, ue_context_p->tx_stream);
-
-
   //LG s1ap_eNB_itti_send_sctp_close_association(s1ap_eNB_instance_p->instance,
   //                                 ue_context_p->mme_ref->assoc_id);
-
-
-
   // release UE context
   struct s1ap_eNB_ue_context_s *ue_context2_p = NULL;
 
@@ -137,29 +167,28 @@ int s1ap_ue_context_release_complete(instance_t instance,
     S1AP_WARN("Removing UE context eNB_ue_s1ap_id %u: did not find context\n",
               ue_context_p->eNB_ue_s1ap_id);
   }
+
   /*RB_FOREACH(ue_context_p, s1ap_ue_map, &s1ap_eNB_instance_p->s1ap_ue_head) {
-	  S1AP_WARN("in s1ap_ue_map: UE context eNB_ue_s1ap_id %u mme_ue_s1ap_id %u state %u\n",
-			  ue_context_p->eNB_ue_s1ap_id, ue_context_p->mme_ue_s1ap_id,
-			  ue_context_p->ue_state);
+    S1AP_WARN("in s1ap_ue_map: UE context eNB_ue_s1ap_id %u mme_ue_s1ap_id %u state %u\n",
+        ue_context_p->eNB_ue_s1ap_id, ue_context_p->mme_ue_s1ap_id,
+        ue_context_p->ue_state);
   }*/
-
-  return ret;
+  return 0;
 }
 
 
 int s1ap_ue_context_release_req(instance_t instance,
                                 s1ap_ue_release_req_t *ue_release_req_p)
 {
-  s1ap_eNB_instance_t               *s1ap_eNB_instance_p           = NULL;
-  struct s1ap_eNB_ue_context_s      *ue_context_p                  = NULL;
-  S1ap_UEContextReleaseRequestIEs_t *ue_ctxt_release_request_ies_p = NULL;
-  s1ap_message                       message;
-  uint8_t                           *buffer                        = NULL;
-  uint32_t                           length;
-
+  s1ap_eNB_instance_t                *s1ap_eNB_instance_p           = NULL;
+  struct s1ap_eNB_ue_context_s       *ue_context_p                  = NULL;
+  S1AP_S1AP_PDU_t                     pdu;
+  S1AP_UEContextReleaseRequest_t     *out;
+  S1AP_UEContextReleaseRequest_IEs_t *ie;
+  uint8_t                            *buffer                        = NULL;
+  uint32_t                            length;
   /* Retrieve the S1AP eNB instance associated with Mod_id */
   s1ap_eNB_instance_p = s1ap_eNB_get_instance(instance);
-
   DevAssert(ue_release_req_p != NULL);
   DevAssert(s1ap_eNB_instance_p != NULL);
 
@@ -172,50 +201,74 @@ int s1ap_ue_context_release_req(instance_t instance,
   }
 
   /* Prepare the S1AP message to encode */
-  memset(&message, 0, sizeof(s1ap_message));
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = S1AP_S1AP_PDU_PR_initiatingMessage;
+  pdu.choice.initiatingMessage.procedureCode = S1AP_ProcedureCode_id_UEContextReleaseRequest;
+  pdu.choice.initiatingMessage.criticality = S1AP_Criticality_ignore;
+  pdu.choice.initiatingMessage.value.present = S1AP_InitiatingMessage__value_PR_UEContextReleaseRequest;
+  out = &pdu.choice.initiatingMessage.value.choice.UEContextReleaseRequest;
+  ie = (S1AP_UEContextReleaseRequest_IEs_t *)calloc(1, sizeof(S1AP_UEContextReleaseRequest_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_UEContextReleaseRequest_IEs__value_PR_MME_UE_S1AP_ID;
+  ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  ie = (S1AP_UEContextReleaseRequest_IEs_t *)calloc(1, sizeof(S1AP_UEContextReleaseRequest_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_UEContextReleaseRequest_IEs__value_PR_ENB_UE_S1AP_ID;
+  ie->value.choice.ENB_UE_S1AP_ID = ue_release_req_p->eNB_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  ie = (S1AP_UEContextReleaseRequest_IEs_t *)calloc(1, sizeof(S1AP_UEContextReleaseRequest_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_Cause;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_UEContextReleaseRequest_IEs__value_PR_Cause;
 
-  message.direction     = S1AP_PDU_PR_initiatingMessage;
-  message.procedureCode = S1ap_ProcedureCode_id_UEContextReleaseRequest;
-  //message.criticality   = S1ap_Criticality_reject;
-
-  ue_ctxt_release_request_ies_p = &message.msg.s1ap_UEContextReleaseRequestIEs;
+  switch (ue_release_req_p->cause) {
+    case S1AP_Cause_PR_radioNetwork:
+      ie->value.choice.Cause.present = S1AP_Cause_PR_radioNetwork;
+      ie->value.choice.Cause.choice.radioNetwork = ue_release_req_p->cause_value;
+      break;
+
+    case S1AP_Cause_PR_transport:
+      ie->value.choice.Cause.present = S1AP_Cause_PR_transport;
+      ie->value.choice.Cause.choice.transport = ue_release_req_p->cause_value;
+      break;
+
+    case S1AP_Cause_PR_nas:
+      ie->value.choice.Cause.present = S1AP_Cause_PR_nas;
+      ie->value.choice.Cause.choice.nas = ue_release_req_p->cause_value;
+      break;
+
+    case S1AP_Cause_PR_protocol:
+      ie->value.choice.Cause.present = S1AP_Cause_PR_protocol;
+      ie->value.choice.Cause.choice.protocol = ue_release_req_p->cause_value;
+      break;
+
+    case S1AP_Cause_PR_misc:
+      ie->value.choice.Cause.present = S1AP_Cause_PR_misc;
+      ie->value.choice.Cause.choice.misc = ue_release_req_p->cause_value;
+      break;
+
+    case S1AP_Cause_PR_NOTHING:
+    default:
+      ie->value.choice.Cause.present = S1AP_Cause_PR_NOTHING;
+      break;
+  }
 
-  ue_ctxt_release_request_ies_p->eNB_UE_S1AP_ID = ue_release_req_p->eNB_ue_s1ap_id;
-  ue_ctxt_release_request_ies_p->mme_ue_s1ap_id = ue_context_p->mme_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
 
-  switch (ue_release_req_p->cause) {
-  case S1AP_CAUSE_NOTHING:
-    ue_ctxt_release_request_ies_p->cause.present = S1ap_Cause_PR_NOTHING;
-    break;
-
-  case S1AP_CAUSE_RADIO_NETWORK:
-    ue_ctxt_release_request_ies_p->cause.present = S1ap_Cause_PR_radioNetwork;
-    ue_ctxt_release_request_ies_p->cause.choice.radioNetwork = ue_release_req_p->cause_value;
-    break;
-
-  case S1AP_CAUSE_TRANSPORT:
-    ue_ctxt_release_request_ies_p->cause.present = S1ap_Cause_PR_transport;
-    ue_ctxt_release_request_ies_p->cause.choice.transport = ue_release_req_p->cause_value;
-    break;
-
-  case S1AP_CAUSE_NAS:
-    ue_ctxt_release_request_ies_p->cause.present = S1ap_Cause_PR_nas;
-    ue_ctxt_release_request_ies_p->cause.choice.nas = ue_release_req_p->cause_value;
-    break;
-
-  case S1AP_CAUSE_PROTOCOL:
-    ue_ctxt_release_request_ies_p->cause.present = S1ap_Cause_PR_protocol;
-    ue_ctxt_release_request_ies_p->cause.choice.protocol = ue_release_req_p->cause_value;
-    break;
-
-  case S1AP_CAUSE_MISC:
-  default:
-    ue_ctxt_release_request_ies_p->cause.present = S1ap_Cause_PR_misc;
-    ue_ctxt_release_request_ies_p->cause.choice.misc = ue_release_req_p->cause_value;
-    break;
+  /* optional */
+  if (0) {
+    ie = (S1AP_UEContextReleaseRequest_IEs_t *)calloc(1, sizeof(S1AP_UEContextReleaseRequest_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_GWContextReleaseIndication;
+    ie->criticality = S1AP_Criticality_reject;
+    ie->value.present = S1AP_UEContextReleaseRequest_IEs__value_PR_GWContextReleaseIndication;
+    ie->value.choice.GWContextReleaseIndication = TRUE;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
   }
 
-  if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+  if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
     /* Encode procedure has failed... */
     S1AP_ERROR("Failed to encode UE context release complete\n");
     return -1;
@@ -230,12 +283,10 @@ int s1ap_ue_context_release_req(instance_t instance,
     0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
     ue_ctxt_release_request_ies_p->eNB_UE_S1AP_ID,
     ue_ctxt_release_request_ies_p->mme_ue_s1ap_id);
-
   /* UE associated signalling -> use the allocated stream */
   s1ap_eNB_itti_send_sctp_data_req(s1ap_eNB_instance_p->instance,
                                    ue_context_p->mme_ref->assoc_id, buffer,
                                    length, ue_context_p->tx_stream);
-
   return 0;
 }
 
diff --git a/openair3/S1AP/s1ap_eNB_decoder.c b/openair3/S1AP/s1ap_eNB_decoder.c
index eac52c53ba6fc52cf13340267630a41d1de68c8c..d3a2fad8f52a36e5b0208ae36037e830a8d68ed9 100644
--- a/openair3/S1AP/s1ap_eNB_decoder.c
+++ b/openair3/S1AP/s1ap_eNB_decoder.c
@@ -34,235 +34,172 @@
 #include "intertask_interface.h"
 
 #include "s1ap_common.h"
-#include "s1ap_ies_defs.h"
 #include "s1ap_eNB_decoder.h"
 
-static int s1ap_eNB_decode_initiating_message(s1ap_message *message,
-    S1ap_InitiatingMessage_t *initiating_p)
+
+static int s1ap_eNB_decode_initiating_message(S1AP_S1AP_PDU_t *pdu)
 {
-  int         ret = -1;
   MessageDef *message_p;
-  char       *message_string = NULL;
-  size_t      message_string_size;
   MessagesIds message_id;
-
-  DevAssert(initiating_p != NULL);
-
-  message_string = calloc(10000, sizeof(char));
-
-  s1ap_string_total_size = 0;
-
-  message->procedureCode = initiating_p->procedureCode;
-  message->criticality   = initiating_p->criticality;
-
-  switch(initiating_p->procedureCode) {
-  case S1ap_ProcedureCode_id_downlinkNASTransport:
-    ret = s1ap_decode_s1ap_downlinknastransporties(
-            &message->msg.s1ap_DownlinkNASTransportIEs,
-            &initiating_p->value);
-    s1ap_xer_print_s1ap_downlinknastransport(s1ap_xer__print2sp,
-        message_string,
-        message);
-    message_id          = S1AP_DOWNLINK_NAS_LOG;
-    message_string_size = strlen(message_string);
-    message_p           = itti_alloc_new_message_sized(TASK_S1AP,
-                          message_id,
-                          message_string_size + sizeof (IttiMsgText));
-    message_p->ittiMsg.s1ap_downlink_nas_log.size = message_string_size;
-    memcpy(&message_p->ittiMsg.s1ap_downlink_nas_log.text, message_string, message_string_size);
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-    free(message_string);
-    break;
-
-  case S1ap_ProcedureCode_id_InitialContextSetup:
-    ret = s1ap_decode_s1ap_initialcontextsetuprequesties(
-            &message->msg.s1ap_InitialContextSetupRequestIEs, &initiating_p->value);
-    s1ap_xer_print_s1ap_initialcontextsetuprequest(s1ap_xer__print2sp, message_string, message);
-    message_id = S1AP_INITIAL_CONTEXT_SETUP_LOG;
-    message_string_size = strlen(message_string);
-    message_p           = itti_alloc_new_message_sized(TASK_S1AP,
-                          message_id,
-                          message_string_size + sizeof (IttiMsgText));
-    message_p->ittiMsg.s1ap_initial_context_setup_log.size = message_string_size;
-    memcpy(&message_p->ittiMsg.s1ap_initial_context_setup_log.text, message_string, message_string_size);
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-    free(message_string);
-    break;
-
-  case S1ap_ProcedureCode_id_UEContextRelease:
-    ret = s1ap_decode_s1ap_uecontextreleasecommandies(
-            &message->msg.s1ap_UEContextReleaseCommandIEs, &initiating_p->value);
-    s1ap_xer_print_s1ap_uecontextreleasecommand(s1ap_xer__print2sp, message_string, message);
-    message_id = S1AP_UE_CONTEXT_RELEASE_COMMAND_LOG;
-    message_string_size = strlen(message_string);
-    message_p           = itti_alloc_new_message_sized(TASK_S1AP,
-                          message_id,
-                          message_string_size + sizeof (IttiMsgText));
-    message_p->ittiMsg.s1ap_ue_context_release_command_log.size = message_string_size;
-    memcpy(&message_p->ittiMsg.s1ap_ue_context_release_command_log.text, message_string, message_string_size);
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-    free(message_string);
-    break;
-
-  case S1ap_ProcedureCode_id_Paging:
-    ret = s1ap_decode_s1ap_pagingies(
-            &message->msg.s1ap_PagingIEs, &initiating_p->value);
-    s1ap_xer_print_s1ap_paging(s1ap_xer__print2sp, message_string, message);
-    message_id = S1AP_PAGING_LOG;
-    message_string_size = strlen(message_string);
-    message_p           = itti_alloc_new_message_sized(TASK_S1AP,
-                          message_id,
-                          message_string_size + sizeof (IttiMsgText));
-    message_p->ittiMsg.s1ap_paging_log.size = message_string_size;
-    memcpy(&message_p->ittiMsg.s1ap_paging_log.text, message_string, message_string_size);
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-    S1AP_INFO("Paging initiating message\n");
-    free(message_string);
-    break;
-
-
-  case S1ap_ProcedureCode_id_E_RABSetup:
-    ret = s1ap_decode_s1ap_e_rabsetuprequesties(
-						&message->msg.s1ap_E_RABSetupRequestIEs, &initiating_p->value);
-    //s1ap_xer_print_s1ap_e_rabsetuprequest(s1ap_xer__print2sp, message_string, message);
-    message_id = S1AP_E_RAB_SETUP_REQUEST_LOG;
-    message_string_size = strlen(message_string);
-    message_p           = itti_alloc_new_message_sized(TASK_S1AP,
-                          message_id,
-                          message_string_size + sizeof (IttiMsgText));
-    message_p->ittiMsg.s1ap_e_rab_setup_request_log.size = message_string_size;
-    memcpy(&message_p->ittiMsg.s1ap_e_rab_setup_request_log.text, message_string, message_string_size);
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-    free(message_string);
-    S1AP_INFO("E_RABSetup initiating message\n");
-    break;
-
-  case S1ap_ProcedureCode_id_E_RABModify:
-    ret = s1ap_decode_s1ap_e_rabmodifyrequesties(
-            &message->msg.s1ap_E_RABModifyRequestIEs, &initiating_p->value);
-    message_id = S1AP_E_RAB_MODIFY_REQUEST_LOG;
-    message_string_size = strlen(message_string);
-    message_p           = itti_alloc_new_message_sized(TASK_S1AP,
-                          message_id,
-                          message_string_size + sizeof (IttiMsgText));
-    message_p->ittiMsg.s1ap_e_rab_modify_request_log.size = message_string_size;
-    memcpy(&message_p->ittiMsg.s1ap_e_rab_modify_request_log.text, message_string, message_string_size);
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-    free(message_string);
-    S1AP_INFO("E_RABModify initiating message\n");
-    break;
-
-  case S1ap_ProcedureCode_id_E_RABRelease:
-    ret = s1ap_decode_s1ap_e_rabreleasecommandies(
-            &message->msg.s1ap_E_RABReleaseCommandIEs, &initiating_p->value);
-    s1ap_xer_print_s1ap_e_rabreleasecommand(s1ap_xer__print2sp, message_string, message);
-    message_id = S1AP_E_RAB_RELEASE_REQUEST_LOG;
-    message_string_size = strlen(message_string);
-    message_p           = itti_alloc_new_message_sized(TASK_S1AP,
-                          message_id,
-                          message_string_size + sizeof (IttiMsgText));
-    message_p->ittiMsg.s1ap_e_rab_release_request_log.size = message_string_size;
-    memcpy(&message_p->ittiMsg.s1ap_e_rab_release_request_log.text, message_string, message_string_size);
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-    free(message_string);
-    S1AP_INFO("TODO  E_RABRelease nitiating message\n");    
-    break;
-
-  default:
-    S1AP_ERROR("Unknown procedure ID (%d) for initiating message\n",
-               (int)initiating_p->procedureCode);
-    AssertFatal( 0 , "Unknown procedure ID (%d) for initiating message\n",
-                 (int)initiating_p->procedureCode);
-    return -1;
+  asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
+  DevAssert(pdu != NULL);
+
+  switch(pdu->choice.initiatingMessage.procedureCode) {
+    case S1AP_ProcedureCode_id_downlinkNASTransport:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_DOWNLINK_NAS_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
+                  res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_downlink_nas_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_downlink_nas_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    case S1AP_ProcedureCode_id_InitialContextSetup:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_INITIAL_CONTEXT_SETUP_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
+                  res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_initial_context_setup_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_initial_context_setup_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    case S1AP_ProcedureCode_id_UEContextRelease:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_UE_CONTEXT_RELEASE_COMMAND_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
+                  res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_ue_context_release_command_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_ue_context_release_command_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    case S1AP_ProcedureCode_id_Paging:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_PAGING_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
+                  res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_paging_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_paging_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      S1AP_INFO("Paging initiating message\n");
+      free(res.buffer);
+      break;
+
+    case S1AP_ProcedureCode_id_E_RABSetup:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_E_RAB_SETUP_REQUEST_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
+                  res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_e_rab_setup_request_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_e_rab_setup_request_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      S1AP_INFO("E_RABSetup initiating message\n");
+      break;
+
+    case S1AP_ProcedureCode_id_E_RABModify:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_E_RAB_MODIFY_REQUEST_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
+                  res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_e_rab_modify_request_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_e_rab_modify_request_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      S1AP_INFO("E_RABModify initiating message\n");
+      break;
+
+    case S1AP_ProcedureCode_id_E_RABRelease:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_E_RAB_RELEASE_REQUEST_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
+                  res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_e_rab_release_request_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_e_rab_release_request_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      S1AP_INFO("TODO  E_RABRelease nitiating message\n");
+      break;
+
+    default:
+      S1AP_ERROR("Unknown procedure ID (%d) for initiating message\n",
+                 (int)pdu->choice.initiatingMessage.procedureCode);
+      AssertFatal( 0, "Unknown procedure ID (%d) for initiating message\n",
+                   (int)pdu->choice.initiatingMessage.procedureCode);
+      return -1;
   }
 
-
-  return ret;
+  return 0;
 }
 
-static int s1ap_eNB_decode_successful_outcome(s1ap_message *message,
-    S1ap_SuccessfulOutcome_t *successfullOutcome_p)
+static int s1ap_eNB_decode_successful_outcome(S1AP_S1AP_PDU_t *pdu)
 {
-  int ret = -1;
   MessageDef *message_p;
-  char       *message_string = NULL;
-  size_t      message_string_size;
   MessagesIds message_id;
-
-  DevAssert(successfullOutcome_p != NULL);
-
-  message_string = malloc(sizeof(char) * 10000);
-  memset((void*)message_string,0,sizeof(char) * 10000);
-
-  s1ap_string_total_size = 0;
-
-  message->procedureCode = successfullOutcome_p->procedureCode;
-  message->criticality   = successfullOutcome_p->criticality;
-
-  switch(successfullOutcome_p->procedureCode) {
-  case S1ap_ProcedureCode_id_S1Setup:
-    ret = s1ap_decode_s1ap_s1setupresponseies(
-            &message->msg.s1ap_S1SetupResponseIEs, &successfullOutcome_p->value);
-    s1ap_xer_print_s1ap_s1setupresponse(s1ap_xer__print2sp, message_string, message);
-    message_id = S1AP_S1_SETUP_LOG;
-    break;
-
-  default:
-    S1AP_ERROR("Unknown procedure ID (%d) for successfull outcome message\n",
-               (int)successfullOutcome_p->procedureCode);
-    return -1;
+  asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
+  DevAssert(pdu != NULL);
+
+  switch(pdu->choice.successfulOutcome.procedureCode) {
+    case S1AP_ProcedureCode_id_S1Setup:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_S1_SETUP_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_s1_setup_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_s1_setup_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    default:
+      S1AP_ERROR("Unknown procedure ID (%d) for successfull outcome message\n",
+                 (int)pdu->choice.successfulOutcome.procedureCode);
+      return -1;
   }
 
-  message_string_size = strlen(message_string);
-
-  message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, message_string_size + sizeof (IttiMsgText));
-  message_p->ittiMsg.s1ap_s1_setup_log.size = message_string_size;
-  memcpy(&message_p->ittiMsg.s1ap_s1_setup_log.text, message_string, message_string_size);
-
-  itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-
-  free(message_string);
-
-  return ret;
+  return 0;
 }
 
-static int s1ap_eNB_decode_unsuccessful_outcome(s1ap_message *message,
-    S1ap_UnsuccessfulOutcome_t *unSuccessfullOutcome_p)
+static int s1ap_eNB_decode_unsuccessful_outcome(S1AP_S1AP_PDU_t *pdu)
 {
-  int ret = -1;
-  DevAssert(unSuccessfullOutcome_p != NULL);
-
-  message->procedureCode = unSuccessfullOutcome_p->procedureCode;
-  message->criticality   = unSuccessfullOutcome_p->criticality;
-
-  switch(unSuccessfullOutcome_p->procedureCode) {
-  case S1ap_ProcedureCode_id_S1Setup:
-    return s1ap_decode_s1ap_s1setupfailureies(
-             &message->msg.s1ap_S1SetupFailureIEs, &unSuccessfullOutcome_p->value);
-
-  default:
-    S1AP_ERROR("Unknown procedure ID (%d) for unsuccessfull outcome message\n",
-               (int)unSuccessfullOutcome_p->procedureCode);
-    break;
+  MessageDef *message_p;
+  MessagesIds message_id;
+  asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
+  DevAssert(pdu != NULL);
+
+  switch(pdu->choice.unsuccessfulOutcome.procedureCode) {
+    case S1AP_ProcedureCode_id_S1Setup:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_S1_SETUP_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_s1_setup_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_s1_setup_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    default:
+      S1AP_ERROR("Unknown procedure ID (%d) for unsuccessfull outcome message\n",
+                 (int)pdu->choice.unsuccessfulOutcome.procedureCode);
+      return -1;
   }
 
-  return ret;
+  return 0;
 }
 
-int s1ap_eNB_decode_pdu(s1ap_message *message, const uint8_t * const buffer,
+int s1ap_eNB_decode_pdu(S1AP_S1AP_PDU_t *pdu, const uint8_t *const buffer,
                         const uint32_t length)
 {
-  S1AP_PDU_t  pdu;
-  S1AP_PDU_t *pdu_p = &pdu;
   asn_dec_rval_t dec_ret;
-
+  DevAssert(pdu != NULL);
   DevAssert(buffer != NULL);
-
-  memset((void *)pdu_p, 0, sizeof(S1AP_PDU_t));
-
   dec_ret = aper_decode(NULL,
-                        &asn_DEF_S1AP_PDU,
-                        (void **)&pdu_p,
+                        &asn_DEF_S1AP_S1AP_PDU,
+                        (void **)pdu,
                         buffer,
                         length,
                         0,
@@ -273,24 +210,19 @@ int s1ap_eNB_decode_pdu(s1ap_message *message, const uint8_t * const buffer,
     return -1;
   }
 
-  message->direction = pdu_p->present;
-
-  switch(pdu_p->present) {
-  case S1AP_PDU_PR_initiatingMessage:
-    return s1ap_eNB_decode_initiating_message(message,
-           &pdu_p->choice.initiatingMessage);
+  switch(pdu->present) {
+    case S1AP_S1AP_PDU_PR_initiatingMessage:
+      return s1ap_eNB_decode_initiating_message(pdu);
 
-  case S1AP_PDU_PR_successfulOutcome:
-    return s1ap_eNB_decode_successful_outcome(message,
-           &pdu_p->choice.successfulOutcome);
+    case S1AP_S1AP_PDU_PR_successfulOutcome:
+      return s1ap_eNB_decode_successful_outcome(pdu);
 
-  case S1AP_PDU_PR_unsuccessfulOutcome:
-    return s1ap_eNB_decode_unsuccessful_outcome(message,
-           &pdu_p->choice.unsuccessfulOutcome);
+    case S1AP_S1AP_PDU_PR_unsuccessfulOutcome:
+      return s1ap_eNB_decode_unsuccessful_outcome(pdu);
 
-  default:
-    S1AP_DEBUG("Unknown presence (%d) or not implemented\n", (int)pdu_p->present);
-    break;
+    default:
+      S1AP_DEBUG("Unknown presence (%d) or not implemented\n", (int)pdu->present);
+      break;
   }
 
   return -1;
diff --git a/openair3/S1AP/s1ap_eNB_decoder.h b/openair3/S1AP/s1ap_eNB_decoder.h
index f321f8227f14fc550ee944c7ef2871770252ec88..f8f58d85602f9c18ac1a1980455b54f3bb4ca2dd 100644
--- a/openair3/S1AP/s1ap_eNB_decoder.h
+++ b/openair3/S1AP/s1ap_eNB_decoder.h
@@ -20,12 +20,12 @@
  */
 
 #include <stdint.h>
-#include "s1ap_ies_defs.h"
+
 
 #ifndef S1AP_ENB_DECODER_H_
 #define S1AP_ENB_DECODER_H_
 
-int s1ap_eNB_decode_pdu(s1ap_message *message, const uint8_t * const buffer,
+int s1ap_eNB_decode_pdu(S1AP_S1AP_PDU_t *pdu, const uint8_t *const buffer,
                         const uint32_t length) __attribute__ ((warn_unused_result));
 
 #endif /* S1AP_ENB_DECODER_H_ */
diff --git a/openair3/S1AP/s1ap_eNB_encoder.c b/openair3/S1AP/s1ap_eNB_encoder.c
index 7bd8bc09aabf6165dffe649bc2700678fd90a03b..bc0c69792def7fec332f0723ed6e5e9a9d7fb640 100644
--- a/openair3/S1AP/s1ap_eNB_encoder.c
+++ b/openair3/S1AP/s1ap_eNB_encoder.c
@@ -32,615 +32,251 @@
 #include <stdint.h>
 
 #include "assertions.h"
-
 #include "conversions.h"
-
 #include "intertask_interface.h"
-
 #include "s1ap_common.h"
-#include "s1ap_ies_defs.h"
 #include "s1ap_eNB_encoder.h"
 
-static inline int s1ap_eNB_encode_initiating(s1ap_message *message,
+static inline int s1ap_eNB_encode_initiating(S1AP_S1AP_PDU_t *pdu,
     uint8_t **buffer,
     uint32_t *len);
 
-static inline int s1ap_eNB_encode_successfull_outcome(s1ap_message *message,
+static inline int s1ap_eNB_encode_successfull_outcome(S1AP_S1AP_PDU_t *pdu,
     uint8_t **buffer, uint32_t *len);
 
-static inline int s1ap_eNB_encode_unsuccessfull_outcome(s1ap_message *message,
+static inline int s1ap_eNB_encode_unsuccessfull_outcome(S1AP_S1AP_PDU_t *pdu,
     uint8_t **buffer, uint32_t *len);
 
-static inline int s1ap_eNB_encode_s1_setup_request(
-  S1ap_S1SetupRequestIEs_t *s1SetupRequestIEs, uint8_t **buffer, uint32_t *length);
-
-static inline int s1ap_eNB_encode_trace_failure(S1ap_TraceFailureIndicationIEs_t
-    *trace_failure_ies_p, uint8_t **buffer,
-    uint32_t *length);
-
-static inline int s1ap_eNB_encode_initial_ue_message(S1ap_InitialUEMessageIEs_t
-    *initialUEmessageIEs_p, uint8_t **buffer,
-    uint32_t *length);
-
-static inline int s1ap_eNB_encode_uplink_nas_transport(S1ap_UplinkNASTransportIEs_t
-    *uplinkNASTransportIEs,
-    uint8_t **buffer,
-    uint32_t *length);
-
-static inline int s1ap_eNB_encode_ue_capability_info_indication(
-  S1ap_UECapabilityInfoIndicationIEs_t *ueCapabilityInfoIndicationIEs,
-  uint8_t **buffer,
-  uint32_t *length);
-
-static inline int s1ap_eNB_encode_initial_context_setup_response(
-  S1ap_InitialContextSetupResponseIEs_t *initialContextSetupResponseIEs,
-  uint8_t **buffer,
-  uint32_t *length);
-
-static inline
-int s1ap_eNB_encode_nas_non_delivery(
-  S1ap_NASNonDeliveryIndication_IEs_t *nasNonDeliveryIndicationIEs,
-  uint8_t                            **buffer,
-  uint32_t                            *length);
-
-static inline
-int s1ap_eNB_encode_ue_context_release_complete(
-  S1ap_UEContextReleaseCompleteIEs_t *s1ap_UEContextReleaseCompleteIEs,
-  uint8_t                           **buffer,
-  uint32_t                           *length);
-
-static inline
-int s1ap_eNB_encode_ue_context_release_request(
-  S1ap_UEContextReleaseRequestIEs_t *s1ap_UEContextReleaseRequestIEs,
-  uint8_t                              **buffer,
-  uint32_t                              *length);
-
-static inline
-int s1ap_eNB_encode_e_rab_setup_response(S1ap_E_RABSetupResponseIEs_t  *E_RABSetupResponseIEs,
-					 uint8_t                              **buffer,
-					 uint32_t                              *length);
-
-static inline
-int s1ap_eNB_encode_e_rab_modify_response(S1ap_E_RABModifyResponseIEs_t  *E_RABModifyResponseIEs,
-           uint8_t                              **buffer,
-           uint32_t                              *length);
-
-static inline
-int s1ap_eNB_encode_e_rab_release_response(S1ap_E_RABReleaseResponseIEs_t  *s1ap_E_RABReleaseResponseIEs,
-                     uint8_t                              **buffer,
-                     uint32_t                              *length);
-
-int s1ap_eNB_encode_pdu(s1ap_message *message, uint8_t **buffer, uint32_t *len)
+int s1ap_eNB_encode_pdu(S1AP_S1AP_PDU_t *pdu, uint8_t **buffer, uint32_t *len)
 {
-  DevAssert(message != NULL);
+  int ret = -1;
+  DevAssert(pdu != NULL);
   DevAssert(buffer != NULL);
   DevAssert(len != NULL);
 
-  switch(message->direction) {
-  case S1AP_PDU_PR_initiatingMessage:
-    return s1ap_eNB_encode_initiating(message, buffer, len);
+  switch(pdu->present) {
+    case S1AP_S1AP_PDU_PR_initiatingMessage:
+      ret = s1ap_eNB_encode_initiating(pdu, buffer, len);
+      break;
 
-  case S1AP_PDU_PR_successfulOutcome:
-    return s1ap_eNB_encode_successfull_outcome(message, buffer, len);
+    case S1AP_S1AP_PDU_PR_successfulOutcome:
+      ret = s1ap_eNB_encode_successfull_outcome(pdu, buffer, len);
+      break;
 
-  case S1AP_PDU_PR_unsuccessfulOutcome:
-    return s1ap_eNB_encode_unsuccessfull_outcome(message, buffer, len);
+    case S1AP_S1AP_PDU_PR_unsuccessfulOutcome:
+      ret = s1ap_eNB_encode_unsuccessfull_outcome(pdu, buffer, len);
+      break;
 
-  default:
-    S1AP_DEBUG("Unknown message outcome (%d) or not implemented",
-               (int)message->direction);
-    break;
+    default:
+      S1AP_DEBUG("Unknown message outcome (%d) or not implemented",
+                 (int)pdu->present);
+      return -1;
   }
 
-  return -1;
+  ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1AP_S1AP_PDU, pdu);
+  return ret;
 }
 
 static inline
-int s1ap_eNB_encode_initiating(s1ap_message *s1ap_message_p,
+int s1ap_eNB_encode_initiating(S1AP_S1AP_PDU_t *pdu,
                                uint8_t **buffer, uint32_t *len)
 {
-  int ret = -1;
   MessageDef *message_p;
-  char       *message_string = NULL;
-  size_t      message_string_size;
   MessagesIds message_id;
-
-  DevAssert(s1ap_message_p != NULL);
-
-  message_string = calloc(10000, sizeof(char));
-
-  s1ap_string_total_size = 0;
-
-  switch(s1ap_message_p->procedureCode) {
-  case S1ap_ProcedureCode_id_S1Setup:
-    ret = s1ap_eNB_encode_s1_setup_request(
-            &s1ap_message_p->msg.s1ap_S1SetupRequestIEs, buffer, len);
-    s1ap_xer_print_s1ap_s1setuprequest(s1ap_xer__print2sp, message_string, s1ap_message_p);
-    message_id = S1AP_S1_SETUP_LOG;
-    break;
-
-  case S1ap_ProcedureCode_id_uplinkNASTransport:
-    ret = s1ap_eNB_encode_uplink_nas_transport(
-            &s1ap_message_p->msg.s1ap_UplinkNASTransportIEs, buffer, len);
-    s1ap_xer_print_s1ap_uplinknastransport(s1ap_xer__print2sp, message_string, s1ap_message_p);
-    message_id = S1AP_UPLINK_NAS_LOG;
-    break;
-
-  case S1ap_ProcedureCode_id_UECapabilityInfoIndication:
-    ret = s1ap_eNB_encode_ue_capability_info_indication(
-            &s1ap_message_p->msg.s1ap_UECapabilityInfoIndicationIEs, buffer, len);
-    s1ap_xer_print_s1ap_uecapabilityinfoindication(s1ap_xer__print2sp, message_string, s1ap_message_p);
-    message_id = S1AP_UE_CAPABILITY_IND_LOG;
-    break;
-
-  case S1ap_ProcedureCode_id_initialUEMessage:
-    ret = s1ap_eNB_encode_initial_ue_message(
-            &s1ap_message_p->msg.s1ap_InitialUEMessageIEs, buffer, len);
-    s1ap_xer_print_s1ap_initialuemessage(s1ap_xer__print2sp, message_string, s1ap_message_p);
-    message_id = S1AP_INITIAL_UE_MESSAGE_LOG;
-    break;
-
-  case S1ap_ProcedureCode_id_NASNonDeliveryIndication:
-    ret = s1ap_eNB_encode_nas_non_delivery(
-            &s1ap_message_p->msg.s1ap_NASNonDeliveryIndication_IEs, buffer, len);
-    s1ap_xer_print_s1ap_nasnondeliveryindication_(s1ap_xer__print2sp,
-        message_string, s1ap_message_p);
-    message_id = S1AP_NAS_NON_DELIVERY_IND_LOG;
-    break;
-
-  case S1ap_ProcedureCode_id_UEContextReleaseRequest:
-    ret = s1ap_eNB_encode_ue_context_release_request(
-            &s1ap_message_p->msg.s1ap_UEContextReleaseRequestIEs, buffer, len);
-    s1ap_xer_print_s1ap_uecontextreleaserequest(s1ap_xer__print2sp,
-        message_string, s1ap_message_p);
-    message_id = S1AP_UE_CONTEXT_RELEASE_REQ_LOG;
-    break;
-
-
-  default:
-    S1AP_DEBUG("Unknown procedure ID (%d) for initiating message\n",
-               (int)s1ap_message_p->procedureCode);
-    return ret;
-    break;
+  asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
+  DevAssert(pdu != NULL);
+
+  switch(pdu->choice.initiatingMessage.procedureCode) {
+    case S1AP_ProcedureCode_id_S1Setup:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_S1_SETUP_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_s1_setup_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_s1_setup_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    case S1AP_ProcedureCode_id_uplinkNASTransport:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_UPLINK_NAS_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_uplink_nas_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_uplink_nas_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    case S1AP_ProcedureCode_id_UECapabilityInfoIndication:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_UE_CAPABILITY_IND_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_ue_capability_ind_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_ue_capability_ind_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    case S1AP_ProcedureCode_id_initialUEMessage:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_INITIAL_UE_MESSAGE_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_initial_ue_message_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_initial_ue_message_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    case S1AP_ProcedureCode_id_NASNonDeliveryIndication:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_NAS_NON_DELIVERY_IND_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_nas_non_delivery_ind_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_nas_non_delivery_ind_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    case S1AP_ProcedureCode_id_UEContextReleaseRequest:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_UE_CONTEXT_RELEASE_REQ_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_ue_context_release_req_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_ue_context_release_req_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    default:
+      S1AP_DEBUG("Unknown procedure ID (%d) for initiating message\n",
+                 (int)pdu->choice.initiatingMessage.procedureCode);
+      return -1;
   }
 
-  message_string_size = strlen(message_string);
-
-  message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, message_string_size + sizeof (IttiMsgText));
-  message_p->ittiMsg.s1ap_s1_setup_log.size = message_string_size;
-  memcpy(&message_p->ittiMsg.s1ap_s1_setup_log.text, message_string, message_string_size);
-
-  itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-
-  free(message_string);
+  if (asn1_xer_print) {
+    xer_fprint(stdout, &asn_DEF_S1AP_S1AP_PDU, (void *)pdu);
+  }
 
-  return ret;
+  memset(&res, 0, sizeof(res));
+  res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+  *buffer = res.buffer;
+  *len = res.result.encoded;
+  return 0;
 }
 
 static inline
-int s1ap_eNB_encode_successfull_outcome(s1ap_message *s1ap_message_p,
+int s1ap_eNB_encode_successfull_outcome(S1AP_S1AP_PDU_t *pdu,
                                         uint8_t **buffer, uint32_t *len)
 {
-  int ret = -1;
   MessageDef *message_p;
-  char       *message_string = NULL;
-  size_t      message_string_size;
   MessagesIds message_id;
-
-  DevAssert(s1ap_message_p != NULL);
-
-  message_string = calloc(10000, sizeof(char));
-
-  s1ap_string_total_size = 0;
-  message_string_size = strlen(message_string);
-
-
-  switch(s1ap_message_p->procedureCode) {
-  case S1ap_ProcedureCode_id_InitialContextSetup:
-    ret = s1ap_eNB_encode_initial_context_setup_response(
-            &s1ap_message_p->msg.s1ap_InitialContextSetupResponseIEs, buffer, len);
-
-    s1ap_xer_print_s1ap_initialcontextsetupresponse(s1ap_xer__print2sp, message_string, s1ap_message_p);
-    message_id = S1AP_INITIAL_CONTEXT_SETUP_LOG;
-    message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, message_string_size + sizeof (IttiMsgText));
-    message_p->ittiMsg.s1ap_initial_context_setup_log.size = message_string_size;
-    memcpy(&message_p->ittiMsg.s1ap_initial_context_setup_log.text, message_string, message_string_size);
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-    free(message_string);
-    break;
-
-  case S1ap_ProcedureCode_id_UEContextRelease:
-    ret = s1ap_eNB_encode_ue_context_release_complete(
-            &s1ap_message_p->msg.s1ap_UEContextReleaseCompleteIEs, buffer, len);
-    s1ap_xer_print_s1ap_uecontextreleasecomplete(s1ap_xer__print2sp, message_string, s1ap_message_p);
-    message_id = S1AP_UE_CONTEXT_RELEASE_COMPLETE_LOG;
-    message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, message_string_size + sizeof (IttiMsgText));
-    message_p->ittiMsg.s1ap_ue_context_release_complete_log.size = message_string_size;
-    memcpy(&message_p->ittiMsg.s1ap_ue_context_release_complete_log.text, message_string, message_string_size);
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-    free(message_string);
-    break;
-
-  case S1ap_ProcedureCode_id_E_RABSetup:
-
-    ret = s1ap_eNB_encode_e_rab_setup_response (
-           &s1ap_message_p->msg.s1ap_E_RABSetupResponseIEs, buffer, len);
-    //s1ap_xer_print_s1ap_e_rabsetupresponse (s1ap_xer__print2sp, message_string, s1ap_message_p);
-    message_id =  S1AP_E_RAB_SETUP_RESPONSE_LOG ;
-    message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, message_string_size + sizeof (IttiMsgText));
-    message_p->ittiMsg.s1ap_e_rab_setup_response_log.size = message_string_size;
-    memcpy(&message_p->ittiMsg.s1ap_e_rab_setup_response_log.text, message_string, message_string_size);
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-    free(message_string);
-    S1AP_INFO("E_RABSetup successful message\n");
-    break;
-
-  case S1ap_ProcedureCode_id_E_RABModify:
-    ret = s1ap_eNB_encode_e_rab_modify_response (
-           &s1ap_message_p->msg.s1ap_E_RABModifyResponseIEs, buffer, len);
-    message_id =  S1AP_E_RAB_MODIFY_RESPONSE_LOG ;
-    message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, message_string_size + sizeof (IttiMsgText));
-    message_p->ittiMsg.s1ap_e_rab_modify_response_log.size = message_string_size;
-    memcpy(&message_p->ittiMsg.s1ap_e_rab_modify_response_log.text, message_string, message_string_size);
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-    free(message_string);
-    S1AP_INFO("E_RABModify successful message\n");
-    break;
-
-  case S1ap_ProcedureCode_id_E_RABRelease:
-    ret = s1ap_eNB_encode_e_rab_release_response (
-           &s1ap_message_p->msg.s1ap_E_RABReleaseResponseIEs, buffer, len);
-    s1ap_xer_print_s1ap_e_rabreleaseresponse(s1ap_xer__print2sp, message_string, s1ap_message_p);
-    message_id =  S1AP_E_RAB_RELEASE_RESPONSE_LOG ;
-    message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, message_string_size + sizeof (IttiMsgText));
-    message_p->ittiMsg.s1ap_e_rab_release_response_log.size = message_string_size;
-    memcpy(&message_p->ittiMsg.s1ap_e_rab_release_response_log.text, message_string, message_string_size);
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-    free(message_string);
-    S1AP_INFO("E_RAB Release successful message\n");
-    break;
-
-  default:
-    S1AP_WARN("Unknown procedure ID (%d) for successfull outcome message\n",
-               (int)s1ap_message_p->procedureCode);
-    return ret;
-    break;
+  asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
+  DevAssert(pdu != NULL);
+
+  switch(pdu->choice.successfulOutcome.procedureCode) {
+    case S1AP_ProcedureCode_id_InitialContextSetup:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_INITIAL_CONTEXT_SETUP_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_initial_context_setup_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_initial_context_setup_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    case S1AP_ProcedureCode_id_UEContextRelease:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_UE_CONTEXT_RELEASE_COMPLETE_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_ue_context_release_complete_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_ue_context_release_complete_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    case S1AP_ProcedureCode_id_E_RABSetup:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_E_RAB_SETUP_RESPONSE_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_e_rab_setup_response_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_e_rab_setup_response_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      S1AP_INFO("E_RABSetup successful message\n");
+      break;
+
+    case S1AP_ProcedureCode_id_E_RABModify:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_E_RAB_MODIFY_RESPONSE_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_e_rab_modify_response_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_e_rab_modify_response_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      S1AP_INFO("E_RABModify successful message\n");
+      break;
+
+    case S1AP_ProcedureCode_id_E_RABRelease:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_E_RAB_RELEASE_RESPONSE_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_e_rab_release_response_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_e_rab_release_response_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      S1AP_INFO("E_RAB Release successful message\n");
+      break;
+
+    default:
+      S1AP_WARN("Unknown procedure ID (%d) for successfull outcome message\n",
+                (int)pdu->choice.successfulOutcome.procedureCode);
+      return -1;
   }
 
+  if (asn1_xer_print) {
+    xer_fprint(stdout, &asn_DEF_S1AP_S1AP_PDU, (void *)pdu);
+  }
 
-  return ret;
+  memset(&res, 0, sizeof(res));
+  res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+  *buffer = res.buffer;
+  *len = res.result.encoded;
+  return 0;
 }
 
 static inline
-int s1ap_eNB_encode_unsuccessfull_outcome(s1ap_message *s1ap_message_p,
+int s1ap_eNB_encode_unsuccessfull_outcome(S1AP_S1AP_PDU_t *pdu,
     uint8_t **buffer, uint32_t *len)
 {
-  int ret = -1;
   MessageDef *message_p;
-  char       *message_string = NULL;
-  size_t      message_string_size;
   MessagesIds message_id;
-
-  DevAssert(s1ap_message_p != NULL);
-
-  message_string = calloc(10000, sizeof(char));
-
-  s1ap_string_total_size = 0;
-
-  switch(s1ap_message_p->procedureCode) {
-  case S1ap_ProcedureCode_id_InitialContextSetup:
-    //             ret = s1ap_encode_s1ap_initialcontextsetupfailureies(
-    //                 &s1ap_message_p->ittiMsg.s1ap_InitialContextSetupFailureIEs, buffer, len);
-    s1ap_xer_print_s1ap_initialcontextsetupfailure(s1ap_xer__print2sp, message_string, s1ap_message_p);
-    message_id = S1AP_INITIAL_CONTEXT_SETUP_LOG;
-    break;
-
-  default:
-    S1AP_DEBUG("Unknown procedure ID (%d) for unsuccessfull outcome message\n",
-               (int)s1ap_message_p->procedureCode);
-    return ret;
-    break;
-  }
-
-  message_string_size = strlen(message_string);
-
-  message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, message_string_size + sizeof (IttiMsgText));
-  message_p->ittiMsg.s1ap_initial_context_setup_log.size = message_string_size;
-  memcpy(&message_p->ittiMsg.s1ap_initial_context_setup_log.text, message_string, message_string_size);
-
-  itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-
-  free(message_string);
-
-  return ret;
-}
-
-static inline
-int s1ap_eNB_encode_ue_capability_info_indication(
-  S1ap_UECapabilityInfoIndicationIEs_t *ueCapabilityInfoIndicationIEs,
-  uint8_t                             **buffer,
-  uint32_t                             *length)
-{
-  S1ap_UECapabilityInfoIndication_t  ueCapabilityInfoIndication;
-  S1ap_UECapabilityInfoIndication_t *ueCapabilityInfoIndication_p =
-    &ueCapabilityInfoIndication;
-
-  memset((void *)ueCapabilityInfoIndication_p, 0,  sizeof(ueCapabilityInfoIndication));
-
-  if (s1ap_encode_s1ap_uecapabilityinfoindicationies(
-        ueCapabilityInfoIndication_p, ueCapabilityInfoIndicationIEs) < 0) {
-    return -1;
-  }
-
-  return s1ap_generate_initiating_message(buffer,
-                                          length,
-                                          S1ap_ProcedureCode_id_UECapabilityInfoIndication,
-                                          S1ap_Criticality_ignore,
-                                          &asn_DEF_S1ap_UECapabilityInfoIndication,
-                                          ueCapabilityInfoIndication_p);
-}
-
-static inline
-int s1ap_eNB_encode_uplink_nas_transport(
-  S1ap_UplinkNASTransportIEs_t *uplinkNASTransportIEs,
-  uint8_t                     **buffer,
-  uint32_t                     *length)
-{
-  S1ap_UplinkNASTransport_t  uplinkNASTransport;
-  S1ap_UplinkNASTransport_t *uplinkNASTransport_p = &uplinkNASTransport;
-
-  memset((void *)uplinkNASTransport_p, 0, sizeof(uplinkNASTransport));
-
-  if (s1ap_encode_s1ap_uplinknastransporties(
-        uplinkNASTransport_p, uplinkNASTransportIEs) < 0) {
-    return -1;
-  }
-
-  return s1ap_generate_initiating_message(buffer,
-                                          length,
-                                          S1ap_ProcedureCode_id_uplinkNASTransport,
-                                          S1ap_Criticality_ignore,
-                                          &asn_DEF_S1ap_UplinkNASTransport,
-                                          uplinkNASTransport_p);
-}
-
-static inline
-int s1ap_eNB_encode_nas_non_delivery(
-  S1ap_NASNonDeliveryIndication_IEs_t *nasNonDeliveryIndicationIEs,
-  uint8_t                            **buffer,
-  uint32_t                            *length)
-{
-  S1ap_NASNonDeliveryIndication_t  nasNonDeliveryIndication;
-  S1ap_NASNonDeliveryIndication_t *nasNonDeliveryIndication_p = &nasNonDeliveryIndication;
-
-  memset((void *)nasNonDeliveryIndication_p, 0, sizeof(nasNonDeliveryIndication));
-
-  if (s1ap_encode_s1ap_nasnondeliveryindication_ies(
-        nasNonDeliveryIndication_p, nasNonDeliveryIndicationIEs) < 0) {
-    return -1;
-  }
-
-  return s1ap_generate_initiating_message(buffer,
-                                          length,
-                                          S1ap_ProcedureCode_id_NASNonDeliveryIndication,
-                                          S1ap_Criticality_ignore,
-                                          &asn_DEF_S1ap_NASNonDeliveryIndication,
-                                          nasNonDeliveryIndication_p);
-}
-
-static inline
-int s1ap_eNB_encode_s1_setup_request(
-  S1ap_S1SetupRequestIEs_t *s1SetupRequestIEs,
-  uint8_t                 **buffer,
-  uint32_t                 *length)
-{
-  S1ap_S1SetupRequest_t  s1SetupRequest;
-  S1ap_S1SetupRequest_t *s1SetupRequest_p = &s1SetupRequest;
-
-  memset((void *)s1SetupRequest_p, 0, sizeof(s1SetupRequest));
-
-  if (s1ap_encode_s1ap_s1setuprequesties(s1SetupRequest_p, s1SetupRequestIEs) < 0) {
-    return -1;
-  }
-
-  return s1ap_generate_initiating_message(buffer,
-                                          length,
-                                          S1ap_ProcedureCode_id_S1Setup,
-                                          S1ap_Criticality_reject,
-                                          &asn_DEF_S1ap_S1SetupRequest,
-                                          s1SetupRequest_p);
-}
-
-static inline
-int s1ap_eNB_encode_initial_ue_message(
-  S1ap_InitialUEMessageIEs_t *initialUEmessageIEs_p,
-  uint8_t                   **buffer,
-  uint32_t                   *length)
-{
-  S1ap_InitialUEMessage_t  initialUEMessage;
-  S1ap_InitialUEMessage_t *initialUEMessage_p = &initialUEMessage;
-
-  memset((void *)initialUEMessage_p, 0, sizeof(initialUEMessage));
-
-  if (s1ap_encode_s1ap_initialuemessageies(
-        initialUEMessage_p, initialUEmessageIEs_p) < 0) {
-    return -1;
-  }
-
-  return s1ap_generate_initiating_message(buffer,
-                                          length,
-                                          S1ap_ProcedureCode_id_initialUEMessage,
-                                          S1ap_Criticality_ignore,
-                                          &asn_DEF_S1ap_InitialUEMessage,
-                                          initialUEMessage_p);
-}
-
-static inline
-int s1ap_eNB_encode_trace_failure(
-  S1ap_TraceFailureIndicationIEs_t *trace_failure_ies_p,
-  uint8_t                         **buffer,
-  uint32_t                         *length)
-{
-  S1ap_TraceFailureIndication_t  trace_failure;
-  S1ap_TraceFailureIndication_t *trace_failure_p = &trace_failure;
-
-  memset((void *)trace_failure_p, 0, sizeof(trace_failure));
-
-  if (s1ap_encode_s1ap_tracefailureindicationies(
-        trace_failure_p, trace_failure_ies_p) < 0) {
-    return -1;
-  }
-
-  return s1ap_generate_initiating_message(buffer,
-                                          length,
-                                          S1ap_ProcedureCode_id_TraceFailureIndication,
-                                          S1ap_Criticality_reject,
-                                          &asn_DEF_S1ap_TraceFailureIndication,
-                                          trace_failure_p);
-}
-
-static inline
-int s1ap_eNB_encode_initial_context_setup_response(
-  S1ap_InitialContextSetupResponseIEs_t *initialContextSetupResponseIEs,
-  uint8_t                              **buffer,
-  uint32_t                              *length)
-{
-  S1ap_InitialContextSetupResponse_t  initial_context_setup_response;
-  S1ap_InitialContextSetupResponse_t *initial_context_setup_response_p =
-    &initial_context_setup_response;
-
-  memset((void *)initial_context_setup_response_p, 0,
-         sizeof(initial_context_setup_response));
-
-  if (s1ap_encode_s1ap_initialcontextsetupresponseies(
-        initial_context_setup_response_p, initialContextSetupResponseIEs) < 0) {
-    return -1;
+  asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
+  DevAssert(pdu != NULL);
+
+  switch(pdu->choice.unsuccessfulOutcome.procedureCode) {
+    case S1AP_ProcedureCode_id_InitialContextSetup:
+      res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+      message_id = S1AP_INITIAL_CONTEXT_SETUP_LOG;
+      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
+      message_p->ittiMsg.s1ap_initial_context_setup_log.size = res.result.encoded;
+      memcpy(&message_p->ittiMsg.s1ap_initial_context_setup_log.text, res.buffer, res.result.encoded);
+      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
+      free(res.buffer);
+      break;
+
+    default:
+      S1AP_DEBUG("Unknown procedure ID (%d) for unsuccessfull outcome message\n",
+                 (int)pdu->choice.unsuccessfulOutcome.procedureCode);
+      return -1;
   }
 
-  return s1ap_generate_successfull_outcome(buffer,
-         length,
-         S1ap_ProcedureCode_id_InitialContextSetup,
-         S1ap_Criticality_reject,
-         &asn_DEF_S1ap_InitialContextSetupResponse,
-         initial_context_setup_response_p);
-}
-
-static inline
-int s1ap_eNB_encode_ue_context_release_complete(
-  S1ap_UEContextReleaseCompleteIEs_t *s1ap_UEContextReleaseCompleteIEs,
-  uint8_t                              **buffer,
-  uint32_t                              *length)
-{
-  S1ap_UEContextReleaseComplete_t  ue_context_release_complete;
-  S1ap_UEContextReleaseComplete_t *ue_context_release_complete_p =
-    &ue_context_release_complete;
-
-  memset((void *)ue_context_release_complete_p, 0,
-         sizeof(ue_context_release_complete));
-
-  if (s1ap_encode_s1ap_uecontextreleasecompleteies(
-        ue_context_release_complete_p, s1ap_UEContextReleaseCompleteIEs) < 0) {
-    return -1;
-  }
-
-  return s1ap_generate_successfull_outcome(buffer,
-         length,
-         S1ap_ProcedureCode_id_UEContextRelease,
-         S1ap_Criticality_reject,
-         &asn_DEF_S1ap_UEContextReleaseComplete,
-         ue_context_release_complete_p);
-}
-
-static inline
-int s1ap_eNB_encode_ue_context_release_request(
-  S1ap_UEContextReleaseRequestIEs_t *s1ap_UEContextReleaseRequestIEs,
-  uint8_t                              **buffer,
-  uint32_t                              *length)
-{
-  S1ap_UEContextReleaseRequest_t  ue_context_release_request;
-  S1ap_UEContextReleaseRequest_t *ue_context_release_request_p =
-    &ue_context_release_request;
-
-  memset((void *)ue_context_release_request_p, 0,
-         sizeof(ue_context_release_request));
-
-  if (s1ap_encode_s1ap_uecontextreleaserequesties(
-        ue_context_release_request_p, s1ap_UEContextReleaseRequestIEs) < 0) {
-    return -1;
-  }
-
-  return s1ap_generate_initiating_message(buffer,
-                                          length,
-                                          S1ap_ProcedureCode_id_UEContextReleaseRequest,
-                                          S1ap_Criticality_reject,
-                                          &asn_DEF_S1ap_UEContextReleaseRequest,
-                                          ue_context_release_request_p);
-}
-
-static inline
-int s1ap_eNB_encode_e_rab_setup_response(S1ap_E_RABSetupResponseIEs_t  *s1ap_E_RABSetupResponseIEs,
-					 uint8_t                              **buffer,
-					 uint32_t                              *length)
-{
-  S1ap_E_RABSetupResponse_t  e_rab_setup_response;
-  S1ap_E_RABSetupResponse_t  *e_rab_setup_response_p = &e_rab_setup_response;
-  
-  memset((void *)e_rab_setup_response_p, 0,
-         sizeof(e_rab_setup_response));
-
-  if (s1ap_encode_s1ap_e_rabsetupresponseies (e_rab_setup_response_p, s1ap_E_RABSetupResponseIEs) < 0) {
-    return -1;
-  }
-  
-  return s1ap_generate_successfull_outcome(buffer,
-         length,
-         S1ap_ProcedureCode_id_E_RABSetup,
-         S1ap_Criticality_reject,
-         &asn_DEF_S1ap_E_RABSetupResponse,
-         e_rab_setup_response_p);
-}
-
-static inline
-int s1ap_eNB_encode_e_rab_modify_response(S1ap_E_RABModifyResponseIEs_t  *s1ap_E_RABModifyResponseIEs,
-           uint8_t                              **buffer,
-           uint32_t                              *length)
-{
-  S1ap_E_RABModifyResponse_t  e_rab_modify_response;
-  S1ap_E_RABModifyResponse_t  *e_rab_modify_response_p = &e_rab_modify_response;
-
-  memset((void *)e_rab_modify_response_p, 0,
-         sizeof(e_rab_modify_response));
-
-  if (s1ap_encode_s1ap_e_rabmodifyresponseies (e_rab_modify_response_p, s1ap_E_RABModifyResponseIEs) < 0) {
-    return -1;
-  }
-
-  return s1ap_generate_successfull_outcome(buffer,
-         length,
-         S1ap_ProcedureCode_id_E_RABModify,
-         S1ap_Criticality_reject,
-         &asn_DEF_S1ap_E_RABModifyResponse,
-         e_rab_modify_response_p);
-}
-static inline
-int s1ap_eNB_encode_e_rab_release_response(S1ap_E_RABReleaseResponseIEs_t  *s1ap_E_RABReleaseResponseIEs,
-                     uint8_t                              **buffer,
-                     uint32_t                              *length)
-{
-    S1ap_E_RABReleaseResponse_t  e_rab_release_response;
-    S1ap_E_RABReleaseResponse_t  *e_rab_release_response_p = &e_rab_release_response;
-
-  memset((void *)e_rab_release_response_p, 0,
-         sizeof(e_rab_release_response));
-
-  if (s1ap_encode_s1ap_e_rabreleaseresponseies (e_rab_release_response_p, s1ap_E_RABReleaseResponseIEs) < 0) {
-    return -1;
+  if (asn1_xer_print) {
+    xer_fprint(stdout, &asn_DEF_S1AP_S1AP_PDU, (void *)pdu);
   }
 
-  return s1ap_generate_successfull_outcome(buffer,
-         length,
-         S1ap_ProcedureCode_id_E_RABRelease,
-         S1ap_Criticality_reject,
-         &asn_DEF_S1ap_E_RABReleaseResponse,
-         e_rab_release_response_p);
+  memset(&res, 0, sizeof(res));
+  res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_S1AP_S1AP_PDU, pdu);
+  *buffer = res.buffer;
+  *len = res.result.encoded;
+  return 0;
 }
diff --git a/openair3/S1AP/s1ap_eNB_encoder.h b/openair3/S1AP/s1ap_eNB_encoder.h
index 5b135a3f76c2c996811d338f1c53f8aac34cedd1..9ff5f032e7bf93bc4293311930248b1b86751333 100644
--- a/openair3/S1AP/s1ap_eNB_encoder.h
+++ b/openair3/S1AP/s1ap_eNB_encoder.h
@@ -22,7 +22,7 @@
 #ifndef S1AP_ENB_ENCODER_H_
 #define S1AP_ENB_ENCODER_H_
 
-int s1ap_eNB_encode_pdu(s1ap_message *message, uint8_t **buffer, uint32_t *len)
+int s1ap_eNB_encode_pdu(S1AP_S1AP_PDU_t *pdu, uint8_t **buffer, uint32_t *len)
 __attribute__ ((warn_unused_result));
 
 #endif /* S1AP_ENB_ENCODER_H_ */
diff --git a/openair3/S1AP/s1ap_eNB_handlers.c b/openair3/S1AP/s1ap_eNB_handlers.c
index 0b02fc6db9ee4c0580ec108bdeb50bd162372d52..66277b12260bfb90f09b5aa0039b4e524b9fde12 100644
--- a/openair3/S1AP/s1ap_eNB_handlers.c
+++ b/openair3/S1AP/s1ap_eNB_handlers.c
@@ -34,7 +34,6 @@
 #include "asn1_conversions.h"
 
 #include "s1ap_common.h"
-#include "s1ap_ies_defs.h"
 // #include "s1ap_eNB.h"
 #include "s1ap_eNB_defs.h"
 #include "s1ap_eNB_handlers.h"
@@ -54,47 +53,47 @@
 static
 int s1ap_eNB_handle_s1_setup_response(uint32_t               assoc_id,
                                       uint32_t               stream,
-                                      struct s1ap_message_s *message_p);
+                                      S1AP_S1AP_PDU_t       *pdu);
 static
 int s1ap_eNB_handle_s1_setup_failure(uint32_t               assoc_id,
                                      uint32_t               stream,
-                                     struct s1ap_message_s *message_p);
+                                     S1AP_S1AP_PDU_t       *pdu);
 
 static
 int s1ap_eNB_handle_error_indication(uint32_t               assoc_id,
-    uint32_t               stream,
-    struct s1ap_message_s *message_p);
+                                     uint32_t               stream,
+                                     S1AP_S1AP_PDU_t       *pdu);
 
 static
 int s1ap_eNB_handle_initial_context_request(uint32_t               assoc_id,
     uint32_t               stream,
-    struct s1ap_message_s *message_p);
+    S1AP_S1AP_PDU_t       *pdu);
 
 static
 int s1ap_eNB_handle_ue_context_release_command(uint32_t               assoc_id,
     uint32_t               stream,
-    struct s1ap_message_s *s1ap_message_p);
+    S1AP_S1AP_PDU_t       *pdu);
 
 
 static
 int s1ap_eNB_handle_e_rab_setup_request(uint32_t               assoc_id,
-					uint32_t               stream,
-					struct s1ap_message_s *s1ap_message_p);
+                                        uint32_t               stream,
+                                        S1AP_S1AP_PDU_t       *pdu);
 
 static
 int s1ap_eNB_handle_paging(uint32_t               assoc_id,
-    uint32_t               stream,
-    struct s1ap_message_s *message_p);
+                           uint32_t               stream,
+                           S1AP_S1AP_PDU_t       *pdu);
 
 static
 int s1ap_eNB_handle_e_rab_modify_request(uint32_t               assoc_id,
     uint32_t               stream,
-    struct s1ap_message_s *s1ap_message_p);
+    S1AP_S1AP_PDU_t       *pdu);
 
 static
 int s1ap_eNB_handle_e_rab_release_command(uint32_t               assoc_id,
     uint32_t               stream,
-    struct s1ap_message_s *s1ap_message_p);
+    S1AP_S1AP_PDU_t       *pdu);
 
 /* Handlers matrix. Only eNB related procedure present here */
 s1ap_message_decoded_callback messages_callback[][3] = {
@@ -174,7 +173,6 @@ void s1ap_handle_s1_setup_message(s1ap_eNB_mme_data_t *mme_desc_p, int sctp_shut
       /* If there are no more associated MME, inform eNB app */
       if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb == 0) {
         MessageDef                 *message_p;
-
         message_p = itti_alloc_new_message(TASK_S1AP, S1AP_DEREGISTERED_ENB_IND);
         S1AP_DEREGISTERED_ENB_IND(message_p).nb_mme = 0;
         itti_send_msg_to_task(TASK_ENB_APP, mme_desc_p->s1ap_eNB_instance->instance, message_p);
@@ -193,7 +191,6 @@ void s1ap_handle_s1_setup_message(s1ap_eNB_mme_data_t *mme_desc_p, int sctp_shut
     /* If there are no more pending messages, inform eNB app */
     if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_pending_nb == 0) {
       MessageDef                 *message_p;
-
       message_p = itti_alloc_new_message(TASK_S1AP, S1AP_REGISTER_ENB_CNF);
       S1AP_REGISTER_ENB_CNF(message_p).nb_mme = mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb;
       itti_send_msg_to_task(TASK_ENB_APP, mme_desc_p->s1ap_eNB_instance->instance, message_p);
@@ -202,54 +199,56 @@ void s1ap_handle_s1_setup_message(s1ap_eNB_mme_data_t *mme_desc_p, int sctp_shut
 }
 
 int s1ap_eNB_handle_message(uint32_t assoc_id, int32_t stream,
-                            const uint8_t * const data, const uint32_t data_length)
+                            const uint8_t *const data, const uint32_t data_length)
 {
-  struct s1ap_message_s message;
-
+  S1AP_S1AP_PDU_t pdu;
+  int ret = -1;
   DevAssert(data != NULL);
+  memset(&pdu, 0, sizeof(pdu));
 
-  memset(&message, 0, sizeof(struct s1ap_message_s));
-
-  if (s1ap_eNB_decode_pdu(&message, data, data_length) < 0) {
+  if (s1ap_eNB_decode_pdu(&pdu, data, data_length) < 0) {
     S1AP_ERROR("Failed to decode PDU\n");
     return -1;
   }
 
   /* Checking procedure Code and direction of message */
-  if (message.procedureCode > sizeof(messages_callback) / (3 * sizeof(
+  if (pdu.choice.initiatingMessage.procedureCode > sizeof(messages_callback) / (3 * sizeof(
         s1ap_message_decoded_callback))
-      || (message.direction > S1AP_PDU_PR_unsuccessfulOutcome)) {
+      || (pdu.present > S1AP_S1AP_PDU_PR_unsuccessfulOutcome)) {
     S1AP_ERROR("[SCTP %d] Either procedureCode %ld or direction %d exceed expected\n",
-               assoc_id, message.procedureCode, message.direction);
+               assoc_id, pdu.choice.initiatingMessage.procedureCode, pdu.present);
+    ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1AP_S1AP_PDU, &pdu);
     return -1;
   }
 
   /* No handler present.
    * This can mean not implemented or no procedure for eNB (wrong direction).
    */
-  if (messages_callback[message.procedureCode][message.direction-1] == NULL) {
+  if (messages_callback[pdu.choice.initiatingMessage.procedureCode][pdu.present - 1] == NULL) {
     S1AP_ERROR("[SCTP %d] No handler for procedureCode %ld in %s\n",
-               assoc_id, message.procedureCode,
-               s1ap_direction2String[message.direction]);
+               assoc_id, pdu.choice.initiatingMessage.procedureCode,
+               s1ap_direction2String[pdu.present - 1]);
+    ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1AP_S1AP_PDU, &pdu);
     return -1;
   }
 
   /* Calling the right handler */
-  return (*messages_callback[message.procedureCode][message.direction-1])
-         (assoc_id, stream, &message);
+  ret = (*messages_callback[pdu.choice.initiatingMessage.procedureCode][pdu.present - 1])
+        (assoc_id, stream, &pdu);
+  ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1AP_S1AP_PDU, &pdu);
+  return ret;
 }
 
 static
 int s1ap_eNB_handle_s1_setup_failure(uint32_t               assoc_id,
                                      uint32_t               stream,
-                                     struct s1ap_message_s *message_p)
+                                     S1AP_S1AP_PDU_t       *pdu)
 {
-  S1ap_S1SetupFailureIEs_t   *s1_setup_failure_p;
+  S1AP_S1SetupFailure_t      *container;
+  S1AP_S1SetupFailureIEs_t   *ie;
   s1ap_eNB_mme_data_t        *mme_desc_p;
-
-  DevAssert(message_p != NULL);
-
-  s1_setup_failure_p = &message_p->msg.s1ap_S1SetupFailureIEs;
+  DevAssert(pdu != NULL);
+  container = &pdu->choice.unsuccessfulOutcome.value.choice.S1SetupFailure;
 
   /* S1 Setup Failure == Non UE-related procedure -> stream 0 */
   if (stream != 0) {
@@ -263,8 +262,11 @@ int s1ap_eNB_handle_s1_setup_failure(uint32_t               assoc_id,
     return -1;
   }
 
-  if ((s1_setup_failure_p->cause.present == S1ap_Cause_PR_misc) &&
-      (s1_setup_failure_p->cause.choice.misc == S1ap_CauseMisc_unspecified)) {
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_S1SetupFailureIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID, TRUE);
+
+  if ((ie->value.choice.Cause.present == S1AP_Cause_PR_misc) &&
+      (ie->value.choice.Cause.choice.misc == S1AP_CauseMisc_unspecified)) {
     S1AP_WARN("Received s1 setup failure for MME... MME is not ready\n");
   } else {
     S1AP_ERROR("Received s1 setup failure for MME... please check your parameters\n");
@@ -272,22 +274,20 @@ int s1ap_eNB_handle_s1_setup_failure(uint32_t               assoc_id,
 
   mme_desc_p->state = S1AP_ENB_STATE_WAITING;
   s1ap_handle_s1_setup_message(mme_desc_p, 0);
-
   return 0;
 }
 
 static
 int s1ap_eNB_handle_s1_setup_response(uint32_t               assoc_id,
                                       uint32_t               stream,
-                                      struct s1ap_message_s *message_p)
+                                      S1AP_S1AP_PDU_t       *pdu)
 {
-  S1ap_S1SetupResponseIEs_t *s1SetupResponse_p;
+  S1AP_S1SetupResponse_t    *container;
+  S1AP_S1SetupResponseIEs_t *ie;
   s1ap_eNB_mme_data_t       *mme_desc_p;
   int i;
-
-  DevAssert(message_p != NULL);
-
-  s1SetupResponse_p = &message_p->msg.s1ap_S1SetupResponseIEs;
+  DevAssert(pdu != NULL);
+  container = &pdu->choice.successfulOutcome.value.choice.S1SetupResponse;
 
   /* S1 Setup Response == Non UE-related procedure -> stream 0 */
   if (stream != 0) {
@@ -302,32 +302,29 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t               assoc_id,
     return -1;
   }
 
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_S1SetupResponseIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_ServedGUMMEIs, TRUE);
   /* The list of served gummei can contain at most 8 elements.
    * LTE related gummei is the first element in the list, i.e with an id of 0.
    */
-  S1AP_DEBUG("servedGUMMEIs.list.count %d\n",s1SetupResponse_p->servedGUMMEIs.list.count); 
-  DevAssert(s1SetupResponse_p->servedGUMMEIs.list.count > 0);
-  DevAssert(s1SetupResponse_p->servedGUMMEIs.list.count <= 8);
+  S1AP_DEBUG("servedGUMMEIs.list.count %d\n", ie->value.choice.ServedGUMMEIs.list.count);
+  DevAssert(ie->value.choice.ServedGUMMEIs.list.count > 0);
+  DevAssert(ie->value.choice.ServedGUMMEIs.list.count <= S1AP_maxnoofRATs);
 
-
-  for (i = 0; i < s1SetupResponse_p->servedGUMMEIs.list.count; i++) {
-    struct S1ap_ServedGUMMEIsItem *gummei_item_p;
-    struct served_gummei_s        *new_gummei_p;
+  for (i = 0; i < ie->value.choice.ServedGUMMEIs.list.count; i++) {
+    S1AP_ServedGUMMEIsItem_t *gummei_item_p;
+    struct served_gummei_s   *new_gummei_p;
     int j;
-
-    gummei_item_p = (struct S1ap_ServedGUMMEIsItem *)
-                    s1SetupResponse_p->servedGUMMEIs.list.array[i];
+    gummei_item_p = ie->value.choice.ServedGUMMEIs.list.array[i];
     new_gummei_p = calloc(1, sizeof(struct served_gummei_s));
-
     STAILQ_INIT(&new_gummei_p->served_plmns);
     STAILQ_INIT(&new_gummei_p->served_group_ids);
     STAILQ_INIT(&new_gummei_p->mme_codes);
-    
-    S1AP_DEBUG("servedPLMNs.list.count %d\n",gummei_item_p->servedPLMNs.list.count);
+    S1AP_DEBUG("servedPLMNs.list.count %d\n", gummei_item_p->servedPLMNs.list.count);
+
     for (j = 0; j < gummei_item_p->servedPLMNs.list.count; j++) {
-      S1ap_PLMNidentity_t *plmn_identity_p;
+      S1AP_PLMNidentity_t *plmn_identity_p;
       struct plmn_identity_s *new_plmn_identity_p;
-      
       plmn_identity_p = gummei_item_p->servedPLMNs.list.array[j];
       new_plmn_identity_p = calloc(1, sizeof(struct plmn_identity_s));
       TBCD_TO_MCC_MNC(plmn_identity_p, new_plmn_identity_p->mcc,
@@ -337,9 +334,8 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t               assoc_id,
     }
 
     for (j = 0; j < gummei_item_p->servedGroupIDs.list.count; j++) {
-      S1ap_MME_Group_ID_t           *mme_group_id_p;
+      S1AP_MME_Group_ID_t           *mme_group_id_p;
       struct served_group_id_s *new_group_id_p;
-
       mme_group_id_p = gummei_item_p->servedGroupIDs.list.array[j];
       new_group_id_p = calloc(1, sizeof(struct served_group_id_s));
       OCTET_STRING_TO_INT16(mme_group_id_p, new_group_id_p->mme_group_id);
@@ -348,12 +344,10 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t               assoc_id,
     }
 
     for (j = 0; j < gummei_item_p->servedMMECs.list.count; j++) {
-      S1ap_MME_Code_t        *mme_code_p;
+      S1AP_MME_Code_t        *mme_code_p;
       struct mme_code_s *new_mme_code_p;
-
       mme_code_p = gummei_item_p->servedMMECs.list.array[j];
       new_mme_code_p = calloc(1, sizeof(struct mme_code_s));
-
       OCTET_STRING_TO_INT8(mme_code_p, new_mme_code_p->mme_code);
       STAILQ_INSERT_TAIL(&new_gummei_p->mme_codes, new_mme_code_p, next);
       new_gummei_p->nb_mme_code++;
@@ -362,19 +356,20 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t               assoc_id,
     STAILQ_INSERT_TAIL(&mme_desc_p->served_gummei, new_gummei_p, next);
   }
 
-  /* Free contents of the list */
-  ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ServedGUMMEIs,
-                                (void *)&s1SetupResponse_p->servedGUMMEIs);
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_S1SetupResponseIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_RelativeMMECapacity, TRUE);
   /* Set the capacity of this MME */
-  mme_desc_p->relative_mme_capacity = s1SetupResponse_p->relativeMMECapacity;
+  mme_desc_p->relative_mme_capacity = ie->value.choice.RelativeMMECapacity;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_S1SetupResponseIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_MMEname, FALSE);
 
   /* Optionaly set the mme name */
-  if (s1SetupResponse_p->presenceMask & S1AP_S1SETUPRESPONSEIES_MMENAME_PRESENT) {
-    mme_desc_p->mme_name = calloc(s1SetupResponse_p->mmEname.size + 1, sizeof(char));
-    memcpy(mme_desc_p->mme_name, s1SetupResponse_p->mmEname.buf,
-           s1SetupResponse_p->mmEname.size);
+  if (ie) {
+    mme_desc_p->mme_name = calloc(ie->value.choice.MMEname.size + 1, sizeof(char));
+    memcpy(mme_desc_p->mme_name, ie->value.choice.MMEname.buf,
+           ie->value.choice.MMEname.size);
     /* Convert the mme name to a printable string */
-    mme_desc_p->mme_name[s1SetupResponse_p->mmEname.size] = '\0';
+    mme_desc_p->mme_name[ie->value.choice.MMEname.size] = '\0';
   }
 
   /* The association is now ready as eNB and MME know parameters of each other.
@@ -383,25 +378,20 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t               assoc_id,
   mme_desc_p->state = S1AP_ENB_STATE_CONNECTED;
   mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb ++;
   s1ap_handle_s1_setup_message(mme_desc_p, 0);
-
 #if 0
   /* We call back our self
    * -> generate a dummy initial UE message
    */
   {
     s1ap_nas_first_req_t s1ap_nas_first_req;
-
     memset(&s1ap_nas_first_req, 0, sizeof(s1ap_nas_first_req_t));
-
     s1ap_nas_first_req.rnti = 0xC03A;
     s1ap_nas_first_req.establishment_cause = RRC_CAUSE_MO_DATA;
     s1ap_nas_first_req.ue_identity.presenceMask = UE_IDENTITIES_gummei;
-
     s1ap_nas_first_req.ue_identity.gummei.mcc = 208;
     s1ap_nas_first_req.ue_identity.gummei.mnc = 34;
     s1ap_nas_first_req.ue_identity.gummei.mme_code = 0;
     s1ap_nas_first_req.ue_identity.gummei.mme_group_id = 0;
-
     /* NAS Attach request with IMSI */
     static uint8_t nas_attach_req_imsi[] = {
       0x07, 0x41,
@@ -415,7 +405,6 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t               assoc_id,
       0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x0A, 0x00, 0x52, 0x12, 0xF2,
       0x01, 0x27, 0x11,
     };
-
     /* NAS Attach request with GUTI */
     static uint8_t nas_attach_req_guti[] = {
       0x07, 0x41,
@@ -429,30 +418,26 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t               assoc_id,
       0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x0A, 0x00, 0x52, 0x12, 0xF2,
       0x01, 0x27, 0x11,
     };
-
     s1ap_nas_first_req.nas_pdu.buffer = nas_attach_req_guti;
     s1ap_nas_first_req.nas_pdu.length = sizeof(nas_attach_req_guti);
-
     s1ap_eNB_handle_nas_first_req(mme_desc_p->s1ap_eNB_instance->instance,
                                   &s1ap_nas_first_req);
   }
 #endif
-
   return 0;
 }
 
 
 static
-int s1ap_eNB_handle_error_indication(uint32_t               assoc_id,
-                                     uint32_t               stream,
-                                     struct s1ap_message_s *message_p)
+int s1ap_eNB_handle_error_indication(uint32_t         assoc_id,
+                                     uint32_t         stream,
+                                     S1AP_S1AP_PDU_t *pdu)
 {
-  S1ap_ErrorIndicationIEs_t   *s1_error_indication_p;
+  S1AP_ErrorIndication_t    *container;
+  S1AP_ErrorIndicationIEs_t *ie;
   s1ap_eNB_mme_data_t        *mme_desc_p;
-
-  DevAssert(message_p != NULL);
-
-  s1_error_indication_p = &message_p->msg.s1ap_ErrorIndicationIEs;
+  DevAssert(pdu != NULL);
+  container = &pdu->choice.initiatingMessage.value.choice.ErrorIndication;
 
   /* S1 Setup Failure == Non UE-related procedure -> stream 0 */
   if (stream != 0) {
@@ -465,255 +450,337 @@ int s1ap_eNB_handle_error_indication(uint32_t               assoc_id,
                "MME context\n", assoc_id);
     return -1;
   }
-  if ( s1_error_indication_p->presenceMask & S1AP_ERRORINDICATIONIES_MME_UE_S1AP_ID_PRESENT) {
-	  	S1AP_WARN("Received S1 Error indication MME UE S1AP ID 0x%lx\n", s1_error_indication_p->mme_ue_s1ap_id);
+
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_ErrorIndicationIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID, FALSE);
+
+  /* optional */
+  if (!ie) {
+    S1AP_WARN("Received S1 Error indication MME UE S1AP ID 0x%lx\n", ie->value.choice.MME_UE_S1AP_ID);
   }
-  if ( s1_error_indication_p->presenceMask & S1AP_ERRORINDICATIONIES_ENB_UE_S1AP_ID_PRESENT) {
-  	S1AP_WARN("Received S1 Error indication eNB UE S1AP ID 0x%lx\n", s1_error_indication_p->eNB_UE_S1AP_ID);
+
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_ErrorIndicationIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID, FALSE);
+
+  /* optional */
+  if (!ie) {
+    S1AP_WARN("Received S1 Error indication eNB UE S1AP ID 0x%lx\n", ie->value.choice.ENB_UE_S1AP_ID);
   }
 
-  if ( s1_error_indication_p->presenceMask & S1AP_ERRORINDICATIONIES_CAUSE_PRESENT) {
-    switch(s1_error_indication_p->cause.present) {
-      case S1ap_Cause_PR_NOTHING:
-    	S1AP_WARN("Received S1 Error indication cause NOTHING\n");
-      break;
-      case S1ap_Cause_PR_radioNetwork:
-      	switch (s1_error_indication_p->cause.choice.radioNetwork) {
-	      case S1ap_CauseRadioNetwork_unspecified:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_unspecified\n");
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_ErrorIndicationIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_Cause, FALSE);
+
+  /* optional */
+  if (ie) {
+    switch(ie->value.choice.Cause.present) {
+      case S1AP_Cause_PR_NOTHING:
+        S1AP_WARN("Received S1 Error indication cause NOTHING\n");
+        break;
+
+      case S1AP_Cause_PR_radioNetwork:
+        switch (ie->value.choice.Cause.choice.radioNetwork) {
+          case S1AP_CauseRadioNetwork_unspecified:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_unspecified\n");
             break;
-  	      case S1ap_CauseRadioNetwork_tx2relocoverall_expiry:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_tx2relocoverall_expiry\n");
+
+          case S1AP_CauseRadioNetwork_tx2relocoverall_expiry:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_tx2relocoverall_expiry\n");
             break;
-  	      case S1ap_CauseRadioNetwork_successful_handover:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_successful_handover\n");
+
+          case S1AP_CauseRadioNetwork_successful_handover:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_successful_handover\n");
             break;
-  	      case S1ap_CauseRadioNetwork_release_due_to_eutran_generated_reason:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_release_due_to_eutran_generated_reason\n");
+
+          case S1AP_CauseRadioNetwork_release_due_to_eutran_generated_reason:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_release_due_to_eutran_generated_reason\n");
             break;
-  	      case S1ap_CauseRadioNetwork_handover_cancelled:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_handover_cancelled\n");
+
+          case S1AP_CauseRadioNetwork_handover_cancelled:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_handover_cancelled\n");
             break;
-  	      case S1ap_CauseRadioNetwork_partial_handover:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_partial_handover\n");
+
+          case S1AP_CauseRadioNetwork_partial_handover:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_partial_handover\n");
             break;
-  	      case S1ap_CauseRadioNetwork_ho_failure_in_target_EPC_eNB_or_target_system:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_ho_failure_in_target_EPC_eNB_or_target_system\n");
+
+          case S1AP_CauseRadioNetwork_ho_failure_in_target_EPC_eNB_or_target_system:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_ho_failure_in_target_EPC_eNB_or_target_system\n");
             break;
-  	      case S1ap_CauseRadioNetwork_ho_target_not_allowed:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_ho_target_not_allowed\n");
+
+          case S1AP_CauseRadioNetwork_ho_target_not_allowed:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_ho_target_not_allowed\n");
             break;
-  	      case S1ap_CauseRadioNetwork_tS1relocoverall_expiry:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_tS1relocoverall_expiry\n");
+
+          case S1AP_CauseRadioNetwork_tS1relocoverall_expiry:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_tS1relocoverall_expiry\n");
             break;
-  	      case S1ap_CauseRadioNetwork_tS1relocprep_expiry:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_tS1relocprep_expiry\n");
+
+          case S1AP_CauseRadioNetwork_tS1relocprep_expiry:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_tS1relocprep_expiry\n");
             break;
-  	      case S1ap_CauseRadioNetwork_cell_not_available:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_cell_not_available\n");
+
+          case S1AP_CauseRadioNetwork_cell_not_available:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_cell_not_available\n");
             break;
-  	      case S1ap_CauseRadioNetwork_unknown_targetID:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_unknown_targetID\n");
+
+          case S1AP_CauseRadioNetwork_unknown_targetID:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_unknown_targetID\n");
             break;
-  	      case S1ap_CauseRadioNetwork_no_radio_resources_available_in_target_cell:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_no_radio_resources_available_in_target_cell\n");
+
+          case S1AP_CauseRadioNetwork_no_radio_resources_available_in_target_cell:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_no_radio_resources_available_in_target_cell\n");
             break;
-  	      case S1ap_CauseRadioNetwork_unknown_mme_ue_s1ap_id:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_unknown_mme_ue_s1ap_id\n");
+
+          case S1AP_CauseRadioNetwork_unknown_mme_ue_s1ap_id:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_unknown_mme_ue_s1ap_id\n");
             break;
-  	      case S1ap_CauseRadioNetwork_unknown_enb_ue_s1ap_id:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_unknown_enb_ue_s1ap_id\n");
+
+          case S1AP_CauseRadioNetwork_unknown_enb_ue_s1ap_id:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_unknown_enb_ue_s1ap_id\n");
             break;
-  	      case S1ap_CauseRadioNetwork_unknown_pair_ue_s1ap_id:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_unknown_pair_ue_s1ap_id\n");
+
+          case S1AP_CauseRadioNetwork_unknown_pair_ue_s1ap_id:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_unknown_pair_ue_s1ap_id\n");
             break;
-  	      case S1ap_CauseRadioNetwork_handover_desirable_for_radio_reason:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_handover_desirable_for_radio_reason\n");
+
+          case S1AP_CauseRadioNetwork_handover_desirable_for_radio_reason:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_handover_desirable_for_radio_reason\n");
             break;
-  	      case S1ap_CauseRadioNetwork_time_critical_handover:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_time_critical_handover\n");
+
+          case S1AP_CauseRadioNetwork_time_critical_handover:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_time_critical_handover\n");
             break;
-  	      case S1ap_CauseRadioNetwork_resource_optimisation_handover:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_resource_optimisation_handover\n");
+
+          case S1AP_CauseRadioNetwork_resource_optimisation_handover:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_resource_optimisation_handover\n");
             break;
-  	      case S1ap_CauseRadioNetwork_reduce_load_in_serving_cell:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_reduce_load_in_serving_cell\n");
+
+          case S1AP_CauseRadioNetwork_reduce_load_in_serving_cell:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_reduce_load_in_serving_cell\n");
             break;
-  	      case S1ap_CauseRadioNetwork_user_inactivity:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_user_inactivity\n");
+
+          case S1AP_CauseRadioNetwork_user_inactivity:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_user_inactivity\n");
             break;
-  	      case S1ap_CauseRadioNetwork_radio_connection_with_ue_lost:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_radio_connection_with_ue_lost\n");
+
+          case S1AP_CauseRadioNetwork_radio_connection_with_ue_lost:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_radio_connection_with_ue_lost\n");
             break;
-  	      case S1ap_CauseRadioNetwork_load_balancing_tau_required:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_load_balancing_tau_required\n");
+
+          case S1AP_CauseRadioNetwork_load_balancing_tau_required:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_load_balancing_tau_required\n");
             break;
-  	      case S1ap_CauseRadioNetwork_cs_fallback_triggered:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_cs_fallback_triggered\n");
+
+          case S1AP_CauseRadioNetwork_cs_fallback_triggered:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_cs_fallback_triggered\n");
             break;
-  	      case S1ap_CauseRadioNetwork_ue_not_available_for_ps_service:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_ue_not_available_for_ps_service\n");
+
+          case S1AP_CauseRadioNetwork_ue_not_available_for_ps_service:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_ue_not_available_for_ps_service\n");
             break;
-  	      case S1ap_CauseRadioNetwork_radio_resources_not_available:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_radio_resources_not_available\n");
+
+          case S1AP_CauseRadioNetwork_radio_resources_not_available:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_radio_resources_not_available\n");
             break;
-  	      case S1ap_CauseRadioNetwork_failure_in_radio_interface_procedure:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_failure_in_radio_interface_procedure\n");
+
+          case S1AP_CauseRadioNetwork_failure_in_radio_interface_procedure:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_failure_in_radio_interface_procedure\n");
             break;
-  	      case S1ap_CauseRadioNetwork_invals1ap_id_qos_combination:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_invals1ap_id_qos_combination\n");
+
+          case S1AP_CauseRadioNetwork_invalid_qos_combination:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_invals1ap_id_qos_combination\n");
             break;
-  	      case S1ap_CauseRadioNetwork_interrat_redirection:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_interrat_redirection\n");
+
+          case S1AP_CauseRadioNetwork_interrat_redirection:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_interrat_redirection\n");
             break;
-  	      case S1ap_CauseRadioNetwork_interaction_with_other_procedure:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_interaction_with_other_procedure\n");
+
+          case S1AP_CauseRadioNetwork_interaction_with_other_procedure:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_interaction_with_other_procedure\n");
             break;
-  	      case S1ap_CauseRadioNetwork_unknown_E_RAB_ID:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_unknown_E_RAB_ID\n");
+
+          case S1AP_CauseRadioNetwork_unknown_E_RAB_ID:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_unknown_E_RAB_ID\n");
             break;
-  	      case S1ap_CauseRadioNetwork_multiple_E_RAB_ID_instances:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_multiple_E_RAB_ID_instances\n");
+
+          case S1AP_CauseRadioNetwork_multiple_E_RAB_ID_instances:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_multiple_E_RAB_ID_instances\n");
             break;
-  	      case S1ap_CauseRadioNetwork_encryption_and_or_integrity_protection_algorithms_not_supported:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_encryption_and_or_integrity_protection_algorithms_not_supported\n");
+
+          case S1AP_CauseRadioNetwork_encryption_and_or_integrity_protection_algorithms_not_supported:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_encryption_and_or_integrity_protection_algorithms_not_supported\n");
             break;
-  	      case S1ap_CauseRadioNetwork_s1_intra_system_handover_triggered:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_s1_intra_system_handover_triggered\n");
+
+          case S1AP_CauseRadioNetwork_s1_intra_system_handover_triggered:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_s1_intra_system_handover_triggered\n");
             break;
-  	      case S1ap_CauseRadioNetwork_s1_inter_system_handover_triggered:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_s1_inter_system_handover_triggered\n");
+
+          case S1AP_CauseRadioNetwork_s1_inter_system_handover_triggered:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_s1_inter_system_handover_triggered\n");
             break;
-  	      case S1ap_CauseRadioNetwork_x2_handover_triggered:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_x2_handover_triggered\n");
+
+          case S1AP_CauseRadioNetwork_x2_handover_triggered:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_x2_handover_triggered\n");
             break;
-  	      case S1ap_CauseRadioNetwork_redirection_towards_1xRTT:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_redirection_towards_1xRTT\n");
+
+          case S1AP_CauseRadioNetwork_redirection_towards_1xRTT:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_redirection_towards_1xRTT\n");
             break;
-  	      case S1ap_CauseRadioNetwork_not_supported_QCI_value:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_not_supported_QCI_value\n");
+
+          case S1AP_CauseRadioNetwork_not_supported_QCI_value:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_not_supported_QCI_value\n");
             break;
-  	      case S1ap_CauseRadioNetwork_invals1ap_id_CSG_Id:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseRadioNetwork_invals1ap_id_CSG_Id\n");
+
+          case S1AP_CauseRadioNetwork_invalid_CSG_Id:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseRadioNetwork_invals1ap_id_CSG_Id\n");
             break;
-      	  default:
+
+          default:
             S1AP_WARN("Received S1 Error indication cause radio network case not handled\n");
-      	}
-      break;
+        }
+
+        break;
 
-      case S1ap_Cause_PR_transport:
-      	switch (s1_error_indication_p->cause.choice.transport) {
-    	  case S1ap_CauseTransport_transport_resource_unavailable:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseTransport_transport_resource_unavailable\n");
+      case S1AP_Cause_PR_transport:
+        switch (ie->value.choice.Cause.choice.transport) {
+          case S1AP_CauseTransport_transport_resource_unavailable:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseTransport_transport_resource_unavailable\n");
             break;
-    	  case S1ap_CauseTransport_unspecified:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseTransport_unspecified\n");
+
+          case S1AP_CauseTransport_unspecified:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseTransport_unspecified\n");
             break;
-      	  default:
+
+          default:
             S1AP_WARN("Received S1 Error indication cause transport case not handled\n");
-      	}
-      break;
+        }
 
-      case S1ap_Cause_PR_nas:
-      	switch (s1_error_indication_p->cause.choice.nas) {
-    	  case S1ap_CauseNas_normal_release:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseNas_normal_release\n");
+        break;
+
+      case S1AP_Cause_PR_nas:
+        switch (ie->value.choice.Cause.choice.nas) {
+          case S1AP_CauseNas_normal_release:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseNas_normal_release\n");
             break;
-      	  case S1ap_CauseNas_authentication_failure:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseNas_authentication_failure\n");
+
+          case S1AP_CauseNas_authentication_failure:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseNas_authentication_failure\n");
             break;
-      	  case S1ap_CauseNas_detach:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseNas_detach\n");
+
+          case S1AP_CauseNas_detach:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseNas_detach\n");
             break;
-      	  case S1ap_CauseNas_unspecified:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseNas_unspecified\n");
+
+          case S1AP_CauseNas_unspecified:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseNas_unspecified\n");
             break;
-      	  case S1ap_CauseNas_csg_subscription_expiry:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseNas_csg_subscription_expiry\n");
+
+          case S1AP_CauseNas_csg_subscription_expiry:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseNas_csg_subscription_expiry\n");
             break;
-      	  default:
+
+          default:
             S1AP_WARN("Received S1 Error indication cause nas case not handled\n");
-      	}
-      break;
+        }
+
+        break;
 
-      case S1ap_Cause_PR_protocol:
-      	switch (s1_error_indication_p->cause.choice.protocol) {
-      	  case S1ap_CauseProtocol_transfer_syntax_error:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseProtocol_transfer_syntax_error\n");
+      case S1AP_Cause_PR_protocol:
+        switch (ie->value.choice.Cause.choice.protocol) {
+          case S1AP_CauseProtocol_transfer_syntax_error:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseProtocol_transfer_syntax_error\n");
             break;
-      	  case S1ap_CauseProtocol_abstract_syntax_error_reject:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseProtocol_abstract_syntax_error_reject\n");
+
+          case S1AP_CauseProtocol_abstract_syntax_error_reject:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseProtocol_abstract_syntax_error_reject\n");
             break;
-      	  case S1ap_CauseProtocol_abstract_syntax_error_ignore_and_notify:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseProtocol_abstract_syntax_error_ignore_and_notify\n");
+
+          case S1AP_CauseProtocol_abstract_syntax_error_ignore_and_notify:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseProtocol_abstract_syntax_error_ignore_and_notify\n");
             break;
-      	  case S1ap_CauseProtocol_message_not_compatible_with_receiver_state:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseProtocol_message_not_compatible_with_receiver_state\n");
+
+          case S1AP_CauseProtocol_message_not_compatible_with_receiver_state:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseProtocol_message_not_compatible_with_receiver_state\n");
             break;
-      	  case S1ap_CauseProtocol_semantic_error:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseProtocol_semantic_error\n");
+
+          case S1AP_CauseProtocol_semantic_error:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseProtocol_semantic_error\n");
             break;
-      	  case S1ap_CauseProtocol_abstract_syntax_error_falsely_constructed_message:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseProtocol_abstract_syntax_error_falsely_constructed_message\n");
+
+          case S1AP_CauseProtocol_abstract_syntax_error_falsely_constructed_message:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseProtocol_abstract_syntax_error_falsely_constructed_message\n");
             break;
-      	  case S1ap_CauseProtocol_unspecified:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseProtocol_unspecified\n");
+
+          case S1AP_CauseProtocol_unspecified:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseProtocol_unspecified\n");
             break;
-      	  default:
+
+          default:
             S1AP_WARN("Received S1 Error indication cause protocol case not handled\n");
-      	}
-      break;
+        }
+
+        break;
+
+      case S1AP_Cause_PR_misc:
+        switch (ie->value.choice.Cause.choice.protocol) {
+          case S1AP_CauseMisc_control_processing_overload:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseMisc_control_processing_overload\n");
+            break;
+
+          case S1AP_CauseMisc_not_enough_user_plane_processing_resources:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseMisc_not_enough_user_plane_processing_resources\n");
+            break;
 
-      case S1ap_Cause_PR_misc:
-        switch (s1_error_indication_p->cause.choice.protocol) {
-          case S1ap_CauseMisc_control_processing_overload:
-            S1AP_WARN("Received S1 Error indication S1ap_CauseMisc_control_processing_overload\n");
+          case S1AP_CauseMisc_hardware_failure:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseMisc_hardware_failure\n");
             break;
-          case S1ap_CauseMisc_not_enough_user_plane_processing_resources:
-        	S1AP_WARN("Received S1 Error indication S1ap_CauseMisc_not_enough_user_plane_processing_resources\n");
-        	break;
-          case S1ap_CauseMisc_hardware_failure:
-        	S1AP_WARN("Received S1 Error indication S1ap_CauseMisc_hardware_failure\n");
-        	break;
-          case S1ap_CauseMisc_om_intervention:
-        	S1AP_WARN("Received S1 Error indication S1ap_CauseMisc_om_intervention\n");
-        	break;
-          case S1ap_CauseMisc_unspecified:
-        	S1AP_WARN("Received S1 Error indication S1ap_CauseMisc_unspecified\n");
-        	break;
-          case S1ap_CauseMisc_unknown_PLMN:
-        	S1AP_WARN("Received S1 Error indication S1ap_CauseMisc_unknown_PLMN\n");
-        	break;
+
+          case S1AP_CauseMisc_om_intervention:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseMisc_om_intervention\n");
+            break;
+
+          case S1AP_CauseMisc_unspecified:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseMisc_unspecified\n");
+            break;
+
+          case S1AP_CauseMisc_unknown_PLMN:
+            S1AP_WARN("Received S1 Error indication S1AP_CauseMisc_unknown_PLMN\n");
+            break;
+
           default:
             S1AP_WARN("Received S1 Error indication cause misc case not handled\n");
         }
-      break;
+
+        break;
     }
   }
-  if ( s1_error_indication_p->presenceMask & S1AP_ERRORINDICATIONIES_CRITICALITYDIAGNOSTICS_PRESENT) {
+
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_ErrorIndicationIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_CriticalityDiagnostics, FALSE);
+
+  if (ie) {
     // TODO continue
   }
-  // TODO continue
 
+  // TODO continue
   return 0;
 }
 
 
 static
-int s1ap_eNB_handle_initial_context_request(uint32_t               assoc_id,
+int s1ap_eNB_handle_initial_context_request(uint32_t   assoc_id,
     uint32_t               stream,
-    struct s1ap_message_s *s1ap_message_p)
+    S1AP_S1AP_PDU_t       *pdu)
 {
   int i;
-
   s1ap_eNB_mme_data_t   *mme_desc_p       = NULL;
   s1ap_eNB_ue_context_t *ue_desc_p        = NULL;
   MessageDef            *message_p        = NULL;
-
-  S1ap_InitialContextSetupRequestIEs_t *initialContextSetupRequest_p;
-  DevAssert(s1ap_message_p != NULL);
-
-  initialContextSetupRequest_p = &s1ap_message_p->msg.s1ap_InitialContextSetupRequestIEs;
+  S1AP_InitialContextSetupRequest_t    *container;
+  S1AP_InitialContextSetupRequestIEs_t *ie;
+  S1AP_ENB_UE_S1AP_ID_t    enb_ue_s1ap_id;
+  DevAssert(pdu != NULL);
+  container = &pdu->choice.initiatingMessage.value.choice.InitialContextSetupRequest;
 
   if ((mme_desc_p = s1ap_eNB_get_MME(NULL, assoc_id, 0)) == NULL) {
     S1AP_ERROR("[SCTP %d] Received initial context setup request for non "
@@ -721,11 +788,15 @@ int s1ap_eNB_handle_initial_context_request(uint32_t               assoc_id,
     return -1;
   }
 
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_InitialContextSetupRequestIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID, FALSE);
+  enb_ue_s1ap_id = ie->value.choice.ENB_UE_S1AP_ID;
+
   if ((ue_desc_p = s1ap_eNB_get_ue_context(mme_desc_p->s1ap_eNB_instance,
-                   initialContextSetupRequest_p->eNB_UE_S1AP_ID)) == NULL) {
+                   enb_ue_s1ap_id)) == NULL) {
     S1AP_ERROR("[SCTP %d] Received initial context setup request for non "
                "existing UE context 0x%06lx\n", assoc_id,
-               initialContextSetupRequest_p->eNB_UE_S1AP_ID);
+               enb_ue_s1ap_id);
     return -1;
   }
 
@@ -737,46 +808,52 @@ int s1ap_eNB_handle_initial_context_request(uint32_t               assoc_id,
   }
 
   ue_desc_p->rx_stream = stream;
-
-  ue_desc_p->mme_ue_s1ap_id = initialContextSetupRequest_p->mme_ue_s1ap_id;
-
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_InitialContextSetupRequestIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID, TRUE);
+  ue_desc_p->mme_ue_s1ap_id = ie->value.choice.MME_UE_S1AP_ID;
   message_p        = itti_alloc_new_message(TASK_S1AP, S1AP_INITIAL_CONTEXT_SETUP_REQ);
-
   S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).ue_initial_id  = ue_desc_p->ue_initial_id;
   ue_desc_p->ue_initial_id = 0;
 
-  S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).eNB_ue_s1ap_id = ue_desc_p->eNB_ue_s1ap_id;
-  S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).nb_of_e_rabs =
-    initialContextSetupRequest_p->e_RABToBeSetupListCtxtSUReq.s1ap_E_RABToBeSetupItemCtxtSUReq.count;
-
-  S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).ue_ambr.br_ul = 64;// TO DO(bitrate_t)(initialContextSetupRequest_p->uEaggregateMaximumBitrate.uEaggregateMaximumBitRateUL);
-  S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).ue_ambr.br_dl = 1024;//(bitrate_t)(initialContextSetupRequest_p->uEaggregateMaximumBitrate.uEaggregateMaximumBitRateDL);
+  if (ue_desc_p->eNB_ue_s1ap_id != enb_ue_s1ap_id) {
+    /* TBD */
+  }
 
+  S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).eNB_ue_s1ap_id = ue_desc_p->eNB_ue_s1ap_id;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_InitialContextSetupRequestIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_uEaggregateMaximumBitrate, TRUE);
+  asn_INTEGER2ulong(&(ie->value.choice.UEAggregateMaximumBitrate.uEaggregateMaximumBitRateUL),
+                    &(S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).ue_ambr.br_ul));
+  asn_INTEGER2ulong(&(ie->value.choice.UEAggregateMaximumBitrate.uEaggregateMaximumBitRateDL),
+                    &(S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).ue_ambr.br_dl));
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_InitialContextSetupRequestIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_UESecurityCapabilities, TRUE);
   S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).security_capabilities.encryption_algorithms =
-    BIT_STRING_to_uint16(&initialContextSetupRequest_p->ueSecurityCapabilities.encryptionAlgorithms);
+    BIT_STRING_to_uint16(&ie->value.choice.UESecurityCapabilities.encryptionAlgorithms);
   S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).security_capabilities.integrity_algorithms =
-    BIT_STRING_to_uint16(&initialContextSetupRequest_p->ueSecurityCapabilities.integrityProtectionAlgorithms);
-
+    BIT_STRING_to_uint16(&ie->value.choice.UESecurityCapabilities.integrityProtectionAlgorithms);
   /* Copy the security key */
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_InitialContextSetupRequestIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_SecurityKey, TRUE);
   memcpy(&S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).security_key,
-         initialContextSetupRequest_p->securityKey.buf, initialContextSetupRequest_p->securityKey.size);
-
-  for (i = 0; i < initialContextSetupRequest_p->e_RABToBeSetupListCtxtSUReq.s1ap_E_RABToBeSetupItemCtxtSUReq.count; i++) {
-    S1ap_E_RABToBeSetupItemCtxtSUReq_t *item_p;
-
-    item_p = (S1ap_E_RABToBeSetupItemCtxtSUReq_t *)initialContextSetupRequest_p->e_RABToBeSetupListCtxtSUReq.s1ap_E_RABToBeSetupItemCtxtSUReq.array[i];
+         ie->value.choice.SecurityKey.buf, ie->value.choice.SecurityKey.size);
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_InitialContextSetupRequestIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_E_RABToBeSetupListCtxtSUReq, TRUE);
+  S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).nb_of_e_rabs =
+    ie->value.choice.E_RABToBeSetupListCtxtSUReq.list.count;
 
+  for (i = 0; i < ie->value.choice.E_RABToBeSetupListCtxtSUReq.list.count; i++) {
+    S1AP_E_RABToBeSetupItemCtxtSUReq_t *item_p;
+    item_p = &(((S1AP_E_RABToBeSetupItemCtxtSUReqIEs_t *)ie->value.choice.E_RABToBeSetupListCtxtSUReq.list.array[i])->value.choice.E_RABToBeSetupItemCtxtSUReq);
     S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).e_rab_param[i].e_rab_id = item_p->e_RAB_ID;
 
     if (item_p->nAS_PDU != NULL) {
       /* Only copy NAS pdu if present */
       S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).e_rab_param[i].nas_pdu.length = item_p->nAS_PDU->size;
-
       S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).e_rab_param[i].nas_pdu.buffer =
         malloc(sizeof(uint8_t) * item_p->nAS_PDU->size);
-
       memcpy(S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).e_rab_param[i].nas_pdu.buffer,
-             item_p->nAS_PDU->buf, item_p->nAS_PDU->size); 
+             item_p->nAS_PDU->buf, item_p->nAS_PDU->size);
       S1AP_DEBUG("Received NAS message with the E_RAB setup procedure\n");
     } else {
       S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).e_rab_param[i].nas_pdu.length = 0;
@@ -788,13 +865,10 @@ int s1ap_eNB_handle_initial_context_request(uint32_t               assoc_id,
            item_p->transportLayerAddress.buf, item_p->transportLayerAddress.size);
     S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).e_rab_param[i].sgw_addr.length =
       item_p->transportLayerAddress.size * 8 - item_p->transportLayerAddress.bits_unused;
-
     /* GTP tunnel endpoint ID */
     OCTET_STRING_TO_INT32(&item_p->gTP_TEID, S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).e_rab_param[i].gtp_teid);
-
     /* Set the QOS informations */
     S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).e_rab_param[i].qos.qci = item_p->e_RABlevelQoSParameters.qCI;
-
     S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).e_rab_param[i].qos.allocation_retention_priority.priority_level =
       item_p->e_RABlevelQoSParameters.allocationRetentionPriority.priorityLevel;
     S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).e_rab_param[i].qos.allocation_retention_priority.pre_emp_capability =
@@ -804,24 +878,24 @@ int s1ap_eNB_handle_initial_context_request(uint32_t               assoc_id,
   }
 
   itti_send_msg_to_task(TASK_RRC_ENB, ue_desc_p->eNB_instance->instance, message_p);
-
   return 0;
 }
 
 
 static
-int s1ap_eNB_handle_ue_context_release_command(uint32_t               assoc_id,
+int s1ap_eNB_handle_ue_context_release_command(uint32_t   assoc_id,
     uint32_t               stream,
-    struct s1ap_message_s *s1ap_message_p)
+    S1AP_S1AP_PDU_t       *pdu)
 {
   s1ap_eNB_mme_data_t   *mme_desc_p       = NULL;
   s1ap_eNB_ue_context_t *ue_desc_p        = NULL;
   MessageDef            *message_p        = NULL;
-
-  S1ap_UEContextReleaseCommandIEs_t *ueContextReleaseCommand_p;
-  DevAssert(s1ap_message_p != NULL);
-
-  ueContextReleaseCommand_p = &s1ap_message_p->msg.s1ap_UEContextReleaseCommandIEs;
+  S1AP_MME_UE_S1AP_ID_t  mme_ue_s1ap_id;
+  S1AP_ENB_UE_S1AP_ID_t  enb_ue_s1ap_id;
+  S1AP_UEContextReleaseCommand_t     *container;
+  S1AP_UEContextReleaseCommand_IEs_t *ie;
+  DevAssert(pdu != NULL);
+  container = &pdu->choice.initiatingMessage.value.choice.UEContextReleaseCommand;
 
   if ((mme_desc_p = s1ap_eNB_get_MME(NULL, assoc_id, 0)) == NULL) {
     S1AP_ERROR("[SCTP %d] Received UE context release command for non "
@@ -829,80 +903,81 @@ int s1ap_eNB_handle_ue_context_release_command(uint32_t               assoc_id,
     return -1;
   }
 
-  S1ap_MME_UE_S1AP_ID_t    mme_ue_s1ap_id;
-  S1ap_ENB_UE_S1AP_ID_t    enb_ue_s1ap_id;
-
-  switch (ueContextReleaseCommand_p->uE_S1AP_IDs.present) {
-  case S1ap_UE_S1AP_IDs_PR_uE_S1AP_ID_pair:
-    enb_ue_s1ap_id = ueContextReleaseCommand_p->uE_S1AP_IDs.choice.uE_S1AP_ID_pair.eNB_UE_S1AP_ID;
-    mme_ue_s1ap_id = ueContextReleaseCommand_p->uE_S1AP_IDs.choice.uE_S1AP_ID_pair.mME_UE_S1AP_ID;
-
-    MSC_LOG_RX_MESSAGE(
-    		MSC_S1AP_ENB,
-    		MSC_S1AP_MME,
-    		NULL,0,
-    		"0 UEContextRelease/%s eNB_ue_s1ap_id "S1AP_UE_ID_FMT" mme_ue_s1ap_id "S1AP_UE_ID_FMT" len %u",
-  		s1ap_direction2String[s1ap_message_p->direction],
-  		enb_ue_s1ap_id,
-  		mme_ue_s1ap_id);
-
-    if ((ue_desc_p = s1ap_eNB_get_ue_context(mme_desc_p->s1ap_eNB_instance,
-                     enb_ue_s1ap_id)) == NULL) {
-      S1AP_ERROR("[SCTP %d] Received UE context release command for non "
-                 "existing UE context 0x%06lx\n",
-                 assoc_id,
-                 enb_ue_s1ap_id);
-      /*MessageDef *msg_complete_p;
-      msg_complete_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_COMPLETE);
-      S1AP_UE_CONTEXT_RELEASE_COMPLETE(msg_complete_p).eNB_ue_s1ap_id = enb_ue_s1ap_id;
-      itti_send_msg_to_task(TASK_S1AP, ue_desc_p->eNB_instance->instance <=> 0, msg_complete_p);
-      */
-      return -1;
-    } else {
-      MSC_LOG_TX_MESSAGE(
-    		  MSC_S1AP_ENB,
-    		  MSC_RRC_ENB,
-    		  NULL,0,
-    		  "0 S1AP_UE_CONTEXT_RELEASE_COMMAND/%d eNB_ue_s1ap_id "S1AP_UE_ID_FMT" ",
-    		  enb_ue_s1ap_id);
-
-      message_p        = itti_alloc_new_message(TASK_S1AP, S1AP_UE_CONTEXT_RELEASE_COMMAND);
-      S1AP_UE_CONTEXT_RELEASE_COMMAND(message_p).eNB_ue_s1ap_id = enb_ue_s1ap_id;
-      itti_send_msg_to_task(TASK_RRC_ENB, ue_desc_p->eNB_instance->instance, message_p);
-      return 0;
-    }
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_UEContextReleaseCommand_IEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_UE_S1AP_IDs, TRUE);
+
+  switch (ie->value.choice.UE_S1AP_IDs.present) {
+    case S1AP_UE_S1AP_IDs_PR_uE_S1AP_ID_pair:
+      enb_ue_s1ap_id = ie->value.choice.UE_S1AP_IDs.choice.uE_S1AP_ID_pair.eNB_UE_S1AP_ID;
+      mme_ue_s1ap_id = ie->value.choice.UE_S1AP_IDs.choice.uE_S1AP_ID_pair.mME_UE_S1AP_ID;
+      MSC_LOG_RX_MESSAGE(
+        MSC_S1AP_ENB,
+        MSC_S1AP_MME,
+        NULL,0,
+        "0 UEContextRelease/%s eNB_ue_s1ap_id "S1AP_UE_ID_FMT" mme_ue_s1ap_id "S1AP_UE_ID_FMT" len %u",
+        s1ap_direction2String[pdu->present - 1],
+        enb_ue_s1ap_id,
+        mme_ue_s1ap_id);
+
+      if ((ue_desc_p = s1ap_eNB_get_ue_context(mme_desc_p->s1ap_eNB_instance,
+                       enb_ue_s1ap_id)) == NULL) {
+        S1AP_ERROR("[SCTP %d] Received UE context release command for non "
+                   "existing UE context 0x%06lx\n",
+                   assoc_id,
+                   enb_ue_s1ap_id);
+        /*MessageDef *msg_complete_p;
+        msg_complete_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_COMPLETE);
+        S1AP_UE_CONTEXT_RELEASE_COMPLETE(msg_complete_p).eNB_ue_s1ap_id = enb_ue_s1ap_id;
+        itti_send_msg_to_task(TASK_S1AP, ue_desc_p->eNB_instance->instance <=> 0, msg_complete_p);
+        */
+        return -1;
+      } else {
+        MSC_LOG_TX_MESSAGE(
+          MSC_S1AP_ENB,
+          MSC_RRC_ENB,
+          NULL,0,
+          "0 S1AP_UE_CONTEXT_RELEASE_COMMAND/%d eNB_ue_s1ap_id "S1AP_UE_ID_FMT" ",
+          enb_ue_s1ap_id);
+        message_p        = itti_alloc_new_message(TASK_S1AP, S1AP_UE_CONTEXT_RELEASE_COMMAND);
+        S1AP_UE_CONTEXT_RELEASE_COMMAND(message_p).eNB_ue_s1ap_id = enb_ue_s1ap_id;
+        itti_send_msg_to_task(TASK_RRC_ENB, ue_desc_p->eNB_instance->instance, message_p);
+        return 0;
+      }
 
-    break;
+      break;
 
-//#warning "TODO mapping mme_ue_s1ap_id  enb_ue_s1ap_id?"
+    //#warning "TODO mapping mme_ue_s1ap_id  enb_ue_s1ap_id?"
 
-  case S1ap_UE_S1AP_IDs_PR_mME_UE_S1AP_ID:
-    mme_ue_s1ap_id = ueContextReleaseCommand_p->uE_S1AP_IDs.choice.mME_UE_S1AP_ID;
-    S1AP_ERROR("TO DO mapping mme_ue_s1ap_id  enb_ue_s1ap_id");
-    (void)mme_ue_s1ap_id; /* TODO: remove - it's to remove gcc warning about unused var */
+    case S1AP_UE_S1AP_IDs_PR_mME_UE_S1AP_ID:
+      mme_ue_s1ap_id = ie->value.choice.UE_S1AP_IDs.choice.uE_S1AP_ID_pair.mME_UE_S1AP_ID;
+      S1AP_ERROR("TO DO mapping mme_ue_s1ap_id  enb_ue_s1ap_id");
+      (void)mme_ue_s1ap_id; /* TODO: remove - it's to remove gcc warning about unused var */
 
-  case S1ap_UE_S1AP_IDs_PR_NOTHING:
-  default:
-    S1AP_ERROR("S1AP_UE_CONTEXT_RELEASE_COMMAND not processed, missing info elements");
-    return -1;
+    case S1AP_UE_S1AP_IDs_PR_NOTHING:
+    default:
+      S1AP_ERROR("S1AP_UE_CONTEXT_RELEASE_COMMAND not processed, missing info elements");
+      return -1;
   }
+
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_UEContextReleaseCommand_IEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_Cause, TRUE);
+  /* TBD */
 }
 
 static
-int s1ap_eNB_handle_e_rab_setup_request(uint32_t               assoc_id,
-					uint32_t               stream,
-					struct s1ap_message_s *s1ap_message_p) {
-
+int s1ap_eNB_handle_e_rab_setup_request(uint32_t         assoc_id,
+                                        uint32_t         stream,
+                                        S1AP_S1AP_PDU_t *pdu)
+{
   int i;
-
-  s1ap_eNB_mme_data_t   *mme_desc_p       = NULL;
-  s1ap_eNB_ue_context_t *ue_desc_p        = NULL;
-  MessageDef            *message_p        = NULL;
-
-  S1ap_E_RABSetupRequestIEs_t         *s1ap_E_RABSetupRequest;
-  DevAssert(s1ap_message_p != NULL);
-
-  s1ap_E_RABSetupRequest = &s1ap_message_p->msg.s1ap_E_RABSetupRequestIEs;
+  S1AP_ENB_UE_S1AP_ID_t         enb_ue_s1ap_id;
+  s1ap_eNB_mme_data_t          *mme_desc_p       = NULL;
+  s1ap_eNB_ue_context_t        *ue_desc_p        = NULL;
+  MessageDef                   *message_p        = NULL;
+  S1AP_E_RABSetupRequest_t     *container;
+  S1AP_E_RABSetupRequestIEs_t  *ie;
+  DevAssert(pdu != NULL);
+  container = &pdu->choice.initiatingMessage.value.choice.E_RABSetupRequest;
 
   if ((mme_desc_p = s1ap_eNB_get_MME(NULL, assoc_id, 0)) == NULL) {
     S1AP_ERROR("[SCTP %d] Received initial context setup request for non "
@@ -910,15 +985,19 @@ int s1ap_eNB_handle_e_rab_setup_request(uint32_t               assoc_id,
     return -1;
   }
 
-    
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_E_RABSetupRequestIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID, TRUE);
+
   if ((ue_desc_p = s1ap_eNB_get_ue_context(mme_desc_p->s1ap_eNB_instance,
-                   s1ap_E_RABSetupRequest->eNB_UE_S1AP_ID)) == NULL) {
+                   ie->value.choice.ENB_UE_S1AP_ID)) == NULL) {
     S1AP_ERROR("[SCTP %d] Received initial context setup request for non "
                "existing UE context 0x%06lx\n", assoc_id,
-               s1ap_E_RABSetupRequest->eNB_UE_S1AP_ID);
+               ie->value.choice.ENB_UE_S1AP_ID);
     return -1;
   }
 
+  enb_ue_s1ap_id = ie->value.choice.ENB_UE_S1AP_ID;
+
   /* Initial context request = UE-related procedure -> stream != 0 */
   if (stream == 0) {
     S1AP_ERROR("[SCTP %d] Received UE-related procedure on stream (%d)\n",
@@ -927,42 +1006,38 @@ int s1ap_eNB_handle_e_rab_setup_request(uint32_t               assoc_id,
   }
 
   ue_desc_p->rx_stream = stream;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_E_RABSetupRequestIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID, TRUE);
 
-  if ( ue_desc_p->mme_ue_s1ap_id != s1ap_E_RABSetupRequest->mme_ue_s1ap_id){
-    S1AP_WARN("UE context mme_ue_s1ap_id is different form that of the message (%d != %ld)", 
-	      ue_desc_p->mme_ue_s1ap_id, s1ap_E_RABSetupRequest->mme_ue_s1ap_id);
-
+  if ( ue_desc_p->mme_ue_s1ap_id != ie->value.choice.MME_UE_S1AP_ID) {
+    S1AP_WARN("UE context mme_ue_s1ap_id is different form that of the message (%d != %ld)",
+              ue_desc_p->mme_ue_s1ap_id, ie->value.choice.MME_UE_S1AP_ID);
   }
+
   message_p        = itti_alloc_new_message(TASK_S1AP, S1AP_E_RAB_SETUP_REQ);
- 
   S1AP_E_RAB_SETUP_REQ(message_p).ue_initial_id  = ue_desc_p->ue_initial_id;
-  
-  S1AP_E_RAB_SETUP_REQ(message_p).mme_ue_s1ap_id  = s1ap_E_RABSetupRequest->mme_ue_s1ap_id;
-  S1AP_E_RAB_SETUP_REQ(message_p).eNB_ue_s1ap_id  = s1ap_E_RABSetupRequest->eNB_UE_S1AP_ID;
-   
-   S1AP_E_RAB_SETUP_REQ(message_p).nb_e_rabs_tosetup =
-    s1ap_E_RABSetupRequest->e_RABToBeSetupListBearerSUReq.s1ap_E_RABToBeSetupItemBearerSUReq.count;
- 
-  for (i = 0; i < s1ap_E_RABSetupRequest->e_RABToBeSetupListBearerSUReq.s1ap_E_RABToBeSetupItemBearerSUReq.count; i++) {
-    S1ap_E_RABToBeSetupItemBearerSUReq_t *item_p;
-   
-    item_p = (S1ap_E_RABToBeSetupItemBearerSUReq_t *)s1ap_E_RABSetupRequest->e_RABToBeSetupListBearerSUReq.s1ap_E_RABToBeSetupItemBearerSUReq.array[i];
-
+  S1AP_E_RAB_SETUP_REQ(message_p).mme_ue_s1ap_id  = ie->value.choice.MME_UE_S1AP_ID;
+  S1AP_E_RAB_SETUP_REQ(message_p).eNB_ue_s1ap_id  = enb_ue_s1ap_id;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_E_RABSetupRequestIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_E_RABToBeSetupListBearerSUReq, TRUE);
+  S1AP_E_RAB_SETUP_REQ(message_p).nb_e_rabs_tosetup =
+    ie->value.choice.E_RABToBeSetupListBearerSUReq.list.count;
+
+  for (i = 0; i < ie->value.choice.E_RABToBeSetupListBearerSUReq.list.count; i++) {
+    S1AP_E_RABToBeSetupItemBearerSUReq_t *item_p;
+    item_p = &(((S1AP_E_RABToBeSetupItemBearerSUReqIEs_t *)ie->value.choice.E_RABToBeSetupListBearerSUReq.list.array[i])->value.choice.E_RABToBeSetupItemBearerSUReq);
     S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].e_rab_id = item_p->e_RAB_ID;
 
     // check for the NAS PDU
     if (item_p->nAS_PDU.size > 0 ) {
       S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].nas_pdu.length = item_p->nAS_PDU.size;
-
       S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].nas_pdu.buffer = malloc(sizeof(uint8_t) * item_p->nAS_PDU.size);
-
       memcpy(S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].nas_pdu.buffer,
-             item_p->nAS_PDU.buf, item_p->nAS_PDU.size); 
+             item_p->nAS_PDU.buf, item_p->nAS_PDU.size);
       // S1AP_INFO("received a NAS PDU with size %d (%02x.%02x)\n",S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].nas_pdu.length, item_p->nAS_PDU.buf[0], item_p->nAS_PDU.buf[1]);
     } else {
       S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].nas_pdu.length = 0;
       S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].nas_pdu.buffer = NULL;
-      
       S1AP_WARN("NAS PDU is not provided, generate a E_RAB_SETUP Failure (TBD) back to MME \n");
       // return -1;
     }
@@ -972,18 +1047,15 @@ int s1ap_eNB_handle_e_rab_setup_request(uint32_t               assoc_id,
            item_p->transportLayerAddress.buf, item_p->transportLayerAddress.size);
     S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].sgw_addr.length =
       item_p->transportLayerAddress.size * 8 - item_p->transportLayerAddress.bits_unused;
-
-    /* S1AP_INFO("sgw addr %s  len: %d (size %d, index %d)\n", 
-	      S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].sgw_addr.buffer,
-	      S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].sgw_addr.length,
-	      item_p->transportLayerAddress.size, i);
+    /* S1AP_INFO("sgw addr %s  len: %d (size %d, index %d)\n",
+        S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].sgw_addr.buffer,
+        S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].sgw_addr.length,
+        item_p->transportLayerAddress.size, i);
     */
     /* GTP tunnel endpoint ID */
     OCTET_STRING_TO_INT32(&item_p->gTP_TEID, S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].gtp_teid);
-
     /* Set the QOS informations */
     S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].qos.qci = item_p->e_RABlevelQoSParameters.qCI;
-
     S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].qos.allocation_retention_priority.priority_level =
       item_p->e_RABlevelQoSParameters.allocationRetentionPriority.priorityLevel;
     S1AP_E_RAB_SETUP_REQ(message_p).e_rab_setup_params[i].qos.allocation_retention_priority.pre_emp_capability =
@@ -993,26 +1065,24 @@ int s1ap_eNB_handle_e_rab_setup_request(uint32_t               assoc_id,
   }
 
   itti_send_msg_to_task(TASK_RRC_ENB, ue_desc_p->eNB_instance->instance, message_p);
-
   return 0;
 }
 
 static
 int s1ap_eNB_handle_paging(uint32_t               assoc_id,
-    uint32_t               stream,
-    struct s1ap_message_s *s1ap_message_p)
+                           uint32_t               stream,
+                           S1AP_S1AP_PDU_t       *pdu)
 {
-  S1ap_PagingIEs_t *paging_p;
   s1ap_eNB_mme_data_t   *mme_desc_p        = NULL;
   s1ap_eNB_instance_t   *s1ap_eNB_instance = NULL;
   MessageDef            *message_p         = NULL;
-
-  DevAssert(s1ap_message_p != NULL);
+  S1AP_Paging_t         *container;
+  S1AP_PagingIEs_t      *ie;
+  DevAssert(pdu != NULL);
+  container = &pdu->choice.initiatingMessage.value.choice.Paging;
   // received Paging Message from MME
   S1AP_DEBUG("[SCTP %d] Received Paging Message From MME\n",assoc_id);
 
-  paging_p = &s1ap_message_p->msg.s1ap_PagingIEs;
-
   /* Paging procedure -> stream != 0 */
   if (stream == 0) {
     S1AP_ERROR("[SCTP %d] Received Paging procedure on stream (%d)\n",
@@ -1027,6 +1097,7 @@ int s1ap_eNB_handle_paging(uint32_t               assoc_id,
   }
 
   s1ap_eNB_instance = mme_desc_p->s1ap_eNB_instance;
+
   if (s1ap_eNB_instance == NULL) {
     S1AP_ERROR("[SCTP %d] Received Paging for non existing MME context : s1ap_eNB_instance is NULL\n",
                assoc_id);
@@ -1034,178 +1105,208 @@ int s1ap_eNB_handle_paging(uint32_t               assoc_id,
   }
 
   message_p = itti_alloc_new_message(TASK_S1AP, S1AP_PAGING_IND);
-
-  /* convert S1ap_PagingIEs_t to s1ap_paging_ind_t */
+  /* convert S1AP_PagingIEs_t to s1ap_paging_ind_t */
   /* convert UE Identity Index value */
-  S1AP_PAGING_IND(message_p).ue_index_value  = BIT_STRING_to_uint32(&paging_p->ueIdentityIndexValue);
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_PagingIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_UEIdentityIndexValue, TRUE);
+  S1AP_PAGING_IND(message_p).ue_index_value  = BIT_STRING_to_uint32(&ie->value.choice.UEIdentityIndexValue);
   S1AP_DEBUG("[SCTP %d] Received Paging ue_index_value (%d)\n",
-            assoc_id,(uint32_t)S1AP_PAGING_IND(message_p).ue_index_value);
-
+             assoc_id,(uint32_t)S1AP_PAGING_IND(message_p).ue_index_value);
   S1AP_PAGING_IND(message_p).ue_paging_identity.choice.s_tmsi.mme_code = 0;
   S1AP_PAGING_IND(message_p).ue_paging_identity.choice.s_tmsi.m_tmsi = 0;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_PagingIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_UEPagingID, TRUE);
 
   /* convert UE Paging Identity */
-  if (paging_p->uePagingID.present == S1ap_UEPagingID_PR_s_TMSI) {
-      S1AP_PAGING_IND(message_p).ue_paging_identity.presenceMask = UE_PAGING_IDENTITY_s_tmsi;
-      OCTET_STRING_TO_INT8(&paging_p->uePagingID.choice.s_TMSI.mMEC, S1AP_PAGING_IND(message_p).ue_paging_identity.choice.s_tmsi.mme_code);
-      OCTET_STRING_TO_INT32(&paging_p->uePagingID.choice.s_TMSI.m_TMSI, S1AP_PAGING_IND(message_p).ue_paging_identity.choice.s_tmsi.m_tmsi);
-  } else if (paging_p->uePagingID.present == S1ap_UEPagingID_PR_iMSI) {
-      S1AP_PAGING_IND(message_p).ue_paging_identity.presenceMask = UE_PAGING_IDENTITY_imsi;
-      S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.length = 0;
-      for (int i = 0; i < paging_p->uePagingID.choice.iMSI.size; i++) {
-          S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[2*i] = (uint8_t)(paging_p->uePagingID.choice.iMSI.buf[i] & 0x0F );
-          S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.length++;
-          S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[2*i+1] = (uint8_t)((paging_p->uePagingID.choice.iMSI.buf[i]>>4) & 0x0F);
-          LOG_D(S1AP,"paging : i %d %d imsi %d %d \n",2*i,2*i+1,S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[2*i], S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[2*i+1]);
-          if (S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[2*i+1] == 0x0F) {
-              if(i != paging_p->uePagingID.choice.iMSI.size - 1){
-                  /* invalid paging_p->uePagingID.choise.iMSI.buffer */
-                  S1AP_ERROR("[SCTP %d] Received Paging : uePagingID.choise.iMSI error(i %d 0x0F)\n", assoc_id,i);
-                  return -1;
-              }
-          } else {
-              S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.length++;
-          }
-      }
-      if (S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.length >= S1AP_IMSI_LENGTH) {
-          /* invalid paging_p->uePagingID.choise.iMSI.size */
-          S1AP_ERROR("[SCTP %d] Received Paging : uePagingID.choise.iMSI.size(%d) is over IMSI length(%d)\n", assoc_id, S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.length, S1AP_IMSI_LENGTH);
+  if (ie->value.choice.UEPagingID.present == S1AP_UEPagingID_PR_s_TMSI) {
+    S1AP_PAGING_IND(message_p).ue_paging_identity.presenceMask = UE_PAGING_IDENTITY_s_tmsi;
+    OCTET_STRING_TO_INT8(&ie->value.choice.UEPagingID.choice.s_TMSI.mMEC, S1AP_PAGING_IND(message_p).ue_paging_identity.choice.s_tmsi.mme_code);
+    OCTET_STRING_TO_INT32(&ie->value.choice.UEPagingID.choice.s_TMSI.m_TMSI, S1AP_PAGING_IND(message_p).ue_paging_identity.choice.s_tmsi.m_tmsi);
+  } else if (ie->value.choice.UEPagingID.present == S1AP_UEPagingID_PR_iMSI) {
+    S1AP_PAGING_IND(message_p).ue_paging_identity.presenceMask = UE_PAGING_IDENTITY_imsi;
+    S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.length = 0;
+
+    for (int i = 0; i < ie->value.choice.UEPagingID.choice.iMSI.size; i++) {
+      S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[2*i] = (uint8_t)(ie->value.choice.UEPagingID.choice.iMSI.buf[i] & 0x0F );
+      S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.length++;
+      S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[2*i+1] = (uint8_t)((ie->value.choice.UEPagingID.choice.iMSI.buf[i]>>4) & 0x0F);
+      LOG_D(S1AP,"paging : i %d %d imsi %d %d \n",2*i,2*i+1,S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[2*i], S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[2*i+1]);
+
+      if (S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[2*i+1] == 0x0F) {
+        if(i != ie->value.choice.UEPagingID.choice.iMSI.size - 1) {
+          /* invalid paging_p->uePagingID.choise.iMSI.buffer */
+          S1AP_ERROR("[SCTP %d] Received Paging : uePagingID.choise.iMSI error(i %d 0x0F)\n", assoc_id,i);
           return -1;
-      }  
-} else {
-      /* invalid paging_p->uePagingID.present */
-      S1AP_ERROR("[SCTP %d] Received Paging : uePagingID.present(%d) is unknown\n", assoc_id, paging_p->uePagingID.present);
+        }
+      } else {
+        S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.length++;
+      }
+    }
+
+    if (S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.length >= S1AP_IMSI_LENGTH) {
+      /* invalid paging_p->uePagingID.choise.iMSI.size */
+      S1AP_ERROR("[SCTP %d] Received Paging : uePagingID.choise.iMSI.size(%d) is over IMSI length(%d)\n", assoc_id, S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.length, S1AP_IMSI_LENGTH);
       return -1;
+    }
+  } else {
+    /* invalid paging_p->uePagingID.present */
+    S1AP_ERROR("[SCTP %d] Received Paging : uePagingID.present(%d) is unknown\n", assoc_id, ie->value.choice.UEPagingID.present);
+    return -1;
   }
 
 #if 0
+
   /* convert Paging DRX(optional) */
   if (paging_p->presenceMask & S1AP_PAGINGIES_PAGINGDRX_PRESENT) {
-      switch(paging_p->pagingDRX) {
-        case S1ap_PagingDRX_v32:
-          S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_32;
-         break;
-        case S1ap_PagingDRX_v64:
-          S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_64;
+    switch(paging_p->pagingDRX) {
+      case S1AP_PagingDRX_v32:
+        S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_32;
         break;
-        case S1ap_PagingDRX_v128:
-          S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_128;
+
+      case S1AP_PagingDRX_v64:
+        S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_64;
         break;
-        case S1ap_PagingDRX_v256:
-          S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_256;
+
+      case S1AP_PagingDRX_v128:
+        S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_128;
         break;
-        default:
-          // when UE Paging DRX is no value
-          S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_256;
+
+      case S1AP_PagingDRX_v256:
+        S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_256;
         break;
-      }
+
+      default:
+        // when UE Paging DRX is no value
+        S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_256;
+        break;
+    }
   }
+
 #endif
-  S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_256;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_PagingIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_pagingDRX, FALSE);
+
+  /* optional */
+  if (ie) {
+    S1AP_PAGING_IND(message_p).paging_drx = ie->value.choice.PagingDRX;
+  } else {
+    S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_256;
+  }
+
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_PagingIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_CNDomain, TRUE);
 
   /* convert cnDomain */
-  if (paging_p->cnDomain == S1ap_CNDomain_ps) {
-      S1AP_PAGING_IND(message_p).cn_domain = CN_DOMAIN_PS;
-  } else if (paging_p->cnDomain == S1ap_CNDomain_cs) {
-      S1AP_PAGING_IND(message_p).cn_domain = CN_DOMAIN_CS;
+  if (ie->value.choice.CNDomain == S1AP_CNDomain_ps) {
+    S1AP_PAGING_IND(message_p).cn_domain = CN_DOMAIN_PS;
+  } else if (ie->value.choice.CNDomain == S1AP_CNDomain_cs) {
+    S1AP_PAGING_IND(message_p).cn_domain = CN_DOMAIN_CS;
   } else {
-      /* invalid paging_p->cnDomain */
-      S1AP_ERROR("[SCTP %d] Received Paging : cnDomain(%ld) is unknown\n", assoc_id, paging_p->cnDomain);
-      return -1;
+    /* invalid paging_p->cnDomain */
+    S1AP_ERROR("[SCTP %d] Received Paging : cnDomain(%ld) is unknown\n", assoc_id, ie->value.choice.CNDomain);
+    return -1;
   }
 
   memset (&S1AP_PAGING_IND(message_p).plmn_identity[0], 0, sizeof(plmn_identity_t)*256);
   memset (&S1AP_PAGING_IND(message_p).tac[0], 0, sizeof(int16_t)*256);
   S1AP_PAGING_IND(message_p).tai_size = 0;
-
-  for (int i = 0; i < paging_p->taiList.s1ap_TAIItem.count; i++) {
-     S1AP_INFO("[SCTP %d] Received Paging taiList: i %d, count %d\n", assoc_id, i, paging_p->taiList.s1ap_TAIItem.count);
-     S1ap_TAIItem_t s1ap_TAIItem;
-     memset (&s1ap_TAIItem, 0, sizeof(S1ap_TAIItem_t));
-
-     memcpy(&s1ap_TAIItem, paging_p->taiList.s1ap_TAIItem.array[i], sizeof(S1ap_TAIItem_t));
-
-     TBCD_TO_MCC_MNC(&s1ap_TAIItem.tAI.pLMNidentity, S1AP_PAGING_IND(message_p).plmn_identity[i].mcc,
-              S1AP_PAGING_IND(message_p).plmn_identity[i].mnc,
-              S1AP_PAGING_IND(message_p).plmn_identity[i].mnc_digit_length);
-     OCTET_STRING_TO_INT16(&s1ap_TAIItem.tAI.tAC, S1AP_PAGING_IND(message_p).tac[i]);
-     S1AP_PAGING_IND(message_p).tai_size++;
-     S1AP_DEBUG("[SCTP %d] Received Paging: MCC %d, MNC %d, TAC %d\n", assoc_id, S1AP_PAGING_IND(message_p).plmn_identity[i].mcc, S1AP_PAGING_IND(message_p).plmn_identity[i].mnc, S1AP_PAGING_IND(message_p).tac[i]);
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_PagingIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_TAIList, TRUE);
+  S1AP_INFO("[SCTP %d] Received Paging taiList: count %d\n", assoc_id, ie->value.choice.TAIList.list.count);
+
+  for (int i = 0; i < ie->value.choice.TAIList.list.count; i++) {
+    S1AP_TAIItem_t *item_p;
+    item_p = &(((S1AP_TAIItemIEs_t *)ie->value.choice.TAIList.list.array[i])->value.choice.TAIItem);
+    TBCD_TO_MCC_MNC(&(item_p->tAI.pLMNidentity), S1AP_PAGING_IND(message_p).plmn_identity[i].mcc,
+                    S1AP_PAGING_IND(message_p).plmn_identity[i].mnc,
+                    S1AP_PAGING_IND(message_p).plmn_identity[i].mnc_digit_length);
+    OCTET_STRING_TO_INT16(&(item_p->tAI.tAC), S1AP_PAGING_IND(message_p).tac[i]);
+    S1AP_PAGING_IND(message_p).tai_size++;
+    S1AP_DEBUG("[SCTP %d] Received Paging: MCC %d, MNC %d, TAC %d\n", assoc_id,
+               S1AP_PAGING_IND(message_p).plmn_identity[i].mcc,
+               S1AP_PAGING_IND(message_p).plmn_identity[i].mnc,
+               S1AP_PAGING_IND(message_p).tac[i]);
   }
 
 #if 0
- // CSG Id(optional) List is not used
+
+  // CSG Id(optional) List is not used
   if (paging_p->presenceMask & S1AP_PAGINGIES_CSG_IDLIST_PRESENT) {
-      // TODO
+    // TODO
   }
 
   /* convert pagingPriority (optional) if has value */
   if (paging_p->presenceMask & S1AP_PAGINGIES_PAGINGPRIORITY_PRESENT) {
-      switch(paging_p->pagingPriority) {
-      case S1ap_PagingPriority_priolevel1:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL1;
+    switch(paging_p->pagingPriority) {
+      case S1AP_PagingPriority_priolevel1:
+        S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL1;
         break;
-      case S1ap_PagingPriority_priolevel2:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL2;
+
+      case S1AP_PagingPriority_priolevel2:
+        S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL2;
         break;
-      case S1ap_PagingPriority_priolevel3:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL3;
+
+      case S1AP_PagingPriority_priolevel3:
+        S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL3;
         break;
-      case S1ap_PagingPriority_priolevel4:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL4;
+
+      case S1AP_PagingPriority_priolevel4:
+        S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL4;
         break;
-      case S1ap_PagingPriority_priolevel5:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL5;
+
+      case S1AP_PagingPriority_priolevel5:
+        S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL5;
         break;
-      case S1ap_PagingPriority_priolevel6:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL6;
+
+      case S1AP_PagingPriority_priolevel6:
+        S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL6;
         break;
-      case S1ap_PagingPriority_priolevel7:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL7;
+
+      case S1AP_PagingPriority_priolevel7:
+        S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL7;
         break;
-      case S1ap_PagingPriority_priolevel8:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL8;
+
+      case S1AP_PagingPriority_priolevel8:
+        S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL8;
         break;
+
       default:
         /* invalid paging_p->pagingPriority */
         S1AP_ERROR("[SCTP %d] Received paging : pagingPriority(%ld) is invalid\n", assoc_id, paging_p->pagingPriority);
         return -1;
-      }
+    }
   }
+
 #endif
   //paging parameter values
   S1AP_DEBUG("[SCTP %d] Received Paging parameters: ue_index_value %d  cn_domain %d paging_drx %d paging_priority %d\n",assoc_id,
-          S1AP_PAGING_IND(message_p).ue_index_value, S1AP_PAGING_IND(message_p).cn_domain,
-          S1AP_PAGING_IND(message_p).paging_drx, S1AP_PAGING_IND(message_p).paging_priority);
+             S1AP_PAGING_IND(message_p).ue_index_value, S1AP_PAGING_IND(message_p).cn_domain,
+             S1AP_PAGING_IND(message_p).paging_drx, S1AP_PAGING_IND(message_p).paging_priority);
   S1AP_DEBUG("[SCTP %d] Received Paging parameters(ue): presenceMask %d  s_tmsi.m_tmsi %d s_tmsi.mme_code %d IMSI length %d (0-5) %d%d%d%d%d%d\n",assoc_id,
-          S1AP_PAGING_IND(message_p).ue_paging_identity.presenceMask, S1AP_PAGING_IND(message_p).ue_paging_identity.choice.s_tmsi.m_tmsi,
-          S1AP_PAGING_IND(message_p).ue_paging_identity.choice.s_tmsi.mme_code, S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.length,
-          S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[0], S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[1],
-          S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[2], S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[3],
-          S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[4], S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[5]);
-
+             S1AP_PAGING_IND(message_p).ue_paging_identity.presenceMask, S1AP_PAGING_IND(message_p).ue_paging_identity.choice.s_tmsi.m_tmsi,
+             S1AP_PAGING_IND(message_p).ue_paging_identity.choice.s_tmsi.mme_code, S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.length,
+             S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[0], S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[1],
+             S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[2], S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[3],
+             S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[4], S1AP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[5]);
   /* send message to RRC */
   itti_send_msg_to_task(TASK_RRC_ENB, s1ap_eNB_instance->instance, message_p);
-  
-   return 0;
+  return 0;
 }
 
 static
 int s1ap_eNB_handle_e_rab_modify_request(uint32_t               assoc_id,
-          uint32_t               stream,
-          struct s1ap_message_s *s1ap_message_p) {
-
+    uint32_t               stream,
+    S1AP_S1AP_PDU_t       *pdu)
+{
   int i;
-
-  s1ap_eNB_mme_data_t   *mme_desc_p       = NULL;
-  s1ap_eNB_ue_context_t *ue_desc_p        = NULL;
-  MessageDef            *message_p        = NULL;
-  int nb_of_e_rabs_failed = 0;
-
-  S1ap_E_RABModifyRequestIEs_t         *s1ap_E_RABModifyRequest;
-  DevAssert(s1ap_message_p != NULL);
-
-  s1ap_E_RABModifyRequest = &s1ap_message_p->msg.s1ap_E_RABModifyRequestIEs;
+  s1ap_eNB_mme_data_t           *mme_desc_p       = NULL;
+  s1ap_eNB_ue_context_t         *ue_desc_p        = NULL;
+  MessageDef                    *message_p        = NULL;
+  S1AP_E_RABModifyRequest_t     *container;
+  S1AP_E_RABModifyRequestIEs_t  *ie;
+  S1AP_ENB_UE_S1AP_ID_t         enb_ue_s1ap_id;
+  DevAssert(pdu != NULL);
+  container = &pdu->choice.initiatingMessage.value.choice.E_RABModifyRequest;
 
   if ((mme_desc_p = s1ap_eNB_get_MME(NULL, assoc_id, 0)) == NULL) {
     S1AP_ERROR("[SCTP %d] Received E-RAB modify request for non "
@@ -1213,12 +1314,15 @@ int s1ap_eNB_handle_e_rab_modify_request(uint32_t               assoc_id,
     return -1;
   }
 
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_E_RABModifyRequestIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID, TRUE);
+  enb_ue_s1ap_id = ie->value.choice.ENB_UE_S1AP_ID;
 
   if ((ue_desc_p = s1ap_eNB_get_ue_context(mme_desc_p->s1ap_eNB_instance,
-                   s1ap_E_RABModifyRequest->eNB_UE_S1AP_ID)) == NULL) {
+                   ie->value.choice.ENB_UE_S1AP_ID)) == NULL) {
     S1AP_ERROR("[SCTP %d] Received E-RAB modify request for non "
                "existing UE context 0x%06lx\n", assoc_id,
-               s1ap_E_RABModifyRequest->eNB_UE_S1AP_ID);
+               ie->value.choice.ENB_UE_S1AP_ID);
     return -1;
   }
 
@@ -1230,54 +1334,51 @@ int s1ap_eNB_handle_e_rab_modify_request(uint32_t               assoc_id,
   }
 
   ue_desc_p->rx_stream = stream;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_E_RABModifyRequestIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID, TRUE);
 
-  if ( ue_desc_p->mme_ue_s1ap_id != s1ap_E_RABModifyRequest->mme_ue_s1ap_id){
+  if (ue_desc_p->mme_ue_s1ap_id != ie->value.choice.MME_UE_S1AP_ID) {
     S1AP_WARN("UE context mme_ue_s1ap_id is different form that of the message (%d != %ld)",
-        ue_desc_p->mme_ue_s1ap_id, s1ap_E_RABModifyRequest->mme_ue_s1ap_id);
+              ue_desc_p->mme_ue_s1ap_id, ie->value.choice.MME_UE_S1AP_ID);
     message_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_E_RAB_MODIFY_RESP);
-
-    S1AP_E_RAB_MODIFY_RESP (message_p).eNB_ue_s1ap_id = s1ap_E_RABModifyRequest->eNB_UE_S1AP_ID;
-//        S1AP_E_RAB_MODIFY_RESP (msg_fail_p).e_rabs[S1AP_MAX_E_RAB];
-    S1AP_E_RAB_MODIFY_RESP (message_p).nb_of_e_rabs = 0;
-
-    for(nb_of_e_rabs_failed = 0; nb_of_e_rabs_failed < s1ap_E_RABModifyRequest->e_RABToBeModifiedListBearerModReq.s1ap_E_RABToBeModifiedItemBearerModReq.count; nb_of_e_rabs_failed++) {
-      S1AP_E_RAB_MODIFY_RESP (message_p).e_rabs_failed[nb_of_e_rabs_failed].e_rab_id =
-            ((S1ap_E_RABToBeModifiedItemBearerModReq_t *)s1ap_E_RABModifyRequest->e_RABToBeModifiedListBearerModReq.s1ap_E_RABToBeModifiedItemBearerModReq.array[nb_of_e_rabs_failed])->e_RAB_ID;
-      S1AP_E_RAB_MODIFY_RESP (message_p).e_rabs_failed[nb_of_e_rabs_failed].cause = S1AP_CAUSE_RADIO_NETWORK;
-      S1AP_E_RAB_MODIFY_RESP (message_p).e_rabs_failed[nb_of_e_rabs_failed].cause_value = 13;//S1ap_CauseRadioNetwork_unknown_mme_ue_s1ap_id;
+    S1AP_E_RAB_MODIFY_RESP (message_p).eNB_ue_s1ap_id = enb_ue_s1ap_id;
+    S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_E_RABModifyRequestIEs_t, ie, container,
+                               S1AP_ProtocolIE_ID_id_E_RABToBeModifiedListBearerModReq, TRUE);
+
+    for(i = 0; i < ie->value.choice.E_RABToBeModifiedListBearerModReq.list.count; i++) {
+      S1AP_E_RABToBeModifiedItemBearerModReq_t *item_p;
+      item_p = &(((S1AP_E_RABToBeModifiedItemBearerModReqIEs_t *)
+                  ie->value.choice.E_RABToBeModifiedListBearerModReq.list.array[i])->value.choice.E_RABToBeModifiedItemBearerModReq);
+      S1AP_E_RAB_MODIFY_RESP(message_p).e_rabs_failed[i].e_rab_id = item_p->e_RAB_ID;
+      S1AP_E_RAB_MODIFY_RESP(message_p).e_rabs_failed[i].cause = S1AP_Cause_PR_radioNetwork;
+      S1AP_E_RAB_MODIFY_RESP(message_p).e_rabs_failed[i].cause_value = S1AP_CauseRadioNetwork_unknown_mme_ue_s1ap_id;
     }
-    S1AP_E_RAB_MODIFY_RESP (message_p).nb_of_e_rabs_failed = nb_of_e_rabs_failed;
 
+    S1AP_E_RAB_MODIFY_RESP(message_p).nb_of_e_rabs_failed = ie->value.choice.E_RABToBeModifiedListBearerModReq.list.count;
     s1ap_eNB_e_rab_modify_resp(mme_desc_p->s1ap_eNB_instance->instance,
                                &S1AP_E_RAB_MODIFY_RESP(message_p));
-
     message_p = NULL;
     return -1;
   }
 
   message_p        = itti_alloc_new_message(TASK_S1AP, S1AP_E_RAB_MODIFY_REQ);
-
   S1AP_E_RAB_MODIFY_REQ(message_p).ue_initial_id  = ue_desc_p->ue_initial_id;
-
-  S1AP_E_RAB_MODIFY_REQ(message_p).mme_ue_s1ap_id  = s1ap_E_RABModifyRequest->mme_ue_s1ap_id;
-  S1AP_E_RAB_MODIFY_REQ(message_p).eNB_ue_s1ap_id  = s1ap_E_RABModifyRequest->eNB_UE_S1AP_ID;
-
+  S1AP_E_RAB_MODIFY_REQ(message_p).mme_ue_s1ap_id  = ie->value.choice.MME_UE_S1AP_ID;
+  S1AP_E_RAB_MODIFY_REQ(message_p).eNB_ue_s1ap_id  = enb_ue_s1ap_id;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_E_RABModifyRequestIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_E_RABToBeModifiedListBearerModReq, TRUE);
   S1AP_E_RAB_MODIFY_REQ(message_p).nb_e_rabs_tomodify =
-    s1ap_E_RABModifyRequest->e_RABToBeModifiedListBearerModReq.s1ap_E_RABToBeModifiedItemBearerModReq.count;
-
-  for (i = 0; i < s1ap_E_RABModifyRequest->e_RABToBeModifiedListBearerModReq.s1ap_E_RABToBeModifiedItemBearerModReq.count; i++) {
-    S1ap_E_RABToBeModifiedItemBearerModReq_t *item_p;
-
-    item_p = (S1ap_E_RABToBeModifiedItemBearerModReq_t *)s1ap_E_RABModifyRequest->e_RABToBeModifiedListBearerModReq.s1ap_E_RABToBeModifiedItemBearerModReq.array[i];
+    ie->value.choice.E_RABToBeModifiedListBearerModReq.list.count;
 
+  for (i = 0; i < ie->value.choice.E_RABToBeModifiedListBearerModReq.list.count; i++) {
+    S1AP_E_RABToBeModifiedItemBearerModReq_t *item_p;
+    item_p = &(((S1AP_E_RABToBeModifiedItemBearerModReqIEs_t *)ie->value.choice.E_RABToBeModifiedListBearerModReq.list.array[i])->value.choice.E_RABToBeModifiedItemBearerModReq);
     S1AP_E_RAB_MODIFY_REQ(message_p).e_rab_modify_params[i].e_rab_id = item_p->e_RAB_ID;
 
     // check for the NAS PDU
     if (item_p->nAS_PDU.size > 0 ) {
       S1AP_E_RAB_MODIFY_REQ(message_p).e_rab_modify_params[i].nas_pdu.length = item_p->nAS_PDU.size;
-
       S1AP_E_RAB_MODIFY_REQ(message_p).e_rab_modify_params[i].nas_pdu.buffer = malloc(sizeof(uint8_t) * item_p->nAS_PDU.size);
-
       memcpy(S1AP_E_RAB_MODIFY_REQ(message_p).e_rab_modify_params[i].nas_pdu.buffer,
              item_p->nAS_PDU.buf, item_p->nAS_PDU.size);
     } else {
@@ -1288,44 +1389,46 @@ int s1ap_eNB_handle_e_rab_modify_request(uint32_t               assoc_id,
 
     /* Set the QOS informations */
     S1AP_E_RAB_MODIFY_REQ(message_p).e_rab_modify_params[i].qos.qci = item_p->e_RABLevelQoSParameters.qCI;
-
     S1AP_E_RAB_MODIFY_REQ(message_p).e_rab_modify_params[i].qos.allocation_retention_priority.priority_level =
       item_p->e_RABLevelQoSParameters.allocationRetentionPriority.priorityLevel;
     S1AP_E_RAB_MODIFY_REQ(message_p).e_rab_modify_params[i].qos.allocation_retention_priority.pre_emp_capability =
       item_p->e_RABLevelQoSParameters.allocationRetentionPriority.pre_emptionCapability;
     S1AP_E_RAB_MODIFY_REQ(message_p).e_rab_modify_params[i].qos.allocation_retention_priority.pre_emp_vulnerability =
       item_p->e_RABLevelQoSParameters.allocationRetentionPriority.pre_emptionVulnerability;
-
   }
 
   itti_send_msg_to_task(TASK_RRC_ENB, ue_desc_p->eNB_instance->instance, message_p);
-
   return 0;
 }
 // handle e-rab release command and send it to rrc_end
 static
 int s1ap_eNB_handle_e_rab_release_command(uint32_t               assoc_id,
-                                          uint32_t               stream,
-                                          struct s1ap_message_s *s1ap_message_p) {
-
+    uint32_t               stream,
+    S1AP_S1AP_PDU_t       *pdu)
+{
   int i;
-
   s1ap_eNB_mme_data_t   *mme_desc_p       = NULL;
   s1ap_eNB_ue_context_t *ue_desc_p        = NULL;
   MessageDef            *message_p        = NULL;
+  S1AP_E_RABReleaseCommand_t     *container;
+  S1AP_E_RABReleaseCommandIEs_t  *ie;
+  S1AP_ENB_UE_S1AP_ID_t           enb_ue_s1ap_id;
+  DevAssert(pdu != NULL);
+  container = &pdu->choice.initiatingMessage.value.choice.E_RABReleaseCommand;
 
-  S1ap_E_RABReleaseCommandIEs_t         *s1ap_E_RABReleaseCommand;
-  DevAssert(s1ap_message_p != NULL);
-  s1ap_E_RABReleaseCommand = &s1ap_message_p->msg.s1ap_E_RABReleaseCommandIEs;
-  
   if ((mme_desc_p = s1ap_eNB_get_MME(NULL, assoc_id, 0)) == NULL) {
     S1AP_ERROR("[SCTP %d] Received E-RAB release command for non existing MME context\n", assoc_id);
     return -1;
   }
+
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_E_RABReleaseCommandIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID, TRUE);
+  enb_ue_s1ap_id = ie->value.choice.ENB_UE_S1AP_ID;
+
   if ((ue_desc_p = s1ap_eNB_get_ue_context(mme_desc_p->s1ap_eNB_instance,
-          s1ap_E_RABReleaseCommand->eNB_UE_S1AP_ID)) == NULL) {
+                   ie->value.choice.ENB_UE_S1AP_ID)) == NULL) {
     S1AP_ERROR("[SCTP %d] Received E-RAB release command for non existing UE context 0x%06lx\n", assoc_id,
-               s1ap_E_RABReleaseCommand->eNB_UE_S1AP_ID);
+               ie->value.choice.ENB_UE_S1AP_ID);
     return -1;
   }
 
@@ -1337,42 +1440,45 @@ int s1ap_eNB_handle_e_rab_release_command(uint32_t               assoc_id,
   }
 
   ue_desc_p->rx_stream = stream;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_E_RABReleaseCommandIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID, TRUE);
 
-  if ( ue_desc_p->mme_ue_s1ap_id != s1ap_E_RABReleaseCommand->mme_ue_s1ap_id){
+  if (ue_desc_p->mme_ue_s1ap_id != ie->value.choice.MME_UE_S1AP_ID) {
     S1AP_WARN("UE context mme_ue_s1ap_id is different form that of the message (%d != %ld)",
-          ue_desc_p->mme_ue_s1ap_id, s1ap_E_RABReleaseCommand->mme_ue_s1ap_id);
+              ue_desc_p->mme_ue_s1ap_id, ie->value.choice.MME_UE_S1AP_ID);
   }
 
   S1AP_DEBUG("[SCTP %d] Received E-RAB release command for eNB_UE_S1AP_ID %ld mme_ue_s1ap_id %ld\n",
-          assoc_id, s1ap_E_RABReleaseCommand->eNB_UE_S1AP_ID, s1ap_E_RABReleaseCommand->mme_ue_s1ap_id);
-
-  message_p        = itti_alloc_new_message(TASK_S1AP, S1AP_E_RAB_RELEASE_COMMAND);
-
-  S1AP_E_RAB_RELEASE_COMMAND(message_p).eNB_ue_s1ap_id = s1ap_E_RABReleaseCommand->eNB_UE_S1AP_ID;
-  S1AP_E_RAB_RELEASE_COMMAND(message_p).mme_ue_s1ap_id = s1ap_E_RABReleaseCommand->mme_ue_s1ap_id;
-  if(s1ap_E_RABReleaseCommand->nas_pdu.size > 0 ){
-    S1AP_E_RAB_RELEASE_COMMAND(message_p).nas_pdu.length = s1ap_E_RABReleaseCommand->nas_pdu.size;
-
+             assoc_id, enb_ue_s1ap_id, ie->value.choice.MME_UE_S1AP_ID);
+  message_p = itti_alloc_new_message(TASK_S1AP, S1AP_E_RAB_RELEASE_COMMAND);
+  S1AP_E_RAB_RELEASE_COMMAND(message_p).eNB_ue_s1ap_id = enb_ue_s1ap_id;
+  S1AP_E_RAB_RELEASE_COMMAND(message_p).mme_ue_s1ap_id = ie->value.choice.MME_UE_S1AP_ID;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_E_RABReleaseCommandIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_NAS_PDU, FALSE);
+
+  if(ie && ie->value.choice.NAS_PDU.size > 0) {
+    S1AP_E_RAB_RELEASE_COMMAND(message_p).nas_pdu.length = ie->value.choice.NAS_PDU.size;
     S1AP_E_RAB_RELEASE_COMMAND(message_p).nas_pdu.buffer =
-      malloc(sizeof(uint8_t) * s1ap_E_RABReleaseCommand->nas_pdu.size);
-
+      malloc(sizeof(uint8_t) * ie->value.choice.NAS_PDU.size);
     memcpy(S1AP_E_RAB_RELEASE_COMMAND(message_p).nas_pdu.buffer,
-    		s1ap_E_RABReleaseCommand->nas_pdu.buf,
-    		s1ap_E_RABReleaseCommand->nas_pdu.size);
+           ie->value.choice.NAS_PDU.buf,
+           ie->value.choice.NAS_PDU.size);
   } else {
-	  S1AP_E_RAB_RELEASE_COMMAND(message_p).nas_pdu.length = 0;
-	  S1AP_E_RAB_RELEASE_COMMAND(message_p).nas_pdu.buffer = NULL;
+    S1AP_E_RAB_RELEASE_COMMAND(message_p).nas_pdu.length = 0;
+    S1AP_E_RAB_RELEASE_COMMAND(message_p).nas_pdu.buffer = NULL;
   }
 
-  S1AP_E_RAB_RELEASE_COMMAND(message_p).nb_e_rabs_torelease = s1ap_E_RABReleaseCommand->e_RABToBeReleasedList.s1ap_E_RABItem.count;
-  for(i=0; i < s1ap_E_RABReleaseCommand->e_RABToBeReleasedList.s1ap_E_RABItem.count; i++){
-	  S1ap_E_RABItem_t *item_p;
-	  item_p = (S1ap_E_RABItem_t*)s1ap_E_RABReleaseCommand->e_RABToBeReleasedList.s1ap_E_RABItem.array[i];
-	  S1AP_E_RAB_RELEASE_COMMAND(message_p).e_rab_release_params[i].e_rab_id = item_p->e_RAB_ID;
-	  S1AP_DEBUG("[SCTP] Received E-RAB release command for e-rab id %ld\n", item_p->e_RAB_ID);
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_E_RABReleaseCommandIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_E_RABToBeReleasedList, TRUE);
+  S1AP_E_RAB_RELEASE_COMMAND(message_p).nb_e_rabs_torelease = ie->value.choice.E_RABList.list.count;
+
+  for (i = 0; i < ie->value.choice.E_RABList.list.count; i++) {
+    S1AP_E_RABItem_t *item_p;
+    item_p = &(((S1AP_E_RABItemIEs_t *)ie->value.choice.E_RABList.list.array[i])->value.choice.E_RABItem);
+    S1AP_E_RAB_RELEASE_COMMAND(message_p).e_rab_release_params[i].e_rab_id = item_p->e_RAB_ID;
+    S1AP_DEBUG("[SCTP] Received E-RAB release command for e-rab id %ld\n", item_p->e_RAB_ID);
   }
 
   itti_send_msg_to_task(TASK_RRC_ENB, ue_desc_p->eNB_instance->instance, message_p);
-
   return 0;
 }
diff --git a/openair3/S1AP/s1ap_eNB_nas_procedures.c b/openair3/S1AP/s1ap_eNB_nas_procedures.c
index d6d9b52c07a2cd6719b9bc63fbcda72bf4d11c4a..3ce4eb17fb054e5d4cefbd1f92f9fa113de2c90d 100644
--- a/openair3/S1AP/s1ap_eNB_nas_procedures.c
+++ b/openair3/S1AP/s1ap_eNB_nas_procedures.c
@@ -21,7 +21,7 @@
 
 /*! \file s1ap_eNB_nas_procedures.c
  * \brief S1AP eNb NAS procedure handler
- * \author  S. Roux and Navid Nikaein 
+ * \author  S. Roux and Navid Nikaein
  * \date 2010 - 2015
  * \email: navid.nikaein@eurecom.fr
  * \version 1.0
@@ -41,7 +41,6 @@
 
 #include "s1ap_eNB_itti_messaging.h"
 
-#include "s1ap_ies_defs.h"
 #include "s1ap_eNB_encoder.h"
 #include "s1ap_eNB_nnsf.h"
 #include "s1ap_eNB_ue_context.h"
@@ -57,26 +56,21 @@ int s1ap_eNB_handle_nas_first_req(
   s1ap_eNB_instance_t          *instance_p = NULL;
   struct s1ap_eNB_mme_data_s   *mme_desc_p = NULL;
   struct s1ap_eNB_ue_context_s *ue_desc_p  = NULL;
-
-  s1ap_message message;
-
-  S1ap_InitialUEMessageIEs_t *initial_ue_message_p = NULL;
-
+  S1AP_S1AP_PDU_t               pdu;
+  S1AP_InitialUEMessage_t      *out;
+  S1AP_InitialUEMessage_IEs_t  *ie;
   uint8_t  *buffer = NULL;
   uint32_t  length = 0;
-
   DevAssert(s1ap_nas_first_req_p != NULL);
-
   /* Retrieve the S1AP eNB instance associated with Mod_id */
   instance_p = s1ap_eNB_get_instance(instance);
   DevAssert(instance_p != NULL);
-
-  memset(&message, 0, sizeof(s1ap_message));
-
-  message.direction     = S1AP_PDU_PR_initiatingMessage;
-  message.procedureCode = S1ap_ProcedureCode_id_initialUEMessage;
-
-  initial_ue_message_p = &message.msg.s1ap_InitialUEMessageIEs;
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = S1AP_S1AP_PDU_PR_initiatingMessage;
+  pdu.choice.initiatingMessage.procedureCode = S1AP_ProcedureCode_id_initialUEMessage;
+  pdu.choice.initiatingMessage.criticality = S1AP_Criticality_ignore;
+  pdu.choice.initiatingMessage.value.present = S1AP_InitiatingMessage__value_PR_InitialUEMessage;
+  out = &pdu.choice.initiatingMessage.value.choice.InitialUEMessage;
 
   /* Select the MME corresponding to the provided GUMMEI. */
   if (s1ap_nas_first_req_p->ue_identity.presenceMask & UE_IDENTITIES_gummei) {
@@ -111,7 +105,6 @@ int s1ap_eNB_handle_nas_first_req(
      * In case eNB has no MME associated, the eNB should inform RRC and discard
      * this request.
      */
-
     S1AP_WARN("No MME is associated to the eNB\n");
     // TODO: Inform RRC
     return -1;
@@ -122,7 +115,6 @@ int s1ap_eNB_handle_nas_first_req(
    */
   ue_desc_p = s1ap_eNB_allocate_new_UE_context();
   DevAssert(ue_desc_p != NULL);
-
   /* Keep a reference to the selected MME */
   ue_desc_p->mme_ref       = mme_desc_p;
   ue_desc_p->ue_initial_id = s1ap_nas_first_req_p->ue_initial_id;
@@ -130,7 +122,6 @@ int s1ap_eNB_handle_nas_first_req(
 
   do {
     struct s1ap_eNB_ue_context_s *collision_p;
-
     /* Peek a random value for the eNB_ue_s1ap_id */
     ue_desc_p->eNB_ue_s1ap_id = (random() + random()) & 0x00ffffff;
 
@@ -144,70 +135,239 @@ int s1ap_eNB_handle_nas_first_req(
     }
   } while(1);
 
-  initial_ue_message_p->eNB_UE_S1AP_ID = ue_desc_p->eNB_ue_s1ap_id;
-  /* Prepare the NAS PDU */
-  initial_ue_message_p->nas_pdu.buf  = s1ap_nas_first_req_p->nas_pdu.buffer;
-  initial_ue_message_p->nas_pdu.size = s1ap_nas_first_req_p->nas_pdu.length;
-
+  /* mandatory */
+  ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_ENB_UE_S1AP_ID;
+  ie->value.choice.ENB_UE_S1AP_ID = ue_desc_p->eNB_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_NAS_PDU;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_NAS_PDU;
+  ie->value.choice.NAS_PDU.buf = s1ap_nas_first_req_p->nas_pdu.buffer;
+  ie->value.choice.NAS_PDU.size = s1ap_nas_first_req_p->nas_pdu.length;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_ENB_UE_S1AP_ID;
+  ie->value.choice.ENB_UE_S1AP_ID = ue_desc_p->eNB_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_TAI;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_TAI;
+  /* Assuming TAI is the TAI from the cell */
+  INT16_TO_OCTET_STRING(instance_p->tac, &ie->value.choice.TAI.tAC);
+  MCC_MNC_TO_PLMNID(instance_p->mcc,
+                    instance_p->mnc,
+                    instance_p->mnc_digit_length,
+                    &ie->value.choice.TAI.pLMNidentity);
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_EUTRAN_CGI;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_EUTRAN_CGI;
+  /* Set the EUTRAN CGI
+   * The cell identity is defined on 28 bits but as we use macro enb id,
+   * we have to pad.
+   */
+  //#warning "TODO get cell id from RRC"
+  MACRO_ENB_ID_TO_CELL_IDENTITY(instance_p->eNB_id,
+                                0, // Cell ID
+                                &ie->value.choice.EUTRAN_CGI.cell_ID);
+  MCC_MNC_TO_TBCD(instance_p->mcc,
+                  instance_p->mnc,
+                  instance_p->mnc_digit_length,
+                  &ie->value.choice.EUTRAN_CGI.pLMNidentity);
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
   /* Set the establishment cause according to those provided by RRC */
   DevCheck(s1ap_nas_first_req_p->establishment_cause < RRC_CAUSE_LAST,
            s1ap_nas_first_req_p->establishment_cause, RRC_CAUSE_LAST, 0);
-  initial_ue_message_p->rrC_Establishment_Cause = s1ap_nas_first_req_p->establishment_cause;
-
+  /* mandatory */
+  ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_RRC_Establishment_Cause;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_RRC_Establishment_Cause;
+  ie->value.choice.RRC_Establishment_Cause = s1ap_nas_first_req_p->establishment_cause;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  /* optional */
   if (s1ap_nas_first_req_p->ue_identity.presenceMask & UE_IDENTITIES_s_tmsi) {
     S1AP_DEBUG("S_TMSI_PRESENT\n");
-    initial_ue_message_p->presenceMask |= S1AP_INITIALUEMESSAGEIES_S_TMSI_PRESENT;
-
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_S_TMSI;
+    ie->criticality = S1AP_Criticality_reject;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_S_TMSI;
     MME_CODE_TO_OCTET_STRING(s1ap_nas_first_req_p->ue_identity.s_tmsi.mme_code,
-                             &initial_ue_message_p->s_tmsi.mMEC);
+                             &ie->value.choice.S_TMSI.mMEC);
     M_TMSI_TO_OCTET_STRING(s1ap_nas_first_req_p->ue_identity.s_tmsi.m_tmsi,
-                           &initial_ue_message_p->s_tmsi.m_TMSI);
+                           &ie->value.choice.S_TMSI.m_TMSI);
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
   }
 
+  /* optional */
+  if (0) {
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_CSG_Id;
+    ie->criticality = S1AP_Criticality_reject;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_CSG_Id;
+    // ie->value.choice.CSG_Id = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
   if (s1ap_nas_first_req_p->ue_identity.presenceMask & UE_IDENTITIES_gummei) {
     S1AP_DEBUG("GUMMEI_ID_PRESENT\n");
-    initial_ue_message_p->presenceMask |= S1AP_INITIALUEMESSAGEIES_GUMMEI_ID_PRESENT;
-
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_GUMMEI_ID;
+    ie->criticality = S1AP_Criticality_reject;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_GUMMEI;
     MCC_MNC_TO_PLMNID(
       s1ap_nas_first_req_p->ue_identity.gummei.mcc,
       s1ap_nas_first_req_p->ue_identity.gummei.mnc,
       s1ap_nas_first_req_p->ue_identity.gummei.mnc_len,
-      &initial_ue_message_p->gummei_id.pLMN_Identity);
-
+      &ie->value.choice.GUMMEI.pLMN_Identity);
     MME_GID_TO_OCTET_STRING(s1ap_nas_first_req_p->ue_identity.gummei.mme_group_id,
-                            &initial_ue_message_p->gummei_id.mME_Group_ID);
+                            &ie->value.choice.GUMMEI.mME_Group_ID);
     MME_CODE_TO_OCTET_STRING(s1ap_nas_first_req_p->ue_identity.gummei.mme_code,
-                             &initial_ue_message_p->gummei_id.mME_Code);
+                             &ie->value.choice.GUMMEI.mME_Code);
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
   }
 
-  /* Assuming TAI is the TAI from the cell */
-  INT16_TO_OCTET_STRING(instance_p->tac, &initial_ue_message_p->tai.tAC);
-  MCC_MNC_TO_PLMNID(instance_p->mcc,
-                    instance_p->mnc,
-                    instance_p->mnc_digit_length,
-                    &initial_ue_message_p->tai.pLMNidentity);
+  /* optional */
+  if (0) {
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_CellAccessMode;
+    ie->criticality = S1AP_Criticality_reject;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_CellAccessMode;
+    // ie->value.choice.CellAccessMode = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-  /* Set the EUTRAN CGI
-   * The cell identity is defined on 28 bits but as we use macro enb id,
-   * we have to pad.
-   */
-//#warning "TODO get cell id from RRC"
-  MACRO_ENB_ID_TO_CELL_IDENTITY(instance_p->eNB_id,
-		  0, // Cell ID
-          &initial_ue_message_p->eutran_cgi.cell_ID);
-  MCC_MNC_TO_TBCD(instance_p->mcc,
-                  instance_p->mnc,
-                  instance_p->mnc_digit_length,
-                  &initial_ue_message_p->eutran_cgi.pLMNidentity);
+  /* optional */
+  if (0) {
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_GW_TransportLayerAddress;
+    ie->criticality = S1AP_Criticality_reject;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_TransportLayerAddress;
+    // ie->value.choice.TransportLayerAddress =;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_RelayNode_Indicator;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_RelayNode_Indicator;
+    // ie->value.choice.RelayNode_Indicator =;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_GUMMEIType;
+    ie->criticality = S1AP_Criticality_reject;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_GUMMEIType;
+    // ie->value.choice.GUMMEIType =;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */ /* release 11 */
+  if (0) {
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_Tunnel_Information_for_BBF;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_TunnelInformation;
+    // ie->value.choice.TunnelInformation =;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_SIPTO_L_GW_TransportLayerAddress;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_TransportLayerAddress;
+    // ie->value.choice.TransportLayerAddress = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_LHN_ID;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_LHN_ID;
+    // ie->value.choice.LHN_ID = ue_release_req_p->eNB_ue_s1ap_id;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_MME_Group_ID;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_MME_Group_ID;
+    // ie->value.choice.MME_Group_ID =;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_UE_Usage_Type;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_UE_Usage_Type;
+    // ie->value.choice.UE_Usage_Type =;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-  if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+  /* optional */
+  if (0) {
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_CE_mode_B_SupportIndicator;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_CE_mode_B_SupportIndicator;
+    // ie->value.choice.CE_mode_B_SupportIndicator = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_DCN_ID;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_DCN_ID;
+    // ie->value.choice.DCN_ID = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_Coverage_Level;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_Coverage_Level;
+    // ie->value.choice.Coverage_Level = ue_release_req_p->eNB_ue_s1ap_id;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
     /* Failed to encode message */
     DevMessage("Failed to encode initial UE message\n");
   }
 
   /* Update the current S1AP UE state */
   ue_desc_p->ue_state = S1AP_UE_WAITING_CSR;
-
   /* Assign a stream for this UE :
    * From 3GPP 36.412 7)Transport layers:
    *  Within the SCTP association established between one MME and eNB pair:
@@ -227,7 +387,6 @@ int s1ap_eNB_handle_nas_first_req(
   }
 
   ue_desc_p->tx_stream = mme_desc_p->nextstream;
-
   MSC_LOG_TX_MESSAGE(
     MSC_S1AP_ENB,
     MSC_S1AP_MME,
@@ -236,29 +395,26 @@ int s1ap_eNB_handle_nas_first_req(
     MSC_AS_TIME_FMT" initialUEMessage initiatingMessage eNB_ue_s1ap_id %u",
     0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
     initial_ue_message_p->eNB_UE_S1AP_ID);
-
   /* Send encoded message over sctp */
   s1ap_eNB_itti_send_sctp_data_req(instance_p->instance, mme_desc_p->assoc_id,
                                    buffer, length, ue_desc_p->tx_stream);
-
   return 0;
 }
 
 //------------------------------------------------------------------------------
-int s1ap_eNB_handle_nas_downlink(const uint32_t               assoc_id,
-                                 const uint32_t               stream,
-                                 struct s1ap_message_s* message_p)
+int s1ap_eNB_handle_nas_downlink(uint32_t         assoc_id,
+                                 uint32_t         stream,
+                                 S1AP_S1AP_PDU_t *pdu)
 //------------------------------------------------------------------------------
 {
-  const S1ap_DownlinkNASTransportIEs_t *downlink_NAS_transport_p = NULL;
-
-  s1ap_eNB_mme_data_t   *mme_desc_p                        = NULL;
-  s1ap_eNB_ue_context_t *ue_desc_p                         = NULL;
-  s1ap_eNB_instance_t   *s1ap_eNB_instance                 = NULL;
-
-  DevAssert(message_p != NULL);
-
-  downlink_NAS_transport_p = &message_p->msg.s1ap_DownlinkNASTransportIEs;
+  s1ap_eNB_mme_data_t             *mme_desc_p        = NULL;
+  s1ap_eNB_ue_context_t           *ue_desc_p         = NULL;
+  s1ap_eNB_instance_t             *s1ap_eNB_instance = NULL;
+  S1AP_DownlinkNASTransport_t     *container;
+  S1AP_DownlinkNASTransport_IEs_t *ie;
+  S1AP_ENB_UE_S1AP_ID_t            enb_ue_s1ap_id;
+  S1AP_MME_UE_S1AP_ID_t            mme_ue_s1ap_id;
+  DevAssert(pdu != NULL);
 
   /* UE-related procedure -> stream != 0 */
   if (stream == 0) {
@@ -275,19 +431,26 @@ int s1ap_eNB_handle_nas_downlink(const uint32_t               assoc_id,
   }
 
   s1ap_eNB_instance = mme_desc_p->s1ap_eNB_instance;
+  /* Prepare the S1AP message to encode */
+  container = &pdu->choice.initiatingMessage.value.choice.DownlinkNASTransport;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_DownlinkNASTransport_IEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID, TRUE);
+  mme_ue_s1ap_id = ie->value.choice.MME_UE_S1AP_ID;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_DownlinkNASTransport_IEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID, TRUE);
+  enb_ue_s1ap_id = ie->value.choice.ENB_UE_S1AP_ID;
 
   if ((ue_desc_p = s1ap_eNB_get_ue_context(s1ap_eNB_instance,
-                   downlink_NAS_transport_p->eNB_UE_S1AP_ID)) == NULL) {
+                   ie->value.choice.ENB_UE_S1AP_ID)) == NULL) {
     MSC_LOG_RX_DISCARDED_MESSAGE(
       MSC_S1AP_ENB,
       MSC_S1AP_MME,
       (const char *)downlink_NAS_transport_p,
-      sizeof(S1ap_DownlinkNASTransportIEs_t),
+      sizeof(S1AP_DownlinkNASTransportIEs_t),
       MSC_AS_TIME_FMT" downlinkNASTransport  eNB_ue_s1ap_id %u mme_ue_s1ap_id %u",
       0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
-      downlink_NAS_transport_p->eNB_UE_S1AP_ID,
-      downlink_NAS_transport_p->mme_ue_s1ap_id);
-
+      enb_ue_s1ap_id
+      mme_ue_s1ap_id);
     /* TODO: fix this log - the original version is suspicious (twice downlink_NAS_transport_p->eNB_UE_S1AP_ID?) */
     /*S1AP_ERROR("[SCTP %d] Received NAS downlink message for non existing UE context eNB_UE_S1AP_ID: 0x%"PRIx32" %u\n",
                assoc_id,
@@ -295,12 +458,12 @@ int s1ap_eNB_handle_nas_downlink(const uint32_t               assoc_id,
                downlink_NAS_transport_p->eNB_UE_S1AP_ID);*/
     S1AP_ERROR("[SCTP %d] Received NAS downlink message for non existing UE context eNB_UE_S1AP_ID: 0x%lx\n",
                assoc_id,
-               downlink_NAS_transport_p->eNB_UE_S1AP_ID);
+               enb_ue_s1ap_id);
     return -1;
   }
 
   if (0 == ue_desc_p->rx_stream) {
-	ue_desc_p->rx_stream = stream;
+    ue_desc_p->rx_stream = stream;
   } else if (stream != ue_desc_p->rx_stream) {
     S1AP_ERROR("[SCTP %d] Received UE-related procedure on stream %u, expecting %u\n",
                assoc_id, stream, ue_desc_p->rx_stream);
@@ -311,13 +474,13 @@ int s1ap_eNB_handle_nas_downlink(const uint32_t               assoc_id,
    * UE s1ap id.
    */
   if (ue_desc_p->mme_ue_s1ap_id == 0) {
-    ue_desc_p->mme_ue_s1ap_id = downlink_NAS_transport_p->mme_ue_s1ap_id;
+    ue_desc_p->mme_ue_s1ap_id = mme_ue_s1ap_id;
   } else {
     /* We already have a mme ue s1ap id check the received is the same */
-    if (ue_desc_p->mme_ue_s1ap_id != downlink_NAS_transport_p->mme_ue_s1ap_id) {
+    if (ue_desc_p->mme_ue_s1ap_id != mme_ue_s1ap_id) {
       S1AP_ERROR("[SCTP %d] Mismatch in MME UE S1AP ID (0x%lx != 0x%"PRIx32"\n",
                  assoc_id,
-                 downlink_NAS_transport_p->mme_ue_s1ap_id,
+                 mme_ue_s1ap_id,
                  ue_desc_p->mme_ue_s1ap_id
                 );
       return -1;
@@ -328,22 +491,21 @@ int s1ap_eNB_handle_nas_downlink(const uint32_t               assoc_id,
     MSC_S1AP_ENB,
     MSC_S1AP_MME,
     (const char *)downlink_NAS_transport_p,
-    sizeof(S1ap_DownlinkNASTransportIEs_t),
+    sizeof(S1AP_DownlinkNASTransportIEs_t),
     MSC_AS_TIME_FMT" downlinkNASTransport  eNB_ue_s1ap_id %u mme_ue_s1ap_id %u",
     0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
-    downlink_NAS_transport_p->eNB_UE_S1AP_ID,
-    downlink_NAS_transport_p->mme_ue_s1ap_id);
-
+    enb_ue_s1ap_id,
+    mme_ue_s1ap_id);
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_DownlinkNASTransport_IEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_NAS_PDU, TRUE);
   /* Forward the NAS PDU to RRC */
   s1ap_eNB_itti_send_nas_downlink_ind(s1ap_eNB_instance->instance,
                                       ue_desc_p->ue_initial_id,
                                       ue_desc_p->eNB_ue_s1ap_id,
-                                      downlink_NAS_transport_p->nas_pdu.buf,
-                                      downlink_NAS_transport_p->nas_pdu.size);
-
+                                      ie->value.choice.NAS_PDU.buf,
+                                      ie->value.choice.NAS_PDU.size);
   // LG: Why set to 0 ??
   //ue_desc_p->ue_initial_id = 0;
-
   return 0;
 }
 
@@ -351,17 +513,14 @@ int s1ap_eNB_handle_nas_downlink(const uint32_t               assoc_id,
 int s1ap_eNB_nas_uplink(instance_t instance, s1ap_uplink_nas_t *s1ap_uplink_nas_p)
 //------------------------------------------------------------------------------
 {
-  struct s1ap_eNB_ue_context_s *ue_context_p;
-  s1ap_eNB_instance_t          *s1ap_eNB_instance_p;
-  S1ap_UplinkNASTransportIEs_t *uplink_NAS_transport_p;
-
-  s1ap_message  message;
-
+  struct s1ap_eNB_ue_context_s  *ue_context_p;
+  s1ap_eNB_instance_t           *s1ap_eNB_instance_p;
+  S1AP_S1AP_PDU_t                pdu;
+  S1AP_UplinkNASTransport_t     *out;
+  S1AP_UplinkNASTransport_IEs_t *ie;
   uint8_t  *buffer;
-  uint32_t length;
-
+  uint32_t  length;
   DevAssert(s1ap_uplink_nas_p != NULL);
-
   /* Retrieve the S1AP eNB instance associated with Mod_id */
   s1ap_eNB_instance_p = s1ap_eNB_get_instance(instance);
   DevAssert(s1ap_eNB_instance_p != NULL);
@@ -385,40 +544,93 @@ int s1ap_eNB_nas_uplink(instance_t instance, s1ap_uplink_nas_t *s1ap_uplink_nas_
   }
 
   /* Prepare the S1AP message to encode */
-  memset(&message, 0, sizeof(s1ap_message));
-
-  message.direction     = S1AP_PDU_PR_initiatingMessage;
-  message.procedureCode = S1ap_ProcedureCode_id_uplinkNASTransport;
-
-  uplink_NAS_transport_p = &message.msg.s1ap_UplinkNASTransportIEs;
-
-  uplink_NAS_transport_p->mme_ue_s1ap_id = ue_context_p->mme_ue_s1ap_id;
-  uplink_NAS_transport_p->eNB_UE_S1AP_ID = ue_context_p->eNB_ue_s1ap_id;
-
-  uplink_NAS_transport_p->nas_pdu.buf  = s1ap_uplink_nas_p->nas_pdu.buffer;
-  uplink_NAS_transport_p->nas_pdu.size = s1ap_uplink_nas_p->nas_pdu.length;
-
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = S1AP_S1AP_PDU_PR_initiatingMessage;
+  pdu.choice.initiatingMessage.procedureCode = S1AP_ProcedureCode_id_uplinkNASTransport;
+  pdu.choice.initiatingMessage.criticality = S1AP_Criticality_ignore;
+  pdu.choice.initiatingMessage.value.present = S1AP_InitiatingMessage__value_PR_UplinkNASTransport;
+  out = &pdu.choice.initiatingMessage.value.choice.UplinkNASTransport;
+  /* mandatory */
+  ie = (S1AP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(S1AP_UplinkNASTransport_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_UplinkNASTransport_IEs__value_PR_MME_UE_S1AP_ID;
+  ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(S1AP_UplinkNASTransport_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_UplinkNASTransport_IEs__value_PR_ENB_UE_S1AP_ID;
+  ie->value.choice.ENB_UE_S1AP_ID = ue_context_p->eNB_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(S1AP_UplinkNASTransport_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_NAS_PDU;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_UplinkNASTransport_IEs__value_PR_NAS_PDU;
+  ie->value.choice.NAS_PDU.buf = s1ap_uplink_nas_p->nas_pdu.buffer;
+  ie->value.choice.NAS_PDU.size = s1ap_uplink_nas_p->nas_pdu.length;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(S1AP_UplinkNASTransport_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_EUTRAN_CGI;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_UplinkNASTransport_IEs__value_PR_EUTRAN_CGI;
   MCC_MNC_TO_PLMNID(
     s1ap_eNB_instance_p->mcc,
     s1ap_eNB_instance_p->mnc,
     s1ap_eNB_instance_p->mnc_digit_length,
-    &uplink_NAS_transport_p->eutran_cgi.pLMNidentity);
-
-//#warning "TODO get cell id from RRC"
+    &ie->value.choice.EUTRAN_CGI.pLMNidentity);
+  //#warning "TODO get cell id from RRC"
   MACRO_ENB_ID_TO_CELL_IDENTITY(s1ap_eNB_instance_p->eNB_id,
-          0,
-          &uplink_NAS_transport_p->eutran_cgi.cell_ID);
-
-  /* MCC/MNC should be repeated in TAI and EUTRAN CGI */
+                                0,
+                                &ie->value.choice.EUTRAN_CGI.cell_ID);
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(S1AP_UplinkNASTransport_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_TAI;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_UplinkNASTransport_IEs__value_PR_TAI;
   MCC_MNC_TO_PLMNID(
     s1ap_eNB_instance_p->mcc,
     s1ap_eNB_instance_p->mnc,
     s1ap_eNB_instance_p->mnc_digit_length,
-    &uplink_NAS_transport_p->tai.pLMNidentity);
+    &ie->value.choice.TAI.pLMNidentity);
+  TAC_TO_ASN1(s1ap_eNB_instance_p->tac, &ie->value.choice.TAI.tAC);
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(S1AP_UplinkNASTransport_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_GW_TransportLayerAddress;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_UplinkNASTransport_IEs__value_PR_TransportLayerAddress;
+    // ie->value.choice.TransportLayerAddress = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-  TAC_TO_ASN1(s1ap_eNB_instance_p->tac, &uplink_NAS_transport_p->tai.tAC);
+  /* optional */
+  if (0) {
+    ie = (S1AP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(S1AP_UplinkNASTransport_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_SIPTO_L_GW_TransportLayerAddress;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_UplinkNASTransport_IEs__value_PR_TransportLayerAddress;
+    // ie->value.choice.TransportLayerAddress = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(S1AP_UplinkNASTransport_IEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_LHN_ID;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_UplinkNASTransport_IEs__value_PR_LHN_ID;
+    // ie->value.choice.LHN_ID =;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-  if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+  if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
     S1AP_ERROR("Failed to encode uplink NAS transport\n");
     /* Encode procedure has failed... */
     return -1;
@@ -433,34 +645,27 @@ int s1ap_eNB_nas_uplink(instance_t instance, s1ap_uplink_nas_t *s1ap_uplink_nas_
     0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
     uplink_NAS_transport_p->eNB_UE_S1AP_ID,
     uplink_NAS_transport_p->mme_ue_s1ap_id);
-
-
   /* UE associated signalling -> use the allocated stream */
   s1ap_eNB_itti_send_sctp_data_req(s1ap_eNB_instance_p->instance,
                                    ue_context_p->mme_ref->assoc_id, buffer,
                                    length, ue_context_p->tx_stream);
-
   return 0;
 }
 
 
 //------------------------------------------------------------------------------
-void s1ap_eNB_nas_non_delivery_ind(instance_t instance,
-                                   s1ap_nas_non_delivery_ind_t *s1ap_nas_non_delivery_ind)
+int s1ap_eNB_nas_non_delivery_ind(instance_t instance,
+                                  s1ap_nas_non_delivery_ind_t *s1ap_nas_non_delivery_ind)
 //------------------------------------------------------------------------------
 {
-  struct s1ap_eNB_ue_context_s *ue_context_p;
-  s1ap_eNB_instance_t          *s1ap_eNB_instance_p;
-
-  S1ap_NASNonDeliveryIndication_IEs_t *nas_non_delivery_p;
-
-  s1ap_message  message;
-
+  struct s1ap_eNB_ue_context_s        *ue_context_p;
+  s1ap_eNB_instance_t                 *s1ap_eNB_instance_p;
+  S1AP_S1AP_PDU_t                      pdu;
+  S1AP_NASNonDeliveryIndication_t     *out;
+  S1AP_NASNonDeliveryIndication_IEs_t *ie;
   uint8_t  *buffer;
-  uint32_t length;
-
+  uint32_t  length;
   DevAssert(s1ap_nas_non_delivery_ind != NULL);
-
   /* Retrieve the S1AP eNB instance associated with Mod_id */
   s1ap_eNB_instance_p = s1ap_eNB_get_instance(instance);
   DevAssert(s1ap_eNB_instance_p != NULL);
@@ -473,35 +678,57 @@ void s1ap_eNB_nas_non_delivery_ind(instance_t instance,
       MSC_S1AP_ENB,
       MSC_AS_TIME_FMT" Sent of NAS_NON_DELIVERY_IND to MME failed, no context for eNB_ue_s1ap_id %06x",
       s1ap_nas_non_delivery_ind->eNB_ue_s1ap_id);
-    return;
+    return -1;
   }
 
   /* Prepare the S1AP message to encode */
-  memset(&message, 0, sizeof(s1ap_message));
-
-  message.direction     = S1AP_PDU_PR_initiatingMessage;
-  message.procedureCode = S1ap_ProcedureCode_id_NASNonDeliveryIndication;
-
-  nas_non_delivery_p = &message.msg.s1ap_NASNonDeliveryIndication_IEs;
-  nas_non_delivery_p->eNB_UE_S1AP_ID = ue_context_p->eNB_ue_s1ap_id;
-  nas_non_delivery_p->mme_ue_s1ap_id = ue_context_p->mme_ue_s1ap_id;
-  nas_non_delivery_p->nas_pdu.buf    = s1ap_nas_non_delivery_ind->nas_pdu.buffer;
-  nas_non_delivery_p->nas_pdu.size   = s1ap_nas_non_delivery_ind->nas_pdu.length;
-
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = S1AP_S1AP_PDU_PR_initiatingMessage;
+  pdu.choice.initiatingMessage.procedureCode = S1AP_ProcedureCode_id_NASNonDeliveryIndication;
+  pdu.choice.initiatingMessage.criticality = S1AP_Criticality_ignore;
+  pdu.choice.initiatingMessage.value.present = S1AP_InitiatingMessage__value_PR_NASNonDeliveryIndication;
+  out = &pdu.choice.initiatingMessage.value.choice.NASNonDeliveryIndication;
+  /* mandatory */
+  ie = (S1AP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(S1AP_NASNonDeliveryIndication_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_NASNonDeliveryIndication_IEs__value_PR_MME_UE_S1AP_ID;
+  ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(S1AP_NASNonDeliveryIndication_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_NASNonDeliveryIndication_IEs__value_PR_ENB_UE_S1AP_ID;
+  ie->value.choice.ENB_UE_S1AP_ID = ue_context_p->eNB_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(S1AP_NASNonDeliveryIndication_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_NASNonDeliveryIndication_IEs__value_PR_NAS_PDU;
+  ie->value.choice.NAS_PDU.buf = s1ap_nas_non_delivery_ind->nas_pdu.buffer;
+  ie->value.choice.NAS_PDU.size = s1ap_nas_non_delivery_ind->nas_pdu.length;
+  /* mandatory */
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  ie = (S1AP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(S1AP_NASNonDeliveryIndication_IEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_ignore;
   /* Send a dummy cause */
-  nas_non_delivery_p->cause.present = S1ap_Cause_PR_radioNetwork;
-  nas_non_delivery_p->cause.choice.radioNetwork = S1ap_CauseRadioNetwork_radio_connection_with_ue_lost;
+  ie->value.present = S1AP_NASNonDeliveryIndication_IEs__value_PR_Cause;
+  ie->value.choice.Cause.present = S1AP_Cause_PR_radioNetwork;
+  ie->value.choice.Cause.choice.radioNetwork = S1AP_CauseRadioNetwork_radio_connection_with_ue_lost;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
 
-  if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+  if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
     S1AP_ERROR("Failed to encode NAS NON delivery indication\n");
     /* Encode procedure has failed... */
     MSC_LOG_EVENT(
       MSC_S1AP_ENB,
       MSC_AS_TIME_FMT" Sent of NAS_NON_DELIVERY_IND to MME failed (encoding)");
-    return;
+    return -1;
   }
 
-
   MSC_LOG_TX_MESSAGE(
     MSC_S1AP_ENB,
     MSC_S1AP_MME,
@@ -511,12 +738,11 @@ void s1ap_eNB_nas_non_delivery_ind(instance_t instance,
     0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
     nas_non_delivery_p->eNB_UE_S1AP_ID,
     nas_non_delivery_p->mme_ue_s1ap_id);
-
-
   /* UE associated signalling -> use the allocated stream */
   s1ap_eNB_itti_send_sctp_data_req(s1ap_eNB_instance_p->instance,
                                    ue_context_p->mme_ref->assoc_id, buffer,
                                    length, ue_context_p->tx_stream);
+  return 0;
 }
 
 //------------------------------------------------------------------------------
@@ -524,21 +750,16 @@ int s1ap_eNB_initial_ctxt_resp(
   instance_t instance, s1ap_initial_context_setup_resp_t *initial_ctxt_resp_p)
 //------------------------------------------------------------------------------
 {
-  s1ap_eNB_instance_t          *s1ap_eNB_instance_p = NULL;
-  struct s1ap_eNB_ue_context_s *ue_context_p        = NULL;
-
-  S1ap_InitialContextSetupResponseIEs_t *initial_ies_p  = NULL;
-
-  s1ap_message  message;
-
-  uint8_t  *buffer  = NULL;
+  s1ap_eNB_instance_t                   *s1ap_eNB_instance_p = NULL;
+  struct s1ap_eNB_ue_context_s          *ue_context_p        = NULL;
+  S1AP_S1AP_PDU_t                        pdu;
+  S1AP_InitialContextSetupResponse_t    *out;
+  S1AP_InitialContextSetupResponseIEs_t *ie;
+  uint8_t  *buffer = NULL;
   uint32_t length;
-  int      ret = -1;
   int      i;
-
   /* Retrieve the S1AP eNB instance associated with Mod_id */
   s1ap_eNB_instance_p = s1ap_eNB_get_instance(instance);
-
   DevAssert(initial_ctxt_resp_p != NULL);
   DevAssert(s1ap_eNB_instance_p != NULL);
 
@@ -562,40 +783,118 @@ int s1ap_eNB_initial_ctxt_resp(
   }
 
   /* Prepare the S1AP message to encode */
-  memset(&message, 0, sizeof(s1ap_message));
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = S1AP_S1AP_PDU_PR_successfulOutcome;
+  pdu.choice.successfulOutcome.procedureCode = S1AP_ProcedureCode_id_InitialContextSetup;
+  pdu.choice.successfulOutcome.criticality = S1AP_Criticality_reject;
+  pdu.choice.successfulOutcome.value.present = S1AP_SuccessfulOutcome__value_PR_InitialContextSetupResponse;
+  out = &pdu.choice.successfulOutcome.value.choice.InitialContextSetupResponse;
+  /* mandatory */
+  ie = (S1AP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(S1AP_InitialContextSetupResponseIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_InitialContextSetupResponseIEs__value_PR_MME_UE_S1AP_ID;
+  ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(S1AP_InitialContextSetupResponseIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_InitialContextSetupResponseIEs__value_PR_ENB_UE_S1AP_ID;
+  ie->value.choice.ENB_UE_S1AP_ID = initial_ctxt_resp_p->eNB_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(S1AP_InitialContextSetupResponseIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_InitialContextSetupResponseIEs__value_PR_E_RABSetupListCtxtSURes;
 
-  message.direction     = S1AP_PDU_PR_successfulOutcome;
-  message.procedureCode = S1ap_ProcedureCode_id_InitialContextSetup;
+  for (i = 0; i < initial_ctxt_resp_p->nb_of_e_rabs; i++) {
+    S1AP_E_RABSetupItemCtxtSUResIEs_t *item;
+    /* mandatory */
+    item = calloc(1, sizeof(S1AP_E_RABSetupItemCtxtSUResIEs_t));
+    item->id = S1AP_ProtocolIE_ID_id_E_RABSetupItemBearerSURes;
+    item->criticality = S1AP_Criticality_ignore;
+    item->value.present = S1AP_E_RABSetupItemBearerSUResIEs__value_PR_E_RABSetupItemBearerSURes;
+    item->value.choice.E_RABSetupItemCtxtSURes.e_RAB_ID = initial_ctxt_resp_p->e_rabs[i].e_rab_id;
+    GTP_TEID_TO_ASN1(initial_ctxt_resp_p->e_rabs[i].gtp_teid, &item->value.choice.E_RABSetupItemCtxtSURes.gTP_TEID);
+    item->value.choice.E_RABSetupItemCtxtSURes.transportLayerAddress.buf = initial_ctxt_resp_p->e_rabs[i].eNB_addr.buffer;
+    item->value.choice.E_RABSetupItemCtxtSURes.transportLayerAddress.size = initial_ctxt_resp_p->e_rabs[i].eNB_addr.length;
+    item->value.choice.E_RABSetupItemCtxtSURes.transportLayerAddress.bits_unused = 0;
+    S1AP_DEBUG("initial_ctxt_resp_p: e_rab ID %ld, enb_addr %d.%d.%d.%d, SIZE %ld \n",
+               item->value.choice.E_RABSetupItemCtxtSURes.e_RAB_ID,
+               item->value.choice.E_RABSetupItemCtxtSURes.transportLayerAddress.buf[0],
+               item->value.choice.E_RABSetupItemCtxtSURes.transportLayerAddress.buf[1],
+               item->value.choice.E_RABSetupItemCtxtSURes.transportLayerAddress.buf[2],
+               item->value.choice.E_RABSetupItemCtxtSURes.transportLayerAddress.buf[3],
+               item->value.choice.E_RABSetupItemCtxtSURes.transportLayerAddress.size);
+    ASN_SEQUENCE_ADD(&ie->value.choice.E_RABSetupListCtxtSURes.list, item);
+  }
 
-  initial_ies_p = &message.msg.s1ap_InitialContextSetupResponseIEs;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  /* optional */
+  if (initial_ctxt_resp_p->nb_of_e_rabs_failed) {
+    ie = (S1AP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(S1AP_InitialContextSetupResponseIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_E_RABFailedToSetupListCtxtSURes;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_InitialContextSetupResponseIEs__value_PR_E_RABList;
+
+    for (i = 0; i < initial_ctxt_resp_p->nb_of_e_rabs_failed; i++) {
+      S1AP_E_RABItemIEs_t *item;
+      /* mandatory */
+      item = calloc(1, sizeof(S1AP_E_RABItemIEs_t));
+      item->id = S1AP_ProtocolIE_ID_id_E_RABItem;
+      item->criticality = S1AP_Criticality_ignore;
+      item->value.present = S1AP_E_RABItemIEs__value_PR_E_RABItem;
+      item->value.choice.E_RABItem.e_RAB_ID = initial_ctxt_resp_p->e_rabs_failed[i].e_rab_id;
+      item->value.choice.E_RABItem.cause.present = initial_ctxt_resp_p->e_rabs_failed[i].cause;
+
+      switch(item->value.choice.E_RABItem.cause.present)
+      {
+        case S1AP_Cause_PR_radioNetwork:
+          item->value.choice.E_RABItem.cause.choice.radioNetwork = initial_ctxt_resp_p->e_rabs_failed[i].cause_value;
+          break;
 
-  initial_ies_p->eNB_UE_S1AP_ID = initial_ctxt_resp_p->eNB_ue_s1ap_id;
-  initial_ies_p->mme_ue_s1ap_id = ue_context_p->mme_ue_s1ap_id;
+        case S1AP_Cause_PR_transport:
+          item->value.choice.E_RABItem.cause.choice.transport = initial_ctxt_resp_p->e_rabs_failed[i].cause_value;
+          break;
 
-  for (i = 0; i < initial_ctxt_resp_p->nb_of_e_rabs; i++) {
-    S1ap_E_RABSetupItemCtxtSURes_t *new_item;
-
-    new_item = calloc(1, sizeof(S1ap_E_RABSetupItemCtxtSURes_t));
-
-    new_item->e_RAB_ID = initial_ctxt_resp_p->e_rabs[i].e_rab_id;
-    GTP_TEID_TO_ASN1(initial_ctxt_resp_p->e_rabs[i].gtp_teid, &new_item->gTP_TEID);
-    new_item->transportLayerAddress.buf = initial_ctxt_resp_p->e_rabs[i].eNB_addr.buffer;
-    new_item->transportLayerAddress.size = initial_ctxt_resp_p->e_rabs[i].eNB_addr.length;
-    new_item->transportLayerAddress.bits_unused = 0;
-
-    S1AP_DEBUG("initial_ctxt_resp_p: e_rab ID %ld, enb_addr %d.%d.%d.%d, SIZE %d \n", 
-	      new_item->e_RAB_ID,
-	      new_item->transportLayerAddress.buf[0],
-	      new_item->transportLayerAddress.buf[1],
-	      new_item->transportLayerAddress.buf[2],
-	      new_item->transportLayerAddress.buf[3],
-	      new_item->transportLayerAddress.size);
-
-    ASN_SEQUENCE_ADD(&initial_ies_p->e_RABSetupListCtxtSURes.s1ap_E_RABSetupItemCtxtSURes,
-                     new_item);
+        case S1AP_Cause_PR_nas:
+          item->value.choice.E_RABItem.cause.choice.nas = initial_ctxt_resp_p->e_rabs_failed[i].cause_value;
+          break;
+
+        case S1AP_Cause_PR_protocol:
+          item->value.choice.E_RABItem.cause.choice.protocol = initial_ctxt_resp_p->e_rabs_failed[i].cause_value;
+          break;
+
+        case S1AP_Cause_PR_misc:
+          item->value.choice.E_RABItem.cause.choice.misc = initial_ctxt_resp_p->e_rabs_failed[i].cause_value;
+          break;
+
+        case S1AP_Cause_PR_NOTHING:
+        default:
+          break;
+      }
+
+      S1AP_DEBUG("initial context setup response: failed e_rab ID %ld\n", item->value.choice.E_RABItem.e_RAB_ID);
+      ASN_SEQUENCE_ADD(&ie->value.choice.E_RABList.list, item);
+    }
+
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(S1AP_InitialContextSetupResponseIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_CriticalityDiagnostics;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_InitialContextSetupResponseIEs__value_PR_CriticalityDiagnostics;
+    // ie->value.choice.CriticalityDiagnostics =;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
   }
 
-  if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+  if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
     S1AP_ERROR("Failed to encode uplink NAS transport\n");
     /* Encode procedure has failed... */
     return -1;
@@ -610,13 +909,11 @@ int s1ap_eNB_initial_ctxt_resp(
     0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
     initial_ies_p->eNB_UE_S1AP_ID,
     initial_ies_p->mme_ue_s1ap_id);
-
   /* UE associated signalling -> use the allocated stream */
   s1ap_eNB_itti_send_sctp_data_req(s1ap_eNB_instance_p->instance,
                                    ue_context_p->mme_ref->assoc_id, buffer,
                                    length, ue_context_p->tx_stream);
-
-  return ret;
+  return 0;
 }
 
 //------------------------------------------------------------------------------
@@ -626,18 +923,13 @@ int s1ap_eNB_ue_capabilities(instance_t instance,
 {
   s1ap_eNB_instance_t          *s1ap_eNB_instance_p;
   struct s1ap_eNB_ue_context_s *ue_context_p;
-
-  S1ap_UECapabilityInfoIndicationIEs_t *ue_cap_info_ind_ies_p;
-
-  s1ap_message  message;
-
+  S1AP_S1AP_PDU_t                       pdu;
+  S1AP_UECapabilityInfoIndication_t    *out;
+  S1AP_UECapabilityInfoIndicationIEs_t *ie;
   uint8_t  *buffer;
   uint32_t length;
-  int      ret = -1;
-
   /* Retrieve the S1AP eNB instance associated with Mod_id */
   s1ap_eNB_instance_p = s1ap_eNB_get_instance(instance);
-
   DevAssert(ue_cap_info_ind_p != NULL);
   DevAssert(s1ap_eNB_instance_p != NULL);
 
@@ -661,27 +953,51 @@ int s1ap_eNB_ue_capabilities(instance_t instance,
   }
 
   /* Prepare the S1AP message to encode */
-  memset(&message, 0, sizeof(s1ap_message));
-
-  message.direction     = S1AP_PDU_PR_initiatingMessage;
-  message.procedureCode = S1ap_ProcedureCode_id_UECapabilityInfoIndication;
-
-  ue_cap_info_ind_ies_p = &message.msg.s1ap_UECapabilityInfoIndicationIEs;
-
-  ue_cap_info_ind_ies_p->ueRadioCapability.buf = ue_cap_info_ind_p->ue_radio_cap.buffer;
-  ue_cap_info_ind_ies_p->ueRadioCapability.size = ue_cap_info_ind_p->ue_radio_cap.length;
-
-  ue_cap_info_ind_ies_p->eNB_UE_S1AP_ID = ue_cap_info_ind_p->eNB_ue_s1ap_id;
-  ue_cap_info_ind_ies_p->mme_ue_s1ap_id = ue_context_p->mme_ue_s1ap_id;
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = S1AP_S1AP_PDU_PR_initiatingMessage;
+  pdu.choice.initiatingMessage.procedureCode = S1AP_ProcedureCode_id_UECapabilityInfoIndication;
+  pdu.choice.initiatingMessage.criticality = S1AP_Criticality_ignore;
+  pdu.choice.initiatingMessage.value.present = S1AP_InitiatingMessage__value_PR_UECapabilityInfoIndication;
+  out = &pdu.choice.initiatingMessage.value.choice.UECapabilityInfoIndication;
+  /* mandatory */
+  ie = (S1AP_UECapabilityInfoIndicationIEs_t *)calloc(1, sizeof(S1AP_UECapabilityInfoIndicationIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_UECapabilityInfoIndicationIEs__value_PR_MME_UE_S1AP_ID;
+  ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_UECapabilityInfoIndicationIEs_t *)calloc(1, sizeof(S1AP_UECapabilityInfoIndicationIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_UECapabilityInfoIndicationIEs__value_PR_ENB_UE_S1AP_ID;
+  ie->value.choice.ENB_UE_S1AP_ID = ue_cap_info_ind_p->eNB_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_UECapabilityInfoIndicationIEs_t *)calloc(1, sizeof(S1AP_UECapabilityInfoIndicationIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_UERadioCapability;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_UECapabilityInfoIndicationIEs__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 */
+  if (0) {
+    ie = (S1AP_UECapabilityInfoIndicationIEs_t *)calloc(1, sizeof(S1AP_UECapabilityInfoIndicationIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_UERadioCapabilityForPaging;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_UECapabilityInfoIndicationIEs__value_PR_UERadioCapabilityForPaging;
+    // ie->value.choice.UERadioCapabilityForPaging = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-  if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+  if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
     /* Encode procedure has failed... */
     S1AP_ERROR("Failed to encode UE capabilities indication\n");
     return -1;
   }
 
-  free(ue_cap_info_ind_p->ue_radio_cap.buffer);
-
   MSC_LOG_TX_MESSAGE(
     MSC_S1AP_ENB,
     MSC_S1AP_MME,
@@ -691,40 +1007,33 @@ int s1ap_eNB_ue_capabilities(instance_t instance,
     0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
     ue_cap_info_ind_ies_p->eNB_UE_S1AP_ID,
     ue_cap_info_ind_ies_p->mme_ue_s1ap_id);
-
   /* UE associated signalling -> use the allocated stream */
   s1ap_eNB_itti_send_sctp_data_req(s1ap_eNB_instance_p->instance,
                                    ue_context_p->mme_ref->assoc_id, buffer,
                                    length, ue_context_p->tx_stream);
-
-  return ret;
+  return 0;
 }
 
 //------------------------------------------------------------------------------
-int s1ap_eNB_e_rab_setup_resp(instance_t instance, 
-			      s1ap_e_rab_setup_resp_t *e_rab_setup_resp_p)
+int s1ap_eNB_e_rab_setup_resp(instance_t instance,
+                              s1ap_e_rab_setup_resp_t *e_rab_setup_resp_p)
 //------------------------------------------------------------------------------
 {
   s1ap_eNB_instance_t          *s1ap_eNB_instance_p = NULL;
   struct s1ap_eNB_ue_context_s *ue_context_p        = NULL;
-
-  S1ap_E_RABSetupResponseIEs_t  *initial_ies_p  = NULL;
- 
-  s1ap_message  message;
-
+  S1AP_S1AP_PDU_t               pdu;
+  S1AP_E_RABSetupResponse_t    *out;
+  S1AP_E_RABSetupResponseIEs_t *ie;
   uint8_t  *buffer  = NULL;
   uint32_t length;
-  int      ret = -1;
   int      i;
-
   /* Retrieve the S1AP eNB instance associated with Mod_id */
   s1ap_eNB_instance_p = s1ap_eNB_get_instance(instance);
-
   DevAssert(e_rab_setup_resp_p != NULL);
   DevAssert(s1ap_eNB_instance_p != NULL);
 
   if ((ue_context_p = s1ap_eNB_get_ue_context(s1ap_eNB_instance_p,
-					      e_rab_setup_resp_p->eNB_ue_s1ap_id)) == NULL) {
+                      e_rab_setup_resp_p->eNB_ue_s1ap_id)) == NULL) {
     /* The context for this eNB ue s1ap id doesn't exist in the map of eNB UEs */
     S1AP_WARN("Failed to find ue context associated with eNB ue s1ap id: 0x%06x\n",
               e_rab_setup_resp_p->eNB_ue_s1ap_id);
@@ -741,85 +1050,136 @@ int s1ap_eNB_e_rab_setup_resp(instance_t instance,
               e_rab_setup_resp_p->eNB_ue_s1ap_id, ue_context_p->ue_state);
     return -1;
   }
- 
+
   /* Prepare the S1AP message to encode */
-  memset(&message, 0, sizeof(s1ap_message));
-
-  message.direction     = S1AP_PDU_PR_successfulOutcome;
-  message.procedureCode = S1ap_ProcedureCode_id_E_RABSetup;
-  message.criticality   = S1ap_Criticality_reject;
-
-  initial_ies_p = &message.msg.s1ap_E_RABSetupResponseIEs;
-  
-  initial_ies_p->eNB_UE_S1AP_ID = e_rab_setup_resp_p->eNB_ue_s1ap_id;
-  initial_ies_p->mme_ue_s1ap_id = ue_context_p->mme_ue_s1ap_id;
-  
-  if ( e_rab_setup_resp_p->nb_of_e_rabs >= 1 )
-    initial_ies_p->presenceMask |= S1AP_E_RABSETUPRESPONSEIES_E_RABSETUPLISTBEARERSURES_PRESENT; 
-  
-  for (i = 0; i < e_rab_setup_resp_p->nb_of_e_rabs; i++) { 
-    S1ap_E_RABSetupItemBearerSURes_t *new_item;
-
-    new_item = calloc(1, sizeof(S1ap_E_RABSetupItemBearerSURes_t));
-
-    new_item->e_RAB_ID = e_rab_setup_resp_p->e_rabs[i].e_rab_id;
-    GTP_TEID_TO_ASN1(e_rab_setup_resp_p->e_rabs[i].gtp_teid, &new_item->gTP_TEID);
-        
-    /*
-    new_item->transportLayerAddress.buf = MALLOC(e_rab_setup_resp_p->e_rabs[i].eNB_addr.length);  
-    memcpy (new_item->transportLayerAddress.buf, 
-	    e_rab_setup_resp_p->e_rabs[i].eNB_addr.buffer,
-	    e_rab_setup_resp_p->e_rabs[i].eNB_addr.length);
-    
-    */
-    /*
-      new_item->transportLayerAddress.buf[0] = e_rab_setup_resp_p->e_rabs[i].eNB_addr.buffer[0];
-    new_item->transportLayerAddress.buf[1] = e_rab_setup_resp_p->e_rabs[i].eNB_addr.buffer[1];
-    new_item->transportLayerAddress.buf[2] = e_rab_setup_resp_p->e_rabs[i].eNB_addr.buffer[2];
-    new_item->transportLayerAddress.buf[3] = e_rab_setup_resp_p->e_rabs[i].eNB_addr.buffer[3];
-    */
-    new_item->transportLayerAddress.buf = e_rab_setup_resp_p->e_rabs[i].eNB_addr.buffer; 
-    new_item->transportLayerAddress.size = e_rab_setup_resp_p->e_rabs[i].eNB_addr.length;
-    new_item->transportLayerAddress.bits_unused = 0;
-    
-    S1AP_DEBUG("e_rab_setup_resp: e_rab ID %ld, teid %u, enb_addr %d.%d.%d.%d, SIZE %d\n", 
-	       new_item->e_RAB_ID,
-	       e_rab_setup_resp_p->e_rabs[i].gtp_teid,
-	       new_item->transportLayerAddress.buf[0],
-	       new_item->transportLayerAddress.buf[1],
-	       new_item->transportLayerAddress.buf[2],
-	       new_item->transportLayerAddress.buf[3],
-	       new_item->transportLayerAddress.size);
-    
-    S1ap_IE_t *ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABSetupItemBearerSURes,
-				S1ap_Criticality_ignore,
-				&asn_DEF_S1ap_E_RABSetupItemBearerSURes,
-				new_item);
-    /*
-    S1ap_IE_t *ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABSetupListBearerSURes,
-				S1ap_Criticality_ignore,
-				&asn_DEF_S1ap_E_RABSetupListBearerSURes,
-				new_item);
-    */
-    ASN_SEQUENCE_ADD(&initial_ies_p->e_RABSetupListBearerSURes.s1ap_E_RABSetupItemBearerSURes,
-                     ie);
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = S1AP_S1AP_PDU_PR_successfulOutcome;
+  pdu.choice.successfulOutcome.procedureCode = S1AP_ProcedureCode_id_E_RABModify;
+  pdu.choice.successfulOutcome.criticality = S1AP_Criticality_reject;
+  pdu.choice.successfulOutcome.value.present = S1AP_SuccessfulOutcome__value_PR_E_RABSetupResponse;
+  out = &pdu.choice.successfulOutcome.value.choice.E_RABSetupResponse;
+  /* mandatory */
+  ie = (S1AP_E_RABSetupResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABSetupResponseIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_E_RABSetupResponseIEs__value_PR_MME_UE_S1AP_ID;
+  ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_E_RABSetupResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABSetupResponseIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_E_RABSetupResponseIEs__value_PR_ENB_UE_S1AP_ID;
+  ie->value.choice.ENB_UE_S1AP_ID = e_rab_setup_resp_p->eNB_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  /* optional */
+  if (e_rab_setup_resp_p->nb_of_e_rabs > 0) {
+    ie = (S1AP_E_RABSetupResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABSetupResponseIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_E_RABSetupListBearerSURes;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_E_RABSetupResponseIEs__value_PR_E_RABSetupListBearerSURes;
+
+    for (i = 0; i < e_rab_setup_resp_p->nb_of_e_rabs; i++) {
+      S1AP_E_RABSetupItemBearerSUResIEs_t *item;
+      /* mandatory */
+      item = calloc(1, sizeof(S1AP_E_RABSetupItemBearerSUResIEs_t));
+      item->id = S1AP_ProtocolIE_ID_id_E_RABSetupItemBearerSURes;
+      item->criticality = S1AP_Criticality_ignore;
+      item->value.present = S1AP_E_RABSetupItemBearerSUResIEs__value_PR_E_RABSetupItemBearerSURes;
+      item->value.choice.E_RABSetupItemBearerSURes.e_RAB_ID = e_rab_setup_resp_p->e_rabs[i].e_rab_id;
+      GTP_TEID_TO_ASN1(e_rab_setup_resp_p->e_rabs[i].gtp_teid, &item->value.choice.E_RABSetupItemBearerSURes.gTP_TEID);
+      item->value.choice.E_RABSetupItemBearerSURes.transportLayerAddress.buf = e_rab_setup_resp_p->e_rabs[i].eNB_addr.buffer;
+      item->value.choice.E_RABSetupItemBearerSURes.transportLayerAddress.size = e_rab_setup_resp_p->e_rabs[i].eNB_addr.length;
+      item->value.choice.E_RABSetupItemBearerSURes.transportLayerAddress.bits_unused = 0;
+      S1AP_DEBUG("e_rab_setup_resp: e_rab ID %ld, teid %u, enb_addr %d.%d.%d.%d, SIZE %ld\n",
+                 item->value.choice.E_RABSetupItemBearerSURes.e_RAB_ID,
+                 e_rab_setup_resp_p->e_rabs[i].gtp_teid,
+                 item->value.choice.E_RABSetupItemBearerSURes.transportLayerAddress.buf[0],
+                 item->value.choice.E_RABSetupItemBearerSURes.transportLayerAddress.buf[1],
+                 item->value.choice.E_RABSetupItemBearerSURes.transportLayerAddress.buf[2],
+                 item->value.choice.E_RABSetupItemBearerSURes.transportLayerAddress.buf[3],
+                 item->value.choice.E_RABSetupItemBearerSURes.transportLayerAddress.size);
+      ASN_SEQUENCE_ADD(&ie->value.choice.E_RABSetupListBearerSURes.list, item);
+    }
+
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (e_rab_setup_resp_p->nb_of_e_rabs_failed > 0) {
+    ie = (S1AP_E_RABSetupResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABSetupResponseIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_E_RABFailedToSetupListBearerSURes;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_E_RABSetupResponseIEs__value_PR_E_RABList;
+
+    for (i = 0; i < e_rab_setup_resp_p->nb_of_e_rabs_failed; i++) {
+      S1AP_E_RABItemIEs_t *item;
+      item = calloc(1, sizeof(S1AP_E_RABItemIEs_t));
+      item->id = S1AP_ProtocolIE_ID_id_E_RABItem;
+      item->criticality = S1AP_Criticality_ignore;
+      item->value.present = S1AP_E_RABItemIEs__value_PR_E_RABItem;
+      item->value.choice.E_RABItem.e_RAB_ID = e_rab_setup_resp_p->e_rabs_failed[i].e_rab_id;
+      item->value.choice.E_RABItem.cause.present = e_rab_setup_resp_p->e_rabs_failed[i].cause;
+
+      switch(item->value.choice.E_RABItem.cause.present)
+      {
+        case S1AP_Cause_PR_radioNetwork:
+          item->value.choice.E_RABItem.cause.choice.radioNetwork = e_rab_setup_resp_p->e_rabs_failed[i].cause_value;
+          break;
+
+        case S1AP_Cause_PR_transport:
+          item->value.choice.E_RABItem.cause.choice.transport = e_rab_setup_resp_p->e_rabs_failed[i].cause_value;
+          break;
+
+        case S1AP_Cause_PR_nas:
+          item->value.choice.E_RABItem.cause.choice.nas = e_rab_setup_resp_p->e_rabs_failed[i].cause_value;
+          break;
+
+        case S1AP_Cause_PR_protocol:
+          item->value.choice.E_RABItem.cause.choice.protocol = e_rab_setup_resp_p->e_rabs_failed[i].cause_value;
+          break;
+
+        case S1AP_Cause_PR_misc:
+          item->value.choice.E_RABItem.cause.choice.misc = e_rab_setup_resp_p->e_rabs_failed[i].cause_value;
+          break;
+
+        case S1AP_Cause_PR_NOTHING:
+        default:
+          break;
+      }
+
+      S1AP_DEBUG("e_rab_modify_resp: failed e_rab ID %ld\n", item->value.choice.E_RABItem.e_RAB_ID);
+      ASN_SEQUENCE_ADD(&ie->value.choice.E_RABList.list, item);
+    }
+
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (0) {
+    ie = (S1AP_E_RABSetupResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABSetupResponseIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_CriticalityDiagnostics;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_E_RABSetupResponseIEs__value_PR_CriticalityDiagnostics;
+    // ie->value.choice.CriticalityDiagnostics = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
   }
- 
-  /* S1ap_E_RABSetupListBearerSURes_t  e_RABSetupListBearerSURes;
-  memset(&e_RABSetupListBearerSURes, 0, sizeof(S1ap_E_RABSetupListBearerSURes_t));
+
+  /* S1AP_E_RABSetupListBearerSURes_t  e_RABSetupListBearerSURes;
+  memset(&e_RABSetupListBearerSURes, 0, sizeof(S1AP_E_RABSetupListBearerSURes_t));
   if (s1ap_encode_s1ap_e_rabsetuplistbearersures(&e_RABSetupListBearerSURes, &initial_ies_p->e_RABSetupListBearerSURes.s1ap_E_RABSetupItemBearerSURes) < 0 )
     return -1;
- ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupListBearerSURes, &e_RABSetupListBearerSURes);
+  ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1AP_E_RABSetupListBearerSURes, &e_RABSetupListBearerSURes);
   */
   fprintf(stderr, "start encode\n");
-  if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+
+  if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
     S1AP_ERROR("Failed to encode uplink transport\n");
     /* Encode procedure has failed... */
     return -1;
   }
 
- 
-  
   MSC_LOG_TX_MESSAGE(
     MSC_S1AP_ENB,
     MSC_S1AP_MME,
@@ -829,40 +1189,33 @@ int s1ap_eNB_e_rab_setup_resp(instance_t instance,
     0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
     initial_ies_p->eNB_UE_S1AP_ID,
     initial_ies_p->mme_ue_s1ap_id);
-
   /* UE associated signalling -> use the allocated stream */
   s1ap_eNB_itti_send_sctp_data_req(s1ap_eNB_instance_p->instance,
                                    ue_context_p->mme_ref->assoc_id, buffer,
                                    length, ue_context_p->tx_stream);
-
-  return ret;
+  return 0;
 }
 
 //------------------------------------------------------------------------------
 int s1ap_eNB_e_rab_modify_resp(instance_t instance,
-            s1ap_e_rab_modify_resp_t *e_rab_modify_resp_p)
+                               s1ap_e_rab_modify_resp_t *e_rab_modify_resp_p)
 //------------------------------------------------------------------------------
 {
-  s1ap_eNB_instance_t          *s1ap_eNB_instance_p = NULL;
-  struct s1ap_eNB_ue_context_s *ue_context_p        = NULL;
-
-  S1ap_E_RABModifyResponseIEs_t  *initial_ies_p  = NULL;
-
-  s1ap_message  message;
-
+  s1ap_eNB_instance_t           *s1ap_eNB_instance_p = NULL;
+  struct s1ap_eNB_ue_context_s  *ue_context_p        = NULL;
+  S1AP_S1AP_PDU_t                pdu;
+  S1AP_E_RABModifyResponse_t    *out;
+  S1AP_E_RABModifyResponseIEs_t *ie;
   uint8_t  *buffer  = NULL;
   uint32_t length;
-  int      ret = -1;
   int      i;
-
   /* Retrieve the S1AP eNB instance associated with Mod_id */
   s1ap_eNB_instance_p = s1ap_eNB_get_instance(instance);
-
   DevAssert(e_rab_modify_resp_p != NULL);
   DevAssert(s1ap_eNB_instance_p != NULL);
 
   if ((ue_context_p = s1ap_eNB_get_ue_context(s1ap_eNB_instance_p,
-                e_rab_modify_resp_p->eNB_ue_s1ap_id)) == NULL) {
+                      e_rab_modify_resp_p->eNB_ue_s1ap_id)) == NULL) {
     /* The context for this eNB ue s1ap id doesn't exist in the map of eNB UEs */
     S1AP_WARN("Failed to find ue context associated with eNB ue s1ap id: 0x%06x\n",
               e_rab_modify_resp_p->eNB_ue_s1ap_id);
@@ -881,87 +1234,111 @@ int s1ap_eNB_e_rab_modify_resp(instance_t instance,
   }
 
   /* Prepare the S1AP message to encode */
-  memset(&message, 0, sizeof(s1ap_message));
-
-  message.direction     = S1AP_PDU_PR_successfulOutcome;
-  message.procedureCode = S1ap_ProcedureCode_id_E_RABModify;
-  message.criticality   = S1ap_Criticality_reject;
-
-  initial_ies_p = &message.msg.s1ap_E_RABModifyResponseIEs;
-
-  initial_ies_p->eNB_UE_S1AP_ID = e_rab_modify_resp_p->eNB_ue_s1ap_id;
-  initial_ies_p->mme_ue_s1ap_id = ue_context_p->mme_ue_s1ap_id;
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = S1AP_S1AP_PDU_PR_successfulOutcome;
+  pdu.choice.successfulOutcome.procedureCode = S1AP_ProcedureCode_id_E_RABModify;
+  pdu.choice.successfulOutcome.criticality = S1AP_Criticality_reject;
+  pdu.choice.successfulOutcome.value.present = S1AP_SuccessfulOutcome__value_PR_E_RABModifyResponse;
+  out = &pdu.choice.successfulOutcome.value.choice.E_RABModifyResponse;
+  /* mandatory */
+  ie = (S1AP_E_RABModifyResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABModifyResponseIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_E_RABModifyResponseIEs__value_PR_MME_UE_S1AP_ID;
+  ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_E_RABModifyResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABModifyResponseIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_E_RABModifyResponseIEs__value_PR_ENB_UE_S1AP_ID;
+  ie->value.choice.ENB_UE_S1AP_ID = e_rab_modify_resp_p->eNB_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  /* optional */
+  if (e_rab_modify_resp_p->nb_of_e_rabs > 0) {
+    ie = (S1AP_E_RABModifyResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABModifyResponseIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_E_RABModifyListBearerModRes;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_E_RABModifyResponseIEs__value_PR_E_RABModifyListBearerModRes;
+
+    for (i = 0; i < e_rab_modify_resp_p->nb_of_e_rabs; i++) {
+      S1AP_E_RABModifyItemBearerModResIEs_t *item;
+      item = calloc(1, sizeof(S1AP_E_RABModifyItemBearerModResIEs_t));
+      item->id = S1AP_ProtocolIE_ID_id_E_RABModifyItemBearerModRes;
+      item->criticality = S1AP_Criticality_ignore;
+      item->value.present = S1AP_E_RABModifyItemBearerModResIEs__value_PR_E_RABModifyItemBearerModRes;
+      item->value.choice.E_RABModifyItemBearerModRes.e_RAB_ID = e_rab_modify_resp_p->e_rabs[i].e_rab_id;
+      S1AP_DEBUG("e_rab_modify_resp: modified e_rab ID %ld\n", item->value.choice.E_RABModifyItemBearerModRes.e_RAB_ID);
+      ASN_SEQUENCE_ADD(&ie->value.choice.E_RABModifyListBearerModRes.list, item);
+    }
 
-  if ( e_rab_modify_resp_p->nb_of_e_rabs >= 1 )
-    initial_ies_p->presenceMask |= S1AP_E_RABMODIFYRESPONSEIES_E_RABMODIFYLISTBEARERMODRES_PRESENT;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-  for (i = 0; i < e_rab_modify_resp_p->nb_of_e_rabs; i++) {
-    S1ap_E_RABModifyItemBearerModRes_t *modify_item;
+  /* optional */
+  if (e_rab_modify_resp_p->nb_of_e_rabs_failed > 0) {
+    ie = (S1AP_E_RABModifyResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABModifyResponseIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_E_RABFailedToModifyList;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_E_RABModifyResponseIEs__value_PR_E_RABList;
+
+    for (i = 0; i < e_rab_modify_resp_p->nb_of_e_rabs_failed; i++) {
+      S1AP_E_RABItemIEs_t *item;
+      item = calloc(1, sizeof(S1AP_E_RABItemIEs_t));
+      item->id = S1AP_ProtocolIE_ID_id_E_RABItem;
+      item->criticality = S1AP_Criticality_ignore;
+      item->value.present = S1AP_E_RABItemIEs__value_PR_E_RABItem;
+      item->value.choice.E_RABItem.e_RAB_ID = e_rab_modify_resp_p->e_rabs_failed[i].e_rab_id;
+      item->value.choice.E_RABItem.cause.present = e_rab_modify_resp_p->e_rabs_failed[i].cause;
+
+      switch(item->value.choice.E_RABItem.cause.present)
+      {
+        case S1AP_Cause_PR_radioNetwork:
+          item->value.choice.E_RABItem.cause.choice.radioNetwork = e_rab_modify_resp_p->e_rabs_failed[i].cause_value;
+          break;
 
-    modify_item = calloc(1, sizeof(S1ap_E_RABModifyItemBearerModRes_t));
+        case S1AP_Cause_PR_transport:
+          item->value.choice.E_RABItem.cause.choice.transport = e_rab_modify_resp_p->e_rabs_failed[i].cause_value;
+          break;
 
-    modify_item->e_RAB_ID = e_rab_modify_resp_p->e_rabs[i].e_rab_id;
+        case S1AP_Cause_PR_nas:
+          item->value.choice.E_RABItem.cause.choice.nas = e_rab_modify_resp_p->e_rabs_failed[i].cause_value;
+          break;
 
-    S1AP_DEBUG("e_rab_modify_resp: modified e_rab ID %ld\n",
-        modify_item->e_RAB_ID);
+        case S1AP_Cause_PR_protocol:
+          item->value.choice.E_RABItem.cause.choice.protocol = e_rab_modify_resp_p->e_rabs_failed[i].cause_value;
+          break;
 
-    S1ap_IE_t *ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABModifyItemBearerModRes,
-        S1ap_Criticality_ignore,
-        &asn_DEF_S1ap_E_RABModifyItemBearerModRes,
-        modify_item);
+        case S1AP_Cause_PR_misc:
+          item->value.choice.E_RABItem.cause.choice.misc = e_rab_modify_resp_p->e_rabs_failed[i].cause_value;
+          break;
 
-    ASN_SEQUENCE_ADD(&initial_ies_p->e_RABModifyListBearerModRes.s1ap_E_RABModifyItemBearerModRes,
-                     ie);
-  }
+        case S1AP_Cause_PR_NOTHING:
+        default:
+          break;
+      }
 
-  if ( e_rab_modify_resp_p->nb_of_e_rabs_failed >= 1 )
-    initial_ies_p->presenceMask |= S1AP_E_RABMODIFYRESPONSEIES_E_RABFAILEDTOMODIFYLIST_PRESENT;
-
-  for (i = 0; i < e_rab_modify_resp_p->nb_of_e_rabs_failed; i++) {
-    S1ap_E_RABItem_t *failed_item;
-
-    failed_item = calloc(1, sizeof(S1ap_E_RABItem_t));
-
-    failed_item->e_RAB_ID = e_rab_modify_resp_p->e_rabs_failed[i].e_rab_id;
-    switch(e_rab_modify_resp_p->e_rabs_failed[i].cause)
-    {
-    case S1AP_CAUSE_RADIO_NETWORK:
-        failed_item->cause.present = S1ap_Cause_PR_radioNetwork;
-        failed_item->cause.choice.radioNetwork = e_rab_modify_resp_p->e_rabs_failed[i].cause_value;
-        break;
-    case S1AP_CAUSE_TRANSPORT:
-        failed_item->cause.present = S1ap_Cause_PR_transport;
-        failed_item->cause.choice.transport = e_rab_modify_resp_p->e_rabs_failed[i].cause_value;
-        break;
-    case S1AP_CAUSE_NAS:
-        failed_item->cause.present = S1ap_Cause_PR_nas;
-        failed_item->cause.choice.nas = e_rab_modify_resp_p->e_rabs_failed[i].cause_value;
-        break;
-    case S1AP_CAUSE_PROTOCOL:
-        failed_item->cause.present = S1ap_Cause_PR_protocol;
-        failed_item->cause.choice.protocol = e_rab_modify_resp_p->e_rabs_failed[i].cause_value;
-        break;
-    case S1AP_CAUSE_MISC:
-        failed_item->cause.present = S1ap_Cause_PR_misc;
-        failed_item->cause.choice.misc = e_rab_modify_resp_p->e_rabs_failed[i].cause_value;
-        break;
-    default:
-        break;
+      S1AP_DEBUG("e_rab_modify_resp: failed e_rab ID %ld\n", item->value.choice.E_RABItem.e_RAB_ID);
+      ASN_SEQUENCE_ADD(&ie->value.choice.E_RABList.list, item);
     }
-    S1AP_DEBUG("e_rab_modify_resp: failed e_rab ID %ld\n",
-        failed_item->e_RAB_ID);
 
-    S1ap_IE_t *ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABItem,
-        S1ap_Criticality_ignore,
-        &asn_DEF_S1ap_E_RABItem,
-        failed_item);
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
-    ASN_SEQUENCE_ADD(&initial_ies_p->e_RABFailedToModifyList.s1ap_E_RABItem,
-                     ie);
+  /* optional */
+  if (0) {
+    ie = (S1AP_E_RABModifyResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABModifyResponseIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_CriticalityDiagnostics;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_E_RABModifyResponseIEs__value_PR_CriticalityDiagnostics;
+    // ie->value.choice.CriticalityDiagnostics = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
   }
 
   fprintf(stderr, "start encode\n");
-  if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+
+  if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
     S1AP_ERROR("Failed to encode uplink transport\n");
     /* Encode procedure has failed... */
     return -1;
@@ -976,121 +1353,153 @@ int s1ap_eNB_e_rab_modify_resp(instance_t instance,
     0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
     initial_ies_p->eNB_UE_S1AP_ID,
     initial_ies_p->mme_ue_s1ap_id);
-
   /* UE associated signalling -> use the allocated stream */
   s1ap_eNB_itti_send_sctp_data_req(s1ap_eNB_instance_p->instance,
                                    ue_context_p->mme_ref->assoc_id, buffer,
                                    length, ue_context_p->tx_stream);
-
-  return ret;
+  return 0;
 }
 //------------------------------------------------------------------------------
 int s1ap_eNB_e_rab_release_resp(instance_t instance,
-			      s1ap_e_rab_release_resp_t *e_rab_release_resp_p)
+                                s1ap_e_rab_release_resp_t *e_rab_release_resp_p)
 //------------------------------------------------------------------------------
 {
   s1ap_eNB_instance_t          *s1ap_eNB_instance_p = NULL;
   struct s1ap_eNB_ue_context_s *ue_context_p        = NULL;
-
-  S1ap_E_RABReleaseResponseIEs_t  *release_response_ies_p  = NULL;
-
-  s1ap_message  message;
-
+  S1AP_S1AP_PDU_t                 pdu;
+  S1AP_E_RABReleaseResponse_t    *out;
+  S1AP_E_RABReleaseResponseIEs_t *ie;
   uint8_t  *buffer  = NULL;
   uint32_t length;
-  int      ret = -1;
   int      i;
   /* Retrieve the S1AP eNB instance associated with Mod_id */
   s1ap_eNB_instance_p = s1ap_eNB_get_instance(instance);
   DevAssert(e_rab_release_resp_p != NULL);
   DevAssert(s1ap_eNB_instance_p != NULL);
 
-  /* Prepare the S1AP message to encode */
-  memset(&message, 0, sizeof(s1ap_message));
-
-  message.direction     = S1AP_PDU_PR_successfulOutcome;
-  message.procedureCode = S1ap_ProcedureCode_id_E_RABRelease;
-  message.criticality = S1ap_Criticality_ignore;
-
   if ((ue_context_p = s1ap_eNB_get_ue_context(s1ap_eNB_instance_p,
-          e_rab_release_resp_p->eNB_ue_s1ap_id)) == NULL) {
+                      e_rab_release_resp_p->eNB_ue_s1ap_id)) == NULL) {
     /* The context for this eNB ue s1ap id doesn't exist in the map of eNB UEs */
     S1AP_WARN("Failed to find ue context associated with eNB ue s1ap id: %u\n",
-            e_rab_release_resp_p->eNB_ue_s1ap_id);
+              e_rab_release_resp_p->eNB_ue_s1ap_id);
     return -1;
   }
 
-  release_response_ies_p = &message.msg.s1ap_E_RABReleaseResponseIEs;
-  release_response_ies_p->eNB_UE_S1AP_ID = e_rab_release_resp_p->eNB_ue_s1ap_id;
-  release_response_ies_p->mme_ue_s1ap_id = ue_context_p->mme_ue_s1ap_id;
+  /* Prepare the S1AP message to encode */
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = S1AP_S1AP_PDU_PR_successfulOutcome;
+  pdu.choice.successfulOutcome.procedureCode = S1AP_ProcedureCode_id_E_RABRelease;
+  pdu.choice.successfulOutcome.criticality = S1AP_Criticality_reject;
+  pdu.choice.successfulOutcome.value.present = S1AP_SuccessfulOutcome__value_PR_E_RABReleaseResponse;
+  out = &pdu.choice.successfulOutcome.value.choice.E_RABReleaseResponse;
+  /* mandatory */
+  ie = (S1AP_E_RABReleaseResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABReleaseResponseIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_E_RABReleaseResponseIEs__value_PR_MME_UE_S1AP_ID;
+  ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  /* mandatory */
+  ie = (S1AP_E_RABReleaseResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABReleaseResponseIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_E_RABReleaseResponseIEs__value_PR_ENB_UE_S1AP_ID;
+  ie->value.choice.ENB_UE_S1AP_ID = e_rab_release_resp_p->eNB_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  /* optional */
+  if (e_rab_release_resp_p->nb_of_e_rabs_released > 0) {
+    ie = (S1AP_E_RABReleaseResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABReleaseResponseIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_E_RABReleaseListBearerRelComp;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_E_RABReleaseResponseIEs__value_PR_E_RABReleaseListBearerRelComp;
+
+    for (i = 0; i < e_rab_release_resp_p->nb_of_e_rabs_released; i++) {
+      S1AP_E_RABReleaseItemBearerRelCompIEs_t *item;
+      item = calloc(1, sizeof(S1AP_E_RABReleaseItemBearerRelCompIEs_t));
+      item->id = S1AP_ProtocolIE_ID_id_E_RABReleaseItemBearerRelComp;
+      item->criticality = S1AP_Criticality_ignore;
+      item->value.present = S1AP_E_RABReleaseItemBearerRelCompIEs__value_PR_E_RABReleaseItemBearerRelComp;
+      item->value.choice.E_RABReleaseItemBearerRelComp.e_RAB_ID = e_rab_release_resp_p->e_rab_release[i].e_rab_id;
+      S1AP_DEBUG("e_rab_release_resp: e_rab ID %ld\n", item->value.choice.E_RABReleaseItemBearerRelComp.e_RAB_ID);
+      ASN_SEQUENCE_ADD(&ie->value.choice.E_RABReleaseListBearerRelComp.list, item);
+    }
+
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
+
+  /* optional */
+  if (e_rab_release_resp_p->nb_of_e_rabs_failed > 0) {
+    ie = (S1AP_E_RABReleaseResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABReleaseResponseIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_E_RABFailedToReleaseList;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_E_RABReleaseResponseIEs__value_PR_E_RABList;
+
+    for (i = 0; i < e_rab_release_resp_p->nb_of_e_rabs_failed; i++) {
+      S1AP_E_RABItemIEs_t *item;
+      item = calloc(1, sizeof(S1AP_E_RABItemIEs_t));
+      item->id = S1AP_ProtocolIE_ID_id_E_RABItem;
+      item->criticality = S1AP_Criticality_ignore;
+      item->value.present = S1AP_E_RABItemIEs__value_PR_E_RABItem;
+      item->value.choice.E_RABItem.e_RAB_ID = e_rab_release_resp_p->e_rabs_failed[i].e_rab_id;
+      item->value.choice.E_RABItem.cause.present = e_rab_release_resp_p->e_rabs_failed[i].cause;
+
+      switch(item->value.choice.E_RABItem.cause.present)
+      {
+        case S1AP_Cause_PR_radioNetwork:
+          item->value.choice.E_RABItem.cause.choice.radioNetwork = e_rab_release_resp_p->e_rabs_failed[i].cause_value;
+          break;
 
-  if ( e_rab_release_resp_p->nb_of_e_rabs_released > 0 )
-      release_response_ies_p->presenceMask |= S1AP_E_RABRELEASERESPONSEIES_E_RABRELEASELISTBEARERRELCOMP_PRESENT;
+        case S1AP_Cause_PR_transport:
+          item->value.choice.E_RABItem.cause.choice.transport = e_rab_release_resp_p->e_rabs_failed[i].cause_value;
+          break;
 
-  //release
-  for (i = 0; i < e_rab_release_resp_p->nb_of_e_rabs_released; i++) {
+        case S1AP_Cause_PR_nas:
+          item->value.choice.E_RABItem.cause.choice.nas = e_rab_release_resp_p->e_rabs_failed[i].cause_value;
+          break;
 
-    S1ap_E_RABReleaseItemBearerRelComp_t *new_item;
+        case S1AP_Cause_PR_protocol:
+          item->value.choice.E_RABItem.cause.choice.protocol = e_rab_release_resp_p->e_rabs_failed[i].cause_value;
+          break;
 
-    new_item = calloc(1, sizeof(S1ap_E_RABReleaseItemBearerRelComp_t));
+        case S1AP_Cause_PR_misc:
+          item->value.choice.E_RABItem.cause.choice.misc = e_rab_release_resp_p->e_rabs_failed[i].cause_value;
+          break;
 
-    new_item->e_RAB_ID = e_rab_release_resp_p->e_rab_release[i].e_rab_id;
+        case S1AP_Cause_PR_NOTHING:
+        default:
+          break;
+      }
 
-    S1AP_DEBUG("e_rab_release_resp: e_rab ID %ld\n",new_item->e_RAB_ID);
+      ASN_SEQUENCE_ADD(&ie->value.choice.E_RABList.list, item);
+    }
 
-    ASN_SEQUENCE_ADD(&release_response_ies_p->e_RABReleaseListBearerRelComp.s1ap_E_RABReleaseItemBearerRelComp,
-                     new_item);
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  }
 
+  /* optional */
+  if (0) {
+    ie = (S1AP_E_RABReleaseResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABReleaseResponseIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_CriticalityDiagnostics;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_E_RABReleaseResponseIEs__value_PR_CriticalityDiagnostics;
+    // ie->value.choice.CriticalityDiagnostics = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
   }
 
-  if ( e_rab_release_resp_p->nb_of_e_rabs_failed > 0 )
-      release_response_ies_p->presenceMask |= S1AP_E_RABRELEASERESPONSEIES_E_RABFAILEDTORELEASELIST_PRESENT;
-
-  //release failed
-  for (i = 0; i < e_rab_release_resp_p->nb_of_e_rabs_failed; i++) {
-      S1ap_E_RABItem_t     *new_rabitem;
-      new_rabitem = calloc(1, sizeof(S1ap_E_RABItem_t));
-      //e_rab_id
-      new_rabitem->e_RAB_ID = e_rab_release_resp_p->e_rabs_failed[i].e_rab_id;
-      //cause
-      switch(e_rab_release_resp_p->e_rabs_failed[i].cause)
-      {
-        case S1AP_CAUSE_NOTHING:
-          new_rabitem->cause.present = S1ap_Cause_PR_NOTHING;
-        break;
-
-        case S1AP_CAUSE_RADIO_NETWORK:
-          new_rabitem->cause.present = S1ap_Cause_PR_radioNetwork;
-          new_rabitem->cause.choice.radioNetwork = e_rab_release_resp_p->e_rabs_failed[i].cause_value;
-        break;
-
-        case S1AP_CAUSE_TRANSPORT:
-          new_rabitem->cause.present = S1ap_Cause_PR_transport;
-          new_rabitem->cause.choice.transport = e_rab_release_resp_p->e_rabs_failed[i].cause_value;
-        break;
-
-        case S1AP_CAUSE_NAS:
-          new_rabitem->cause.present = S1ap_Cause_PR_nas;
-          new_rabitem->cause.choice.nas = e_rab_release_resp_p->e_rabs_failed[i].cause_value;
-        break;
-
-        case S1AP_CAUSE_PROTOCOL:
-          new_rabitem->cause.present = S1ap_Cause_PR_protocol;
-          new_rabitem->cause.choice.protocol = e_rab_release_resp_p->e_rabs_failed[i].cause_value;
-        break;
-
-        case S1AP_CAUSE_MISC:
-        default:
-          new_rabitem->cause.present = S1ap_Cause_PR_misc;
-          new_rabitem->cause.choice.misc = e_rab_release_resp_p->e_rabs_failed[i].cause_value;
-        break;
-      }
-      S1AP_DEBUG("e_rab_release_resp: failed e_rab ID %ld\n",new_rabitem->e_RAB_ID);
-      ASN_SEQUENCE_ADD(&release_response_ies_p->e_RABFailedToReleaseList.s1ap_E_RABItem, new_rabitem);
+  /* optional */
+  if(0) {
+    ie = (S1AP_E_RABReleaseResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABReleaseResponseIEs_t));
+    ie->id = S1AP_ProtocolIE_ID_id_UserLocationInformation;
+    ie->criticality = S1AP_Criticality_ignore;
+    ie->value.present = S1AP_E_RABReleaseResponseIEs__value_PR_UserLocationInformation;
+    // ie->value.choice.UserLocationInformation = ;
+    ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
   }
 
   fprintf(stderr, "start encode\n");
-  if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+
+  if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
     S1AP_ERROR("Failed to encode release response\n");
     /* Encode procedure has failed... */
     return -1;
@@ -1105,14 +1514,11 @@ int s1ap_eNB_e_rab_release_resp(instance_t instance,
     0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
     e_rab_release_resp_p->eNB_ue_s1ap_id,
     ue_context_p->mme_ue_s1ap_id);
-
   /* UE associated signalling -> use the allocated stream */
   s1ap_eNB_itti_send_sctp_data_req(s1ap_eNB_instance_p->instance,
                                    ue_context_p->mme_ref->assoc_id, buffer,
                                    length, ue_context_p->tx_stream);
-
   S1AP_INFO("e_rab_release_response sended eNB_UE_S1AP_ID %d  mme_ue_s1ap_id %d nb_of_e_rabs_released %d nb_of_e_rabs_failed %d\n",
-          e_rab_release_resp_p->eNB_ue_s1ap_id, ue_context_p->mme_ue_s1ap_id,e_rab_release_resp_p->nb_of_e_rabs_released,e_rab_release_resp_p->nb_of_e_rabs_failed);
-
-  return ret;
+            e_rab_release_resp_p->eNB_ue_s1ap_id, ue_context_p->mme_ue_s1ap_id,e_rab_release_resp_p->nb_of_e_rabs_released,e_rab_release_resp_p->nb_of_e_rabs_failed);
+  return 0;
 }
diff --git a/openair3/S1AP/s1ap_eNB_nas_procedures.h b/openair3/S1AP/s1ap_eNB_nas_procedures.h
index bb2a0488bfd898fb5ec87a62e0d205767c19d467..a7f144c0ca3653ab0a2665f8d1be619a1fe9d1a5 100644
--- a/openair3/S1AP/s1ap_eNB_nas_procedures.h
+++ b/openair3/S1AP/s1ap_eNB_nas_procedures.h
@@ -23,14 +23,14 @@
 #define S1AP_ENB_NAS_PROCEDURES_H_
 
 int s1ap_eNB_handle_nas_downlink(
-  const uint32_t               assoc_id,
-  const uint32_t               stream,
-  struct s1ap_message_s* message_p);
+  uint32_t         assoc_id,
+  uint32_t         stream,
+  S1AP_S1AP_PDU_t *pdu);
 
 int s1ap_eNB_nas_uplink(instance_t instance, s1ap_uplink_nas_t *s1ap_uplink_nas_p);
 
-void s1ap_eNB_nas_non_delivery_ind(instance_t instance,
-                                   s1ap_nas_non_delivery_ind_t *s1ap_nas_non_delivery_ind);
+int s1ap_eNB_nas_non_delivery_ind(instance_t instance,
+                                  s1ap_nas_non_delivery_ind_t *s1ap_nas_non_delivery_ind);
 
 int s1ap_eNB_handle_nas_first_req(
   instance_t instance, s1ap_nas_first_req_t *s1ap_nas_first_req_p);
@@ -45,8 +45,8 @@ int s1ap_eNB_e_rab_setup_resp(instance_t instance,
                               s1ap_e_rab_setup_resp_t *e_rab_setup_resp_p);
 
 int s1ap_eNB_e_rab_modify_resp(instance_t instance,
-               s1ap_e_rab_modify_resp_t *e_rab_modify_resp_p);
+                               s1ap_e_rab_modify_resp_t *e_rab_modify_resp_p);
 
 int s1ap_eNB_e_rab_release_resp(instance_t instance,
-                  s1ap_e_rab_release_resp_t *e_rab_release_resp_p);
+                                s1ap_e_rab_release_resp_t *e_rab_release_resp_p);
 #endif /* S1AP_ENB_NAS_PROCEDURES_H_ */
diff --git a/openair3/S1AP/s1ap_eNB_overload.c b/openair3/S1AP/s1ap_eNB_overload.c
index 82167bfeeb5112f9ac0712a24679f89f56358124..e4066b7108533bbe74dd4b23498ce0eb757237ba 100644
--- a/openair3/S1AP/s1ap_eNB_overload.c
+++ b/openair3/S1AP/s1ap_eNB_overload.c
@@ -33,7 +33,6 @@
 #include "intertask_interface.h"
 
 #include "s1ap_common.h"
-#include "s1ap_ies_defs.h"
 #include "s1ap_eNB_defs.h"
 
 #include "s1ap_eNB.h"
@@ -44,21 +43,20 @@
 
 #include "assertions.h"
 
-int s1ap_eNB_handle_overload_start(uint32_t               assoc_id,
-                                   uint32_t               stream,
-                                   struct s1ap_message_s *message_p)
+int s1ap_eNB_handle_overload_start(uint32_t         assoc_id,
+                                   uint32_t         stream,
+                                   S1AP_S1AP_PDU_t *pdu)
 {
-  S1ap_OverloadStartIEs_t *overload_start_p;
   s1ap_eNB_mme_data_t     *mme_desc_p;
-
-  DevAssert(message_p != NULL);
-
-  overload_start_p = &message_p->msg.s1ap_OverloadStartIEs;
-
-  DevCheck(overload_start_p->overloadResponse.present ==
-           S1ap_OverloadResponse_PR_overloadAction,
-           S1ap_OverloadResponse_PR_overloadAction, 0, 0);
-
+  S1AP_OverloadStart_t    *container;
+  S1AP_OverloadStartIEs_t *ie;
+  DevAssert(pdu != NULL);
+  container = &pdu->choice.initiatingMessage.value.choice.OverloadStart;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_OverloadStartIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_OverloadResponse, TRUE);
+  DevCheck(ie->value.choice.OverloadResponse.present ==
+           S1AP_OverloadResponse_PR_overloadAction,
+           S1AP_OverloadResponse_PR_overloadAction, 0, 0);
   /* Non UE-associated signalling -> stream 0 */
   DevCheck(stream == 0, stream, 0, 0);
 
@@ -72,24 +70,20 @@ int s1ap_eNB_handle_overload_start(uint32_t               assoc_id,
    */
   mme_desc_p->state = S1AP_ENB_OVERLOAD;
   mme_desc_p->overload_state =
-    overload_start_p->overloadResponse.choice.overloadAction;
-
+    ie->value.choice.OverloadResponse.choice.overloadAction;
   return 0;
 }
 
-int s1ap_eNB_handle_overload_stop(uint32_t               assoc_id,
-                                  uint32_t               stream,
-                                  struct s1ap_message_s *message_p)
+int s1ap_eNB_handle_overload_stop(uint32_t         assoc_id,
+                                  uint32_t         stream,
+                                  S1AP_S1AP_PDU_t *pdu)
 {
   /* We received Overload stop message, meaning that the MME is no more
    * overloaded. This is an empty message, with only message header and no
    * Information Element.
    */
-
-  DevAssert(message_p != NULL);
-
+  DevAssert(pdu != NULL);
   s1ap_eNB_mme_data_t *mme_desc_p;
-
   /* Non UE-associated signalling -> stream 0 */
   DevCheck(stream == 0, stream, 0, 0);
 
diff --git a/openair3/S1AP/s1ap_eNB_overload.h b/openair3/S1AP/s1ap_eNB_overload.h
index 1b0ee443de3a23b07c8f6db71310501bc3c0f52d..8133345deefd40340a1abc744241aa80bd1dcfc5 100644
--- a/openair3/S1AP/s1ap_eNB_overload.h
+++ b/openair3/S1AP/s1ap_eNB_overload.h
@@ -28,9 +28,9 @@
 // int s1ap_eNB_handle_overload_start(eNB_mme_desc_t *eNB_desc_p,
 //                                    sctp_queue_item_t *packet_p,
 //                                    struct s1ap_message_s *message_p);
-int s1ap_eNB_handle_overload_start(uint32_t               assoc_id,
-                                   uint32_t               stream,
-                                   struct s1ap_message_s *message_p);
+int s1ap_eNB_handle_overload_start(uint32_t         assoc_id,
+                                   uint32_t         stream,
+                                   S1AP_S1AP_PDU_t *pdu);
 
 /**
  * \brief Handle an overload stop message
@@ -38,8 +38,8 @@ int s1ap_eNB_handle_overload_start(uint32_t               assoc_id,
 // int s1ap_eNB_handle_overload_stop(eNB_mme_desc_t *eNB_desc_p,
 //                                   sctp_queue_item_t *packet_p,
 //                                   struct s1ap_message_s *message_p);
-int s1ap_eNB_handle_overload_stop(uint32_t               assoc_id,
-                                  uint32_t               stream,
-                                  struct s1ap_message_s *message_p);
+int s1ap_eNB_handle_overload_stop(uint32_t         assoc_id,
+                                  uint32_t         stream,
+                                  S1AP_S1AP_PDU_t *pdu);
 
 #endif /* S1AP_ENB_OVERLOAD_H_ */
diff --git a/openair3/S1AP/s1ap_eNB_trace.c b/openair3/S1AP/s1ap_eNB_trace.c
index e640c9292a856e1cac8d99a38fc2a33cb7ecc8fb..a04bd4ce936b46346074e831c6b0e2657d0c9fe8 100644
--- a/openair3/S1AP/s1ap_eNB_trace.c
+++ b/openair3/S1AP/s1ap_eNB_trace.c
@@ -28,7 +28,6 @@
 #include "s1ap_eNB_default_values.h"
 
 #include "s1ap_common.h"
-#include "s1ap_ies_defs.h"
 #include "s1ap_eNB_defs.h"
 
 #include "s1ap_eNB.h"
@@ -40,29 +39,50 @@
 
 static
 void s1ap_eNB_generate_trace_failure(struct s1ap_eNB_ue_context_s *ue_desc_p,
-                                     S1ap_E_UTRAN_Trace_ID_t      *trace_id,
-                                     S1ap_Cause_t                 *cause_p)
+                                     S1AP_E_UTRAN_Trace_ID_t      *trace_id,
+                                     S1AP_Cause_t                 *cause_p)
 {
-  s1ap_message message;
-  S1ap_TraceFailureIndicationIEs_t *trace_failure_p;
-  uint8_t  *buffer;
-  uint32_t  length;
-
+  S1AP_S1AP_PDU_t                     pdu;
+  S1AP_TraceFailureIndication_t      *out;
+  S1AP_TraceFailureIndicationIEs_t   *ie;
+  uint8_t                            *buffer = NULL;
+  uint32_t                            length;
   DevAssert(ue_desc_p != NULL);
   DevAssert(trace_id  != NULL);
   DevAssert(cause_p   != NULL);
-
-  memset(&message, 0, sizeof(s1ap_message));
-
-  trace_failure_p = &message.msg.s1ap_TraceFailureIndicationIEs;
-
-  trace_failure_p->mme_ue_s1ap_id = ue_desc_p->mme_ue_s1ap_id;
-  trace_failure_p->eNB_UE_S1AP_ID = ue_desc_p->eNB_ue_s1ap_id;
-
-  memcpy(&trace_failure_p->e_UTRAN_Trace_ID, trace_id, sizeof(S1ap_E_UTRAN_Trace_ID_t));
-  memcpy(&trace_failure_p->cause, cause_p, sizeof(S1ap_Cause_t));
-
-  if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+  /* Prepare the S1AP message to encode */
+  memset(&pdu, 0, sizeof(pdu));
+  pdu.present = S1AP_S1AP_PDU_PR_initiatingMessage;
+  pdu.choice.initiatingMessage.procedureCode = S1AP_ProcedureCode_id_TraceFailureIndication;
+  pdu.choice.initiatingMessage.criticality = S1AP_Criticality_ignore;
+  pdu.choice.initiatingMessage.value.present = S1AP_InitiatingMessage__value_PR_TraceFailureIndication;
+  out = &pdu.choice.initiatingMessage.value.choice.TraceFailureIndication;
+  ie = (S1AP_TraceFailureIndicationIEs_t *)calloc(1, sizeof(S1AP_TraceFailureIndicationIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_TraceFailureIndicationIEs__value_PR_MME_UE_S1AP_ID;
+  ie->value.choice.MME_UE_S1AP_ID = ue_desc_p->mme_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  ie = (S1AP_TraceFailureIndicationIEs_t *)calloc(1, sizeof(S1AP_TraceFailureIndicationIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
+  ie->criticality = S1AP_Criticality_reject;
+  ie->value.present = S1AP_TraceFailureIndicationIEs__value_PR_ENB_UE_S1AP_ID;
+  ie->value.choice.ENB_UE_S1AP_ID = ue_desc_p->eNB_ue_s1ap_id;
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  ie = (S1AP_TraceFailureIndicationIEs_t *)calloc(1, sizeof(S1AP_TraceFailureIndicationIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_E_UTRAN_Trace_ID;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_TraceFailureIndicationIEs__value_PR_E_UTRAN_Trace_ID;
+  memcpy(&ie->value.choice.E_UTRAN_Trace_ID, trace_id, sizeof(S1AP_E_UTRAN_Trace_ID_t));
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+  ie = (S1AP_TraceFailureIndicationIEs_t *)calloc(1, sizeof(S1AP_TraceFailureIndicationIEs_t));
+  ie->id = S1AP_ProtocolIE_ID_id_Cause;
+  ie->criticality = S1AP_Criticality_ignore;
+  ie->value.present = S1AP_TraceFailureIndicationIEs__value_PR_Cause;
+  memcpy(&ie->value.choice.Cause, cause_p, sizeof(S1AP_Cause_t));
+  ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
+
+  if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
     return;
   }
 
@@ -71,48 +91,44 @@ void s1ap_eNB_generate_trace_failure(struct s1ap_eNB_ue_context_s *ue_desc_p,
                                    length, ue_desc_p->tx_stream);
 }
 
-int s1ap_eNB_handle_trace_start(uint32_t               assoc_id,
-                                uint32_t               stream,
-                                struct s1ap_message_s *message_p)
+int s1ap_eNB_handle_trace_start(uint32_t         assoc_id,
+                                uint32_t         stream,
+                                S1AP_S1AP_PDU_t *pdu)
 {
-  S1ap_TraceStartIEs_t         *trace_start_p;
+  S1AP_TraceStart_t            *container;
+  S1AP_TraceStartIEs_t         *ie;
   struct s1ap_eNB_ue_context_s *ue_desc_p;
   struct s1ap_eNB_mme_data_s   *mme_ref_p;
-
-  DevAssert(message_p != NULL);
-
-  trace_start_p = &message_p->msg.s1ap_TraceStartIEs;
-
+  DevAssert(pdu != NULL);
+  container = &pdu->choice.initiatingMessage.value.choice.TraceStart;
+  S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_TraceStartIEs_t, ie, container,
+                             S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID, TRUE);
   mme_ref_p = s1ap_eNB_get_MME(NULL, assoc_id, 0);
   DevAssert(mme_ref_p != NULL);
 
   if ((ue_desc_p = s1ap_eNB_get_ue_context(mme_ref_p->s1ap_eNB_instance,
-                   trace_start_p->eNB_UE_S1AP_ID)) == NULL) {
+                   ie->value.choice.ENB_UE_S1AP_ID)) == NULL) {
     /* Could not find context associated with this eNB_ue_s1ap_id -> generate
      * trace failure indication.
      */
-    S1ap_E_UTRAN_Trace_ID_t trace_id;
-    S1ap_Cause_t cause;
-
-    memset(&trace_id, 0, sizeof(S1ap_E_UTRAN_Trace_ID_t));
-    memset(&cause, 0, sizeof(S1ap_Cause_t));
-
-    cause.present = S1ap_Cause_PR_radioNetwork;
-    cause.choice.radioNetwork = S1ap_CauseRadioNetwork_unknown_pair_ue_s1ap_id;
-
+    S1AP_E_UTRAN_Trace_ID_t trace_id;
+    S1AP_Cause_t cause;
+    memset(&trace_id, 0, sizeof(S1AP_E_UTRAN_Trace_ID_t));
+    memset(&cause, 0, sizeof(S1AP_Cause_t));
+    cause.present = S1AP_Cause_PR_radioNetwork;
+    cause.choice.radioNetwork = S1AP_CauseRadioNetwork_unknown_pair_ue_s1ap_id;
     s1ap_eNB_generate_trace_failure(ue_desc_p, &trace_id, &cause);
   }
 
   return 0;
 }
 
-int s1ap_eNB_handle_deactivate_trace(uint32_t               assoc_id,
-                                     uint32_t               stream,
-                                     struct s1ap_message_s *message_p)
+int s1ap_eNB_handle_deactivate_trace(uint32_t         assoc_id,
+                                     uint32_t         stream,
+                                     S1AP_S1AP_PDU_t *message_p)
 {
-  //     S1ap_DeactivateTraceIEs_t *deactivate_trace_p;
+  //     S1AP_DeactivateTraceIEs_t *deactivate_trace_p;
   //
   //     deactivate_trace_p = &message_p->msg.deactivateTraceIEs;
-
   return 0;
 }
diff --git a/openair3/S1AP/s1ap_eNB_trace.h b/openair3/S1AP/s1ap_eNB_trace.h
index 922197afb42d9cd120494365d4de17b4275f5dfb..75f7a59dc4abdb18ae2180c252257fd2027a3057 100644
--- a/openair3/S1AP/s1ap_eNB_trace.h
+++ b/openair3/S1AP/s1ap_eNB_trace.h
@@ -32,15 +32,15 @@
 // int s1ap_eNB_handle_trace_start(eNB_mme_desc_t *eNB_desc_p,
 //                                 sctp_queue_item_t *packet_p,
 //                                 struct s1ap_message_s *message_p);
-int s1ap_eNB_handle_trace_start(uint32_t               assoc_id,
-                                uint32_t               stream,
-                                struct s1ap_message_s *message_p);
+int s1ap_eNB_handle_trace_start(uint32_t         assoc_id,
+                                uint32_t         stream,
+                                S1AP_S1AP_PDU_t *pdu);
 
 // int s1ap_eNB_handle_deactivate_trace(eNB_mme_desc_t *eNB_desc_p,
 //                                      sctp_queue_item_t *packet_p,
 //                                      struct s1ap_message_s *message_p);
-int s1ap_eNB_handle_deactivate_trace(uint32_t               assoc_id,
-                                     uint32_t               stream,
-                                     struct s1ap_message_s *message_p);
+int s1ap_eNB_handle_deactivate_trace(uint32_t         assoc_id,
+                                     uint32_t         stream,
+                                     S1AP_S1AP_PDU_t *pdu);
 
 #endif /* S1AP_ENB_TRACE_H_ */
diff --git a/openair3/TEST/EPC_TEST/play_scenario.h b/openair3/TEST/EPC_TEST/play_scenario.h
index f9601fe9044aca63d522b3e4085220bec52b8d18..a18bad230bfd8baea0078e43ecbe8b6f5f0525e5 100644
--- a/openair3/TEST/EPC_TEST/play_scenario.h
+++ b/openair3/TEST/EPC_TEST/play_scenario.h
@@ -252,12 +252,11 @@ typedef enum {
 
 typedef struct et_s1ap_s {
   //et_s1ap_pdu_type_t pdu_type;
-  S1AP_PDU_t           pdu; // decoded ASN1 C type: choice of initiatingMessage, successfulOutcome, unsuccessfulOutcome
+  S1AP_S1AP_PDU_t      pdu; // decoded ASN1 C type: choice of initiatingMessage, successfulOutcome, unsuccessfulOutcome
   uint16_t             xml_stream_pos_offset;
   uint16_t             binary_stream_pos;
   uint16_t             binary_stream_allocated_size;
   uint8_t             *binary_stream;
-  s1ap_message         message; // decoded message: information elements
   xmlDocPtr            doc; // XML representation of the S1AP PDU
 } et_s1ap_t;
 
@@ -300,9 +299,9 @@ typedef struct et_ip_s {
   union {
     struct in6_addr  ipv6;
     in_addr_t        ipv4;
-  }address;
+  } address;
   char str[INET6_ADDRSTRLEN+1];
-}et_ip_t;
+} et_ip_t;
 
 typedef struct et_ip_hdr_s {
   et_ip_t  src;
@@ -325,7 +324,7 @@ typedef struct et_packet_s {
   et_packet_status_t   status;
   long                 timer_id;         // ITTI timer id for waiting rx packets
   struct timeval       timestamp_packet; // timestamp when rx or tx packet
-}et_packet_t;
+} et_packet_t;
 
 
 typedef struct sctp_epoll_s {
@@ -401,23 +400,23 @@ typedef struct et_event_s {
 inline void et_free_pointer(void *p) {if (NULL != p) {free(p); p=NULL;}};
 
 //-------------------------
-void et_free_packet(et_packet_t* packet);
-void et_free_scenario(et_scenario_t* scenario);
+void et_free_packet(et_packet_t *packet);
+void et_free_scenario(et_scenario_t *scenario);
 //-------------------------
-void et_display_packet_s1ap_data(const et_s1ap_t * const s1ap);
-void et_display_packet_sctp_init(const sctp_inithdr_t * const sctp);
-void et_display_packet_sctp_initack(const sctp_initackhdr_t * const sctp);
-void et_display_packet_sctp_data(const sctp_datahdr_t * const sctp);
-void et_display_packet_sctp(const et_sctp_hdr_t * const sctp);
-void et_display_packet_ip(const et_ip_hdr_t * const ip);
-void et_display_packet(const et_packet_t * const packet);
-void et_display_scenario(const et_scenario_t * const scenario);
+void et_display_packet_s1ap_data(const et_s1ap_t *const s1ap);
+void et_display_packet_sctp_init(const sctp_inithdr_t *const sctp);
+void et_display_packet_sctp_initack(const sctp_initackhdr_t *const sctp);
+void et_display_packet_sctp_data(const sctp_datahdr_t *const sctp);
+void et_display_packet_sctp(const et_sctp_hdr_t *const sctp);
+void et_display_packet_ip(const et_ip_hdr_t *const ip);
+void et_display_packet(const et_packet_t *const packet);
+void et_display_scenario(const et_scenario_t *const scenario);
 //-------------------------
-int et_s1ap_decode_initiating_message(s1ap_message *message, S1ap_InitiatingMessage_t *initiating_p);
-int et_s1ap_decode_successful_outcome(s1ap_message *message, S1ap_SuccessfulOutcome_t *successfullOutcome_p);
-int et_s1ap_decode_unsuccessful_outcome(s1ap_message *message, S1ap_UnsuccessfulOutcome_t *unSuccessfullOutcome_p);
-int et_s1ap_decode_pdu(S1AP_PDU_t * const pdu, s1ap_message * const message, const uint8_t * const buffer, const uint32_t length);
-void et_decode_s1ap(et_s1ap_t * const s1ap);
+int et_s1ap_decode_initiating_message(s1ap_message *message, S1AP_InitiatingMessage_t *initiating_p);
+int et_s1ap_decode_successful_outcome(s1ap_message *message, S1AP_SuccessfulOutcome_t *successfullOutcome_p);
+int et_s1ap_decode_unsuccessful_outcome(s1ap_message *message, S1AP_UnsuccessfulOutcome_t *unSuccessfullOutcome_p);
+int et_s1ap_decode_pdu(S1AP_PDU_t *const pdu, s1ap_message *const message, const uint8_t *const buffer, const uint32_t length);
+void et_decode_s1ap(et_s1ap_t *const s1ap);
 //-------------------------
 int et_s1ap_eNB_compare_assoc_id( struct s1ap_eNB_mme_data_s *p1, struct s1ap_eNB_mme_data_s *p2);
 uint32_t et_s1ap_generate_eNB_id(void);
@@ -427,32 +426,32 @@ void et_s1ap_eNB_insert_new_instance(s1ap_eNB_instance_t *new_instance_p);
 struct s1ap_eNB_mme_data_s *et_s1ap_eNB_get_MME(s1ap_eNB_instance_t *instance_p,int32_t assoc_id, uint16_t cnx_id);
 s1ap_eNB_instance_t *et_s1ap_eNB_get_instance(instance_t instance);
 void et_s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, uint8_t *buffer,uint32_t buffer_length, uint16_t stream);
-int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packet_t * const rx_packet);
-asn_comp_rval_t* et_s1ap_is_matching(et_s1ap_t * const s1ap1, et_s1ap_t * const s1ap2, const uint32_t constraints);
-et_packet_t* et_build_packet_from_s1ap_data_ind(et_event_s1ap_data_ind_t * const s1ap_data_ind);
-int et_scenario_set_packet_received(et_packet_t * const packet);
-int  et_s1ap_process_rx_packet(et_event_s1ap_data_ind_t * const sctp_data_ind);
-void et_s1ap_eNB_handle_sctp_data_ind(sctp_data_ind_t * const sctp_data_ind);
+int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t *const spacket, et_packet_t *const rx_packet);
+asn_comp_rval_t *et_s1ap_is_matching(et_s1ap_t *const s1ap1, et_s1ap_t *const s1ap2, const uint32_t constraints);
+et_packet_t *et_build_packet_from_s1ap_data_ind(et_event_s1ap_data_ind_t *const s1ap_data_ind);
+int et_scenario_set_packet_received(et_packet_t *const packet);
+int  et_s1ap_process_rx_packet(et_event_s1ap_data_ind_t *const sctp_data_ind);
+void et_s1ap_eNB_handle_sctp_data_ind(sctp_data_ind_t *const sctp_data_ind);
 void et_s1ap_eNB_register_mme(s1ap_eNB_instance_t *instance_p,
-                                  net_ip_address_t    *mme_ip_address,
-                                  net_ip_address_t    *local_ip_addr,
-                                  uint16_t             in_streams,
-                                  uint16_t             out_streams);
+                              net_ip_address_t    *mme_ip_address,
+                              net_ip_address_t    *local_ip_addr,
+                              uint16_t             in_streams,
+                              uint16_t             out_streams);
 void et_s1ap_handle_s1_setup_message(s1ap_eNB_mme_data_t *mme_desc_p, int sctp_shutdown);
 void et_s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t *s1ap_register_eNB);
 void et_s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_association_resp_t *sctp_new_association_resp);
-void * et_s1ap_eNB_task(void *arg);
+void *et_s1ap_eNB_task(void *arg);
 //-------------------------
 int et_generate_xml_scenario(
-    const char const * xml_in_dir_name,
-    const char const * xml_in_scenario_filename,
-    const char const * enb_config_filename,
-          char const * tsml_out_scenario_filename);
+  const char const *xml_in_dir_name,
+  const char const *xml_in_scenario_filename,
+  const char const *enb_config_filename,
+  char const *tsml_out_scenario_filename);
 //-------------------------
-void timeval_add (struct timeval * const result, const struct timeval * const a, const struct timeval * const b);
-int timeval_subtract (struct timeval * const result, struct timeval * const a, struct timeval * const b);
-void et_scenario_wait_rx_packet(et_packet_t * const packet);
-void et_scenario_schedule_tx_packet(et_packet_t * packet);
+void timeval_add (struct timeval *const result, const struct timeval *const a, const struct timeval *const b);
+int timeval_subtract (struct timeval *const result, struct timeval *const a, struct timeval *const b);
+void et_scenario_wait_rx_packet(et_packet_t *const packet);
+void et_scenario_schedule_tx_packet(et_packet_t *packet);
 et_fsm_state_t et_scenario_fsm_notify_event_state_running(et_event_t event);
 et_fsm_state_t et_scenario_fsm_notify_event_state_waiting_tx(et_event_t event);
 et_fsm_state_t et_scenario_fsm_notify_event_state_waiting_rx(et_event_t event);
@@ -460,41 +459,41 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_connecting_s1c(et_event_t even
 et_fsm_state_t et_scenario_fsm_notify_event_state_null(et_event_t event);
 et_fsm_state_t et_scenario_fsm_notify_event(et_event_t event);
 //-------------------------
-void et_parse_s1ap(xmlDocPtr doc, const xmlNode const *s1ap_node, et_s1ap_t * const s1ap);
-void et_parse_sctp_data_chunk(xmlDocPtr doc, const xmlNode const *sctp_node, sctp_datahdr_t * const sctp_hdr);
-void et_parse_sctp_init_chunk(xmlDocPtr doc, const xmlNode const *sctp_node, sctp_inithdr_t * const sctp_hdr);
-void et_parse_sctp_init_ack_chunk(xmlDocPtr doc, const xmlNode const *sctp_node, sctp_initackhdr_t * const sctp_hdr);
-void et_parse_sctp(xmlDocPtr doc, const xmlNode const *sctp_node, et_sctp_hdr_t * const sctp_hdr);
-et_packet_t* et_parse_xml_packet(xmlDocPtr doc, xmlNodePtr node);
-et_scenario_t* et_generate_scenario(const char  * const et_scenario_filename);
+void et_parse_s1ap(xmlDocPtr doc, const xmlNode const *s1ap_node, et_s1ap_t *const s1ap);
+void et_parse_sctp_data_chunk(xmlDocPtr doc, const xmlNode const *sctp_node, sctp_datahdr_t *const sctp_hdr);
+void et_parse_sctp_init_chunk(xmlDocPtr doc, const xmlNode const *sctp_node, sctp_inithdr_t *const sctp_hdr);
+void et_parse_sctp_init_ack_chunk(xmlDocPtr doc, const xmlNode const *sctp_node, sctp_initackhdr_t *const sctp_hdr);
+void et_parse_sctp(xmlDocPtr doc, const xmlNode const *sctp_node, et_sctp_hdr_t *const sctp_hdr);
+et_packet_t *et_parse_xml_packet(xmlDocPtr doc, xmlNodePtr node);
+et_scenario_t *et_generate_scenario(const char   *const et_scenario_filename);
 //-------------------------
-asn_comp_rval_t * et_s1ap_ies_is_matching(const S1AP_PDU_PR present, s1ap_message * const m1, s1ap_message * const m2, const uint32_t constraints);
-void update_xpath_node_mme_ue_s1ap_id(et_s1ap_t * const s1ap, xmlNode *node, const S1ap_MME_UE_S1AP_ID_t new_id);
-void update_xpath_nodes_mme_ue_s1ap_id(et_s1ap_t * const s1ap_payload, xmlNodeSetPtr nodes, const S1ap_MME_UE_S1AP_ID_t new_id);
-int et_s1ap_update_mme_ue_s1ap_id(et_packet_t * const packet, const S1ap_MME_UE_S1AP_ID_t old_id, const S1ap_MME_UE_S1AP_ID_t new_id);
+asn_comp_rval_t *et_s1ap_ies_is_matching(const S1AP_PDU_PR present, s1ap_message *const m1, s1ap_message *const m2, const uint32_t constraints);
+void update_xpath_node_mme_ue_s1ap_id(et_s1ap_t *const s1ap, xmlNode *node, const S1AP_MME_UE_S1AP_ID_t new_id);
+void update_xpath_nodes_mme_ue_s1ap_id(et_s1ap_t *const s1ap_payload, xmlNodeSetPtr nodes, const S1AP_MME_UE_S1AP_ID_t new_id);
+int et_s1ap_update_mme_ue_s1ap_id(et_packet_t *const packet, const S1AP_MME_UE_S1AP_ID_t old_id, const S1AP_MME_UE_S1AP_ID_t new_id);
 //-------------------------
-asn_comp_rval_t * et_sctp_data_is_matching(sctp_datahdr_t * const sctp1, sctp_datahdr_t * const sctp2, const uint32_t constraints);
-asn_comp_rval_t * et_sctp_is_matching(et_sctp_hdr_t * const sctp1, et_sctp_hdr_t * const sctp2, const uint32_t constraints);
+asn_comp_rval_t *et_sctp_data_is_matching(sctp_datahdr_t *const sctp1, sctp_datahdr_t *const sctp2, const uint32_t constraints);
+asn_comp_rval_t *et_sctp_is_matching(et_sctp_hdr_t *const sctp1, et_sctp_hdr_t *const sctp2, const uint32_t constraints);
 //------------------------------------------------------------------------------
-void et_print_hex_octets(const unsigned char * const byte_stream, const unsigned long int num);
-int  et_is_file_exists ( const char const * file_nameP, const char const *file_roleP);
+void et_print_hex_octets(const unsigned char *const byte_stream, const unsigned long int num);
+int  et_is_file_exists ( const char const *file_nameP, const char const *file_roleP);
 int  et_strip_extension( char *in_filename);
-void et_get_shift_arg( char * line_argument, shift_packet_t * const shift);
-int  et_split_path     ( char * pathP, char *** resP);
+void et_get_shift_arg( char *line_argument, shift_packet_t *const shift);
+int  et_split_path     ( char *pathP, char *** resP);
 void et_display_node   ( xmlNodePtr node, unsigned int indent);
 void et_display_tree   ( xmlNodePtr node, unsigned int indent);
-char * et_ip2ip_str(const et_ip_t * const ip);
-int et_compare_et_ip_to_net_ip_address(const et_ip_t * const ip, const net_ip_address_t * const net_ip);
-int et_hex2data(unsigned char * const data, const unsigned char * const hexstring, const unsigned int len);
-sctp_cid_t et_chunk_type_str2cid(const xmlChar * const chunk_type_str);
-const char * const et_chunk_type_cid2str(const sctp_cid_t chunk_type);
-const char * const et_error_match2str(const int err);
-et_packet_action_t et_action_str2et_action_t(const xmlChar * const action);
-void et_ip_str2et_ip(const xmlChar  * const ip_str, et_ip_t * const ip);
-void et_enb_config_init(const  char const * lib_config_file_name_pP);
+char *et_ip2ip_str(const et_ip_t *const ip);
+int et_compare_et_ip_to_net_ip_address(const et_ip_t *const ip, const net_ip_address_t *const net_ip);
+int et_hex2data(unsigned char *const data, const unsigned char *const hexstring, const unsigned int len);
+sctp_cid_t et_chunk_type_str2cid(const xmlChar *const chunk_type_str);
+const char *const et_chunk_type_cid2str(const sctp_cid_t chunk_type);
+const char *const et_error_match2str(const int err);
+et_packet_action_t et_action_str2et_action_t(const xmlChar *const action);
+void et_ip_str2et_ip(const xmlChar   *const ip_str, et_ip_t *const ip);
+void et_enb_config_init(const  char const *lib_config_file_name_pP);
 const Enb_properties_array_t *et_enb_config_get(void);
 void et_eNB_app_register(const Enb_properties_array_t *enb_properties);
 void *et_eNB_app_task(void *args_p);
-int et_play_scenario(et_scenario_t* const scenario, const struct shift_packet_s *shifts);
+int et_play_scenario(et_scenario_t *const scenario, const struct shift_packet_s *shifts);
 
 #endif /* PLAY_SCENARIO_H_ */
diff --git a/openair3/TEST/EPC_TEST/play_scenario_decode.c b/openair3/TEST/EPC_TEST/play_scenario_decode.c
index be63a171c5374ddeb6fa8457b9465a1a9b632155..cbf1fbd7e9a0b131a49103b0fa2b4140f7ed899c 100644
--- a/openair3/TEST/EPC_TEST/play_scenario_decode.c
+++ b/openair3/TEST/EPC_TEST/play_scenario_decode.c
@@ -29,140 +29,18 @@
 
 #include "intertask_interface.h"
 #include "platform_types.h"
-#include "s1ap_ies_defs.h"
 #include "s1ap_eNB_decoder.h"
 #include "assertions.h"
 #include "play_scenario.h"
 
 //------------------------------------------------------------------------------
-int et_s1ap_decode_initiating_message(s1ap_message *message, S1ap_InitiatingMessage_t *initiating_p)
-{
-  int         ret = -1;
-
-  DevAssert(initiating_p != NULL);
-
-  message->procedureCode = initiating_p->procedureCode;
-  message->criticality   = initiating_p->criticality;
-
-  switch(initiating_p->procedureCode) {
-  case S1ap_ProcedureCode_id_downlinkNASTransport:
-    ret = s1ap_decode_s1ap_downlinknastransporties(&message->msg.s1ap_DownlinkNASTransportIEs,&initiating_p->value);
-    break;
-
-  case S1ap_ProcedureCode_id_InitialContextSetup:
-    ret = s1ap_decode_s1ap_initialcontextsetuprequesties(&message->msg.s1ap_InitialContextSetupRequestIEs, &initiating_p->value);
-    break;
-
-  case S1ap_ProcedureCode_id_UEContextRelease:
-    ret = s1ap_decode_s1ap_uecontextreleasecommandies(&message->msg.s1ap_UEContextReleaseCommandIEs, &initiating_p->value);
-    break;
-
-  case S1ap_ProcedureCode_id_Paging:
-    ret = s1ap_decode_s1ap_pagingies(&message->msg.s1ap_PagingIEs, &initiating_p->value);
-    break;
-
-  case S1ap_ProcedureCode_id_uplinkNASTransport:
-    ret = s1ap_decode_s1ap_uplinknastransporties (&message->msg.s1ap_UplinkNASTransportIEs, &initiating_p->value);
-    break;
-
-  case S1ap_ProcedureCode_id_S1Setup:
-    ret = s1ap_decode_s1ap_s1setuprequesties (&message->msg.s1ap_S1SetupRequestIEs, &initiating_p->value);
-    break;
-
-  case S1ap_ProcedureCode_id_initialUEMessage:
-    ret = s1ap_decode_s1ap_initialuemessageies (&message->msg.s1ap_InitialUEMessageIEs, &initiating_p->value);
-    break;
-
-  case S1ap_ProcedureCode_id_UEContextReleaseRequest:
-    ret = s1ap_decode_s1ap_uecontextreleaserequesties (&message->msg.s1ap_UEContextReleaseRequestIEs, &initiating_p->value);
-    break;
-
-  case S1ap_ProcedureCode_id_UECapabilityInfoIndication:
-    ret = s1ap_decode_s1ap_uecapabilityinfoindicationies (&message->msg.s1ap_UECapabilityInfoIndicationIEs, &initiating_p->value);
-    break;
-
-  case S1ap_ProcedureCode_id_NASNonDeliveryIndication:
-    ret = s1ap_decode_s1ap_nasnondeliveryindication_ies (&message->msg.s1ap_NASNonDeliveryIndication_IEs, &initiating_p->value);
-    break;
-
-  default:
-    AssertFatal( 0 , "Unknown procedure ID (%d) for initiating message\n",
-                 (int)initiating_p->procedureCode);
-    return -1;
-  }
-  return ret;
-}
-
-//------------------------------------------------------------------------------
-int et_s1ap_decode_successful_outcome(s1ap_message *message, S1ap_SuccessfulOutcome_t *successfullOutcome_p)
-{
-  int         ret = -1;
-
-  DevAssert(successfullOutcome_p != NULL);
-
-  message->procedureCode = successfullOutcome_p->procedureCode;
-  message->criticality   = successfullOutcome_p->criticality;
-
-  switch(successfullOutcome_p->procedureCode) {
-  case S1ap_ProcedureCode_id_S1Setup:
-    ret = s1ap_decode_s1ap_s1setupresponseies(
-            &message->msg.s1ap_S1SetupResponseIEs, &successfullOutcome_p->value);
-    break;
-
-  case S1ap_ProcedureCode_id_InitialContextSetup:
-    ret = s1ap_decode_s1ap_initialcontextsetupresponseies (&message->msg.s1ap_InitialContextSetupResponseIEs, &successfullOutcome_p->value);
-    break;
-
-  case S1ap_ProcedureCode_id_UEContextRelease:
-      ret = s1ap_decode_s1ap_uecontextreleasecompleteies (&message->msg.s1ap_UEContextReleaseCompleteIEs, &successfullOutcome_p->value);
-    break;
-
-  default:
-    AssertFatal(0, "Unknown procedure ID (%d) for successfull outcome message\n",
-               (int)successfullOutcome_p->procedureCode);
-    return -1;
-  }
-  return ret;
-}
-
-//------------------------------------------------------------------------------
-int et_s1ap_decode_unsuccessful_outcome(s1ap_message *message, S1ap_UnsuccessfulOutcome_t *unSuccessfullOutcome_p)
-{
-  int ret = -1;
-
-  DevAssert(unSuccessfullOutcome_p != NULL);
-
-  message->procedureCode = unSuccessfullOutcome_p->procedureCode;
-  message->criticality   = unSuccessfullOutcome_p->criticality;
-
-  switch(unSuccessfullOutcome_p->procedureCode) {
-  case S1ap_ProcedureCode_id_S1Setup:
-    ret = s1ap_decode_s1ap_s1setupfailureies(&message->msg.s1ap_S1SetupFailureIEs, &unSuccessfullOutcome_p->value);
-    break;
-
-  case S1ap_ProcedureCode_id_InitialContextSetup:
-    ret = s1ap_decode_s1ap_initialcontextsetupfailureies (&message->msg.s1ap_InitialContextSetupFailureIEs, &unSuccessfullOutcome_p->value);
-    break;
-
-  default:
-    AssertFatal(0,"Unknown procedure ID (%d) for unsuccessfull outcome message\n",
-               (int)unSuccessfullOutcome_p->procedureCode);
-    break;
-  }
-  return ret;
-}
-
-//------------------------------------------------------------------------------
-int et_s1ap_decode_pdu(S1AP_PDU_t * const pdu, s1ap_message * const message, const uint8_t * const buffer, const uint32_t length)
+int et_s1ap_decode_pdu(S1AP_PDU_t *const pdu, const uint8_t *const buffer, const uint32_t length)
 {
   asn_dec_rval_t dec_ret;
-
   DevAssert(buffer != NULL);
-
-  memset((void *)pdu, 0, sizeof(S1AP_PDU_t));
-
+  memset((void *)pdu, 0, sizeof(S1AP_S1AP_PDU_t));
   dec_ret = aper_decode(NULL,
-                        &asn_DEF_S1AP_PDU,
+                        &asn_DEF_S1AP_S1AP_PDU,
                         (void **)&pdu,
                         buffer,
                         length,
@@ -174,32 +52,14 @@ int et_s1ap_decode_pdu(S1AP_PDU_t * const pdu, s1ap_message * const message, con
     return -1;
   }
 
-  message->direction = pdu->present;
-
-  switch(pdu->present) {
-  case S1AP_PDU_PR_initiatingMessage:
-    return et_s1ap_decode_initiating_message(message,
-           &pdu->choice.initiatingMessage);
-
-  case S1AP_PDU_PR_successfulOutcome:
-    return et_s1ap_decode_successful_outcome(message,
-           &pdu->choice.successfulOutcome);
-
-  case S1AP_PDU_PR_unsuccessfulOutcome:
-    return et_s1ap_decode_unsuccessful_outcome(message,
-           &pdu->choice.unsuccessfulOutcome);
-
-  default:
-    AssertFatal(0, "Unknown presence (%d) or not implemented\n", (int)pdu->present);
-    break;
-  }
-  return -1;
+  return dec_ret.code;
 }
+
 //------------------------------------------------------------------------------
-void et_decode_s1ap(et_s1ap_t * const s1ap)
+void et_decode_s1ap(et_s1ap_t *const s1ap)
 {
   if (NULL != s1ap) {
-    if (et_s1ap_decode_pdu(&s1ap->pdu, &s1ap->message, s1ap->binary_stream, s1ap->binary_stream_allocated_size) < 0) {
+    if (et_s1ap_decode_pdu(&s1ap->pdu, s1ap->binary_stream, s1ap->binary_stream_allocated_size) < 0) {
       AssertFatal (0, "ERROR %s() Cannot decode S1AP message!\n", __FUNCTION__);
     }
   }
diff --git a/openair3/TEST/EPC_TEST/play_scenario_display.c b/openair3/TEST/EPC_TEST/play_scenario_display.c
index e10cbdf9bf1b285d6965dcb77c3f4db80b284c84..ef238dc3eceea0c907f316da3ed1121db4727e8f 100644
--- a/openair3/TEST/EPC_TEST/play_scenario_display.c
+++ b/openair3/TEST/EPC_TEST/play_scenario_display.c
@@ -32,11 +32,10 @@
 #include "intertask_interface.h"
 #include "platform_types.h"
 #include "assertions.h"
-#include "s1ap_ies_defs.h"
 #include "s1ap_eNB_decoder.h"
 #include "play_scenario.h"
 //-----------------------------------------------------------------------------
-void et_print_hex_octets(const unsigned char * const byte_stream, const unsigned long int num)
+void et_print_hex_octets(const unsigned char *const byte_stream, const unsigned long int num)
 {
   unsigned long octet_index = 0;
 
@@ -82,11 +81,14 @@ void et_print_hex_octets(const unsigned char * const byte_stream, const unsigned
 void et_display_node(xmlNodePtr node, unsigned int indent)
 {
   int i = 0;
+
   if (node->type == XML_ELEMENT_NODE) {
     xmlChar *path = xmlGetNodePath(node);
+
     for (i=0; i<indent; i++) {
       printf("  ");
     }
+
     if (node->children != NULL && node->children->type == XML_TEXT_NODE) {
       xmlChar *content = xmlNodeGetContent(node);
       printf("%s -> %s\n", path, content);
@@ -94,6 +96,7 @@ void et_display_node(xmlNodePtr node, unsigned int indent)
     } else {
       printf("%s\n", path);
     }
+
     xmlFree(path);
   }
 }
@@ -106,70 +109,91 @@ void et_display_tree(xmlNodePtr node, unsigned int indent)
     if (cur_node->type == XML_ELEMENT_NODE) {
       et_display_node(cur_node, indent);
     }
+
     et_display_tree(cur_node->children, indent++);
   }
 }
 //------------------------------------------------------------------------------
-void et_display_packet_s1ap_data(const et_s1ap_t * const s1ap)
+void et_display_packet_S1AP_data(const et_S1AP_t *const s1ap)
 {
   char       *message_string = NULL;
 
   if (s1ap) {
     message_string = calloc(20000, sizeof(char));
     AssertFatal (NULL != message_string, "ERROR malloc()failed!\n");
-    s1ap_string_total_size = 0;
+
     switch(s1ap->pdu.present) {
-    case S1AP_PDU_PR_initiatingMessage:
-      switch(s1ap->pdu.choice.initiatingMessage.procedureCode) {
-      case S1ap_ProcedureCode_id_downlinkNASTransport:      s1ap_xer_print_s1ap_downlinknastransport(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      case S1ap_ProcedureCode_id_InitialContextSetup:       s1ap_xer_print_s1ap_initialcontextsetuprequest(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      case S1ap_ProcedureCode_id_UEContextRelease:          s1ap_xer_print_s1ap_uecontextreleasecommand(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      case S1ap_ProcedureCode_id_Paging:                    s1ap_xer_print_s1ap_paging(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      case S1ap_ProcedureCode_id_uplinkNASTransport:        s1ap_xer_print_s1ap_uplinknastransport(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      case S1ap_ProcedureCode_id_S1Setup:                   s1ap_xer_print_s1ap_s1setuprequest(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      case S1ap_ProcedureCode_id_initialUEMessage:          s1ap_xer_print_s1ap_initialuemessage(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      case S1ap_ProcedureCode_id_UEContextReleaseRequest:   s1ap_xer_print_s1ap_uecontextreleaserequest(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      case S1ap_ProcedureCode_id_UECapabilityInfoIndication:s1ap_xer_print_s1ap_uecapabilityinfoindication(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      case S1ap_ProcedureCode_id_NASNonDeliveryIndication:  s1ap_xer_print_s1ap_nasnondeliveryindication_(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      default:
-        AssertFatal( 0 , "Unknown procedure ID (%d) for initiating message\n",
-                     (int)s1ap->pdu.choice.initiatingMessage.procedureCode);
-      }
-      break;
-    case S1AP_PDU_PR_successfulOutcome:
-      switch(s1ap->pdu.choice.successfulOutcome.procedureCode) {
-      case S1ap_ProcedureCode_id_S1Setup:                   s1ap_xer_print_s1ap_s1setupresponse(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      case S1ap_ProcedureCode_id_InitialContextSetup:       s1ap_xer_print_s1ap_initialcontextsetupresponse(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      case S1ap_ProcedureCode_id_UEContextRelease:          s1ap_xer_print_s1ap_uecontextreleasecomplete(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      default:
-        AssertFatal(0, "Unknown procedure ID (%d) for successfull outcome message\n",
-                   (int)s1ap->pdu.choice.successfulOutcome.procedureCode);
-      }
-      break;
+      case S1AP_S1AP_PDU_PR_initiatingMessage:
+        switch(s1ap->pdu.choice.initiatingMessage.procedureCode) {
+          case S1AP_ProcedureCode_id_downlinkNASTransport:      s1ap_xer_print_s1ap_downlinknastransport(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          case S1AP_ProcedureCode_id_InitialContextSetup:       s1ap_xer_print_s1ap_initialcontextsetuprequest(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          case S1AP_ProcedureCode_id_UEContextRelease:          s1ap_xer_print_s1ap_uecontextreleasecommand(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          case S1AP_ProcedureCode_id_Paging:                    s1ap_xer_print_s1ap_paging(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          case S1AP_ProcedureCode_id_uplinkNASTransport:        s1ap_xer_print_s1ap_uplinknastransport(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          case S1AP_ProcedureCode_id_S1Setup:                   s1ap_xer_print_s1ap_s1setuprequest(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          case S1AP_ProcedureCode_id_initialUEMessage:          s1ap_xer_print_s1ap_initialuemessage(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          case S1AP_ProcedureCode_id_UEContextReleaseRequest:   s1ap_xer_print_s1ap_uecontextreleaserequest(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          case S1AP_ProcedureCode_id_UECapabilityInfoIndication:s1ap_xer_print_s1ap_uecapabilityinfoindication(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          case S1AP_ProcedureCode_id_NASNonDeliveryIndication:  s1ap_xer_print_s1ap_nasnondeliveryindication_(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          default:
+            AssertFatal( 0, "Unknown procedure ID (%d) for initiating message\n",
+                         (int)s1ap->pdu.choice.initiatingMessage.procedureCode);
+        }
+
+        break;
+
+      case S1AP_S1AP_PDU_PR_successfulOutcome:
+        switch(s1ap->pdu.choice.successfulOutcome.procedureCode) {
+          case S1AP_ProcedureCode_id_S1Setup:                   s1ap_xer_print_s1ap_s1setupresponse(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          case S1AP_ProcedureCode_id_InitialContextSetup:       s1ap_xer_print_s1ap_initialcontextsetupresponse(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          case S1AP_ProcedureCode_id_UEContextRelease:          s1ap_xer_print_s1ap_uecontextreleasecomplete(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          default:
+            AssertFatal(0, "Unknown procedure ID (%d) for successfull outcome message\n",
+                        (int)s1ap->pdu.choice.successfulOutcome.procedureCode);
+        }
+
+        break;
+
+      case S1AP_S1AP_PDU_PR_unsuccessfulOutcome:
+        switch(s1ap->pdu.choice.unsuccessfulOutcome.procedureCode) {
+          case S1AP_ProcedureCode_id_S1Setup:                   s1ap_xer_print_s1ap_s1setupfailure(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          case S1AP_ProcedureCode_id_InitialContextSetup:       s1ap_xer_print_s1ap_initialcontextsetupfailure(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
+
+          default:
+            et_free_pointer(message_string);
+            AssertFatal(0,"Unknown procedure ID (%d) for unsuccessfull outcome message\n",
+                        (int)s1ap->pdu.choice.unsuccessfulOutcome.procedureCode);
+            break;
+        }
+
+        break;
 
-    case S1AP_PDU_PR_unsuccessfulOutcome:
-      switch(s1ap->pdu.choice.unsuccessfulOutcome.procedureCode) {
-      case S1ap_ProcedureCode_id_S1Setup:                   s1ap_xer_print_s1ap_s1setupfailure(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
-      case S1ap_ProcedureCode_id_InitialContextSetup:       s1ap_xer_print_s1ap_initialcontextsetupfailure(s1ap_xer__print2sp, message_string, (s1ap_message *)&s1ap->message);break;
       default:
-        et_free_pointer(message_string);
-        AssertFatal(0,"Unknown procedure ID (%d) for unsuccessfull outcome message\n",
-                   (int)s1ap->pdu.choice.unsuccessfulOutcome.procedureCode);
+        AssertFatal(0, "Unknown presence (%d) or not implemented\n", (int)s1ap->pdu.present);
         break;
-      }
-      break;
-    default:
-      AssertFatal(0, "Unknown presence (%d) or not implemented\n", (int)s1ap->pdu.present);
-      break;
     }
+
     fprintf(stdout, "\t\tSCTP.data XML dump:\n%s\n", message_string);
     et_free_pointer(message_string);
   }
 }
 //------------------------------------------------------------------------------
-void et_display_packet_sctp_init(const sctp_inithdr_t * const sctp)
+void et_display_packet_sctp_init(const sctp_inithdr_t *const sctp)
 {
-
   if (sctp) {
     fprintf(stdout, "\t\tSCTP.init.init_tag               : %u\n", sctp->init_tag);
     fprintf(stdout, "\t\tSCTP.init.a_rwnd                 : %u\n", sctp->a_rwnd);
@@ -179,9 +203,8 @@ void et_display_packet_sctp_init(const sctp_inithdr_t * const sctp)
   }
 }
 //------------------------------------------------------------------------------
-void et_display_packet_sctp_initack(const sctp_initackhdr_t * const sctp)
+void et_display_packet_sctp_initack(const sctp_initackhdr_t *const sctp)
 {
-
   if (sctp) {
     fprintf(stdout, "\t\tSCTP.initack.init_tag               : %u\n", sctp->init_tag);
     fprintf(stdout, "\t\tSCTP.initack.a_rwnd                 : %u\n", sctp->a_rwnd);
@@ -191,17 +214,20 @@ void et_display_packet_sctp_initack(const sctp_initackhdr_t * const sctp)
   }
 }
 //------------------------------------------------------------------------------
-void et_display_packet_sctp_data(const sctp_datahdr_t * const sctp)
+void et_display_packet_sctp_data(const sctp_datahdr_t *const sctp)
 {
   if (sctp) {
     fprintf(stdout, "\t\tSCTP.data.tsn                 : %u\n", sctp->tsn);
     fprintf(stdout, "\t\tSCTP.data.stream              : %u\n", sctp->stream);
     fprintf(stdout, "\t\tSCTP.data.ssn                 : %u\n", sctp->ssn);
     fprintf(stdout, "\t\tSCTP.data.ppid                : %u\n", sctp->ppid);
+
     if (sctp->ppid == 18) {
       et_display_packet_s1ap_data(&sctp->payload);
     }
+
     fprintf(stdout, "\t\tSCTP.data.binary_stream_allocated_size : %u\n", sctp->payload.binary_stream_allocated_size);
+
     if (NULL != sctp->payload.binary_stream) {
       fprintf(stdout, "\t\tSCTP.data.binary_stream       :\n");
       et_print_hex_octets(sctp->payload.binary_stream, sctp->payload.binary_stream_allocated_size);
@@ -212,29 +238,33 @@ void et_display_packet_sctp_data(const sctp_datahdr_t * const sctp)
 }
 
 //------------------------------------------------------------------------------
-void et_display_packet_sctp(const et_sctp_hdr_t * const sctp)
+void et_display_packet_sctp(const et_sctp_hdr_t *const sctp)
 {
   if (sctp) {
     fprintf(stdout, "\t\tSCTP.src_port      : %u\n", sctp->src_port);
     fprintf(stdout, "\t\tSCTP.dst_port      : %u\n", sctp->dst_port);
     fprintf(stdout, "\t\tSCTP.chunk_type    : %s\n", et_chunk_type_cid2str(sctp->chunk_type));
+
     switch (sctp->chunk_type) {
       case SCTP_CID_DATA:
         et_display_packet_sctp_data(&sctp->u.data_hdr);
         break;
+
       case SCTP_CID_INIT:
         et_display_packet_sctp_initack(&sctp->u.init_hdr);
         break;
+
       case SCTP_CID_INIT_ACK:
         et_display_packet_sctp_initack(&sctp->u.init_ack_hdr);
         break;
+
       default:
         ;
     }
   }
 }
 //------------------------------------------------------------------------------
-void et_display_packet_ip(const et_ip_hdr_t * const ip)
+void et_display_packet_ip(const et_ip_hdr_t *const ip)
 {
   if (ip) {
     fprintf(stdout, "\t\tSource address      : %s\n", et_ip2ip_str(&ip->src));
@@ -243,61 +273,73 @@ void et_display_packet_ip(const et_ip_hdr_t * const ip)
 }
 
 //------------------------------------------------------------------------------
-void et_display_packet(const et_packet_t * const packet)
+void et_display_packet(const et_packet_t *const packet)
 {
   if (packet) {
     fprintf(stdout, "-------------------------------------------------------------------------------\n");
     fprintf(stdout, "\tPacket:\tnum %u  | original frame number %u \n", packet->packet_number, packet->original_frame_number);
     fprintf(stdout, "\tPacket:\ttime relative to 1st packet           %ld.%06lu\n",
-        packet->time_relative_to_first_packet.tv_sec, packet->time_relative_to_first_packet.tv_usec);
+            packet->time_relative_to_first_packet.tv_sec, packet->time_relative_to_first_packet.tv_usec);
     fprintf(stdout, "\tPacket:\ttime relative to last tx packet       %ld.%06lu\n",
-        packet->time_relative_to_last_sent_packet.tv_sec, packet->time_relative_to_last_sent_packet.tv_usec);
+            packet->time_relative_to_last_sent_packet.tv_sec, packet->time_relative_to_last_sent_packet.tv_usec);
     fprintf(stdout, "\tPacket:\ttime relative to last_received packet %ld.%06lu\n",
-        packet->time_relative_to_last_received_packet.tv_sec, packet->time_relative_to_last_received_packet.tv_usec);
+            packet->time_relative_to_last_received_packet.tv_sec, packet->time_relative_to_last_received_packet.tv_usec);
 
     switch(packet->action) {
-    case   ET_PACKET_ACTION_S1C_SEND:
-      fprintf(stdout, "\tPacket:\tAction SEND\n");
-      break;
-    case   ET_PACKET_ACTION_S1C_RECEIVE:
-      fprintf(stdout, "\tPacket:\tAction RECEIVE\n");
-      break;
-    default:
-      fprintf(stdout, "\tPacket:\tAction UNKNOWN\n");
+      case   ET_PACKET_ACTION_S1C_SEND:
+        fprintf(stdout, "\tPacket:\tAction SEND\n");
+        break;
+
+      case   ET_PACKET_ACTION_S1C_RECEIVE:
+        fprintf(stdout, "\tPacket:\tAction RECEIVE\n");
+        break;
+
+      default:
+        fprintf(stdout, "\tPacket:\tAction UNKNOWN\n");
     }
+
     switch(packet->status) {
-    case   ET_PACKET_STATUS_NONE:
-      fprintf(stdout, "\tPacket:\tStatus NONE\n");
-      break;
-    case   ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT:
-      fprintf(stdout, "\tPacket:\tStatus NOT_TAKEN_IN_ACCOUNT\n");
-      break;
-    case   ET_PACKET_STATUS_SCHEDULED_FOR_SENDING:
-      fprintf(stdout, "\tPacket:\tStatus SCHEDULED_FOR_SENDING\n");
-      break;
-    case   ET_PACKET_STATUS_SENT:
-      fprintf(stdout, "\tPacket:\tStatus SENT\n");
-      break;
-    case   ET_PACKET_STATUS_SCHEDULED_FOR_RECEIVING:
-      fprintf(stdout, "\tPacket:\tStatus SCHEDULED_FOR_RECEIVING\n");
-      break;
-    case   ET_PACKET_STATUS_RECEIVED:
-      fprintf(stdout, "\tPacket:\tStatus RECEIVED\n");
-      break;
-    default:
-      fprintf(stdout, "\tPacket:\tStatus UNKNOWN\n");
+      case   ET_PACKET_STATUS_NONE:
+        fprintf(stdout, "\tPacket:\tStatus NONE\n");
+        break;
+
+      case   ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT:
+        fprintf(stdout, "\tPacket:\tStatus NOT_TAKEN_IN_ACCOUNT\n");
+        break;
+
+      case   ET_PACKET_STATUS_SCHEDULED_FOR_SENDING:
+        fprintf(stdout, "\tPacket:\tStatus SCHEDULED_FOR_SENDING\n");
+        break;
+
+      case   ET_PACKET_STATUS_SENT:
+        fprintf(stdout, "\tPacket:\tStatus SENT\n");
+        break;
+
+      case   ET_PACKET_STATUS_SCHEDULED_FOR_RECEIVING:
+        fprintf(stdout, "\tPacket:\tStatus SCHEDULED_FOR_RECEIVING\n");
+        break;
+
+      case   ET_PACKET_STATUS_RECEIVED:
+        fprintf(stdout, "\tPacket:\tStatus RECEIVED\n");
+        break;
+
+      default:
+        fprintf(stdout, "\tPacket:\tStatus UNKNOWN\n");
     }
+
     et_display_packet_ip(&packet->ip_hdr);
     et_display_packet_sctp(&packet->sctp_hdr);
   }
 }
 //------------------------------------------------------------------------------
-void et_display_scenario(const et_scenario_t * const scenario)
+void et_display_scenario(const et_scenario_t *const scenario)
 {
   et_packet_t *packet = NULL;
+
   if (scenario) {
-    fprintf(stdout, "Scenario: %s\n", (scenario->name != NULL) ? (char*)scenario->name:"UNKNOWN NAME");
+    fprintf(stdout, "Scenario: %s\n", (scenario->name != NULL) ? (char *)scenario->name:"UNKNOWN NAME");
     packet = scenario->list_packet;
+
     while (packet) {
       et_display_packet(packet);
       packet = packet->next;
diff --git a/openair3/TEST/EPC_TEST/play_scenario_fsm.c b/openair3/TEST/EPC_TEST/play_scenario_fsm.c
index 1589b83cae6b58bc651f4b0debaed2e59b5a3505..8d8f5ec92145602141b4b007ff160b4a0c8653c0 100644
--- a/openair3/TEST/EPC_TEST/play_scenario_fsm.c
+++ b/openair3/TEST/EPC_TEST/play_scenario_fsm.c
@@ -34,7 +34,6 @@
 #include "platform_types.h"
 #include "assertions.h"
 #include "play_scenario.h"
-#include "s1ap_ies_defs.h"
 #include "play_scenario_s1ap_eNB_defs.h"
 #include "timer.h"
 
@@ -47,7 +46,7 @@ et_fsm_state_t    g_fsm_state = ET_FSM_STATE_NULL;
 uint32_t          g_constraints = ET_BIT_MASK_MATCH_SCTP_STREAM | ET_BIT_MASK_MATCH_SCTP_SSN;
 //------------------------------------------------------------------------------
 // it is assumed that if a time is negative tv_sec and tv_usec are both negative
-void timeval_add (struct timeval * const result, const struct timeval * const a, const struct timeval * const b)
+void timeval_add (struct timeval *const result, const struct timeval *const a, const struct timeval *const b)
 {
   AssertFatal(((a->tv_sec <= 0) && (a->tv_usec <= 0)) || ((a->tv_sec >= 0) && (a->tv_usec >= 0)), " Bad time format arg a\n");
   AssertFatal(((b->tv_sec <= 0) && (b->tv_usec <= 0)) || ((b->tv_sec >= 0) && (b->tv_usec >= 0)), " Bad time format arg b\n");
@@ -55,6 +54,7 @@ void timeval_add (struct timeval * const result, const struct timeval * const a,
   long long int r = a->tv_usec + b->tv_usec + (a->tv_sec + b->tv_sec) * 1000000;
   result->tv_sec  = r / (long long int)1000000;
   result->tv_usec = r % (long long int)1000000;
+
   if ((result != a) && (result != b)) {
     LOG_D(ENB_APP, "timeval_add(%ld.%06d, %ld.%06d)=%ld.%06d\n", a->tv_sec, a->tv_usec, b->tv_sec, b->tv_usec, result->tv_sec, result->tv_usec);
   }
@@ -63,7 +63,7 @@ void timeval_add (struct timeval * const result, const struct timeval * const a,
 //------------------------------------------------------------------------------
 // it is assumed that if a time is negative tv_sec and tv_usec are both negative
 // return true if result is positive
-int timeval_subtract (struct timeval * const result, struct timeval * const a, struct timeval * const b)
+int timeval_subtract (struct timeval *const result, struct timeval *const a, struct timeval *const b)
 {
   AssertFatal(((a->tv_sec <= 0) && (a->tv_usec <= 0)) || ((a->tv_sec >= 0) && (a->tv_usec >= 0)), " Bad time format arg a\n");
   AssertFatal(((b->tv_sec <= 0) && (b->tv_usec <= 0)) || ((b->tv_sec >= 0) && (b->tv_usec >= 0)), " Bad time format arg b\n");
@@ -71,26 +71,30 @@ int timeval_subtract (struct timeval * const result, struct timeval * const a, s
   long long int r = a->tv_usec - b->tv_usec + (a->tv_sec - b->tv_sec) * 1000000;
   result->tv_sec  = r / (long long int)1000000;
   result->tv_usec = r % (long long int)1000000;
+
   if ((result != a) && (result != b)) {
     LOG_D(ENB_APP, "timeval_subtract(%ld.%06d, %ld.%06d)=%ld.%06d\n", a->tv_sec, a->tv_usec, b->tv_sec, b->tv_usec, result->tv_sec, result->tv_usec);
   }
+
   return (result->tv_sec >= 0) && (result->tv_usec >= 0);
 }
 
 //------------------------------------------------------------------------------
-void et_scenario_wait_rx_packet(et_packet_t * const packet)
+void et_scenario_wait_rx_packet(et_packet_t *const packet)
 {
   packet->status = ET_PACKET_STATUS_SCHEDULED_FOR_RECEIVING;
   g_fsm_state    = ET_FSM_STATE_WAITING_RX_EVENT;
+
   if (timer_setup (ET_FSM_STATE_WAITING_RX_EVENT_DELAY_SEC, 0, TASK_S1AP, INSTANCE_DEFAULT, TIMER_ONE_SHOT,
-        packet, &packet->timer_id) < 0) {
+                   packet, &packet->timer_id) < 0) {
     AssertFatal(0, " Can not start waiting RX event timer\n");
   }
+
   g_scenario->timer_count++;
   LOG_D(ENB_APP, "Waiting RX packet num %d original frame number %u\n", packet->packet_number, packet->original_frame_number);
 }
 //------------------------------------------------------------------------------
-void et_scenario_schedule_tx_packet(et_packet_t * packet)
+void et_scenario_schedule_tx_packet(et_packet_t *packet)
 {
   s1ap_eNB_instance_t *s1ap_eNB_instance = NULL;
   struct timeval  now                   = { .tv_sec = 0, .tv_usec = 0 };
@@ -101,11 +105,9 @@ void et_scenario_schedule_tx_packet(et_packet_t * packet)
   int             last_packet_was_rx    = 0;
   int             we_are_too_late       = 0;
   int             original_frame_number = -1;
-
   AssertFatal(NULL != packet, "packet argument is NULL");
   s1ap_eNB_instance = et_s1ap_eNB_get_instance(packet->enb_instance);
   AssertFatal(NULL != s1ap_eNB_instance, "Cannot get s1ap_eNB_instance_t for eNB instance %d", packet->enb_instance);
-
   LOG_D(ENB_APP, "%s\n", __FUNCTION__);
   g_fsm_state = ET_FSM_STATE_WAITING_TX_EVENT;
 
@@ -118,8 +120,8 @@ void et_scenario_schedule_tx_packet(et_packet_t * packet)
       timeval_subtract(&offset_last_rx_packet,&now,&g_scenario->time_last_rx_packet);
       LOG_D(ENB_APP, "offset_last_tx_packet=%ld.%06d\n", offset_last_tx_packet.tv_sec, offset_last_tx_packet.tv_usec);
       LOG_D(ENB_APP, "offset_last_rx_packet=%ld.%06d\n", offset_last_rx_packet.tv_sec, offset_last_rx_packet.tv_usec);
-
       last_packet_was_rx = timeval_subtract(&offset_tx_rx,&offset_last_tx_packet,&offset_last_rx_packet);
+
       if (last_packet_was_rx) {
         LOG_D(ENB_APP, "last_packet_was_rx\n");
         we_are_too_late = timeval_subtract(&offset,&offset_last_rx_packet,&packet->time_relative_to_last_received_packet);
@@ -129,30 +131,32 @@ void et_scenario_schedule_tx_packet(et_packet_t * packet)
         we_are_too_late = timeval_subtract(&offset,&offset_last_tx_packet,&packet->time_relative_to_last_sent_packet);
         LOG_D(ENB_APP, "we_are_too_late=%d, offset=%ld.%06d\n", we_are_too_late, offset.tv_sec, offset.tv_usec);
       }
-      if ((0 == we_are_too_late) && (0 == g_max_speed)){
+
+      if ((0 == we_are_too_late) && (0 == g_max_speed)) {
         // set timer
-        if ((offset.tv_sec <= 0) || (offset.tv_usec <= 0)){
+        if ((offset.tv_sec <= 0) || (offset.tv_usec <= 0)) {
           offset.tv_sec = -offset.tv_sec;
           offset.tv_usec = -offset.tv_usec;
         }
 
         LOG_D(ENB_APP, "Send packet num %u original frame number %u in %ld.%06d sec\n",
-            packet->packet_number, packet->original_frame_number, offset.tv_sec, offset.tv_usec);
-
+              packet->packet_number, packet->original_frame_number, offset.tv_sec, offset.tv_usec);
         packet->status = ET_PACKET_STATUS_SCHEDULED_FOR_SENDING;
+
         if (timer_setup (offset.tv_sec, offset.tv_usec, TASK_S1AP, INSTANCE_DEFAULT, TIMER_ONE_SHOT,packet, &packet->timer_id) < 0) {
           AssertFatal(0, " Can not start TX event timer\n");
         }
+
         g_scenario->timer_count++;
         // Done g_fsm_state = ET_FSM_STATE_WAITING_TX_EVENT;
       } else {
         // send immediately
         AssertFatal(0 == gettimeofday(&packet->timestamp_packet, NULL), "gettimeofday() Failed");
         original_frame_number = packet->original_frame_number;
+
         do {
           g_scenario->time_last_tx_packet.tv_sec  = packet->timestamp_packet.tv_sec;
           g_scenario->time_last_tx_packet.tv_usec = packet->timestamp_packet.tv_usec;
-
           LOG_D(ENB_APP, "Sending packet num %d original frame number %u immediately\n",packet->packet_number, packet->original_frame_number);
           et_s1ap_eNB_itti_send_sctp_data_req(
             packet->enb_instance,
@@ -164,13 +168,17 @@ void et_scenario_schedule_tx_packet(et_packet_t * packet)
           g_scenario->next_packet = g_scenario->next_packet->next;
           packet = packet->next;
         } while ((NULL != packet) && (packet->original_frame_number == original_frame_number));
+
         g_fsm_state = ET_FSM_STATE_RUNNING;
       }
+
       break;
+
     case SCTP_CID_INIT:
     case SCTP_CID_INIT_ACK:
       AssertFatal(0, "Invalid case TX packet SCTP_CID_INIT or SCTP_CID_INIT_ACK");
       break;
+
     default:
       AssertFatal(0, "Invalid case TX packet SCTP_CID %d", packet->sctp_hdr.chunk_type);
   }
@@ -178,23 +186,22 @@ void et_scenario_schedule_tx_packet(et_packet_t * packet)
 //------------------------------------------------------------------------------
 et_fsm_state_t et_scenario_fsm_notify_event_state_running(et_event_t event)
 {
-
-  switch (event.code){
+  switch (event.code) {
     case ET_EVENT_TICK:
       while (NULL != g_scenario->next_packet) {
         LOG_D(ENB_APP, "EVENT_TICK: Considering packet num %d original frame number %u\n", g_scenario->next_packet->packet_number, g_scenario->next_packet->original_frame_number);
+
         switch (g_scenario->next_packet->sctp_hdr.chunk_type) {
           case SCTP_CID_DATA :
+
             // no init in this scenario, may be sub-scenario
             if (g_scenario->next_packet->action == ET_PACKET_ACTION_S1C_SEND) {
               if (g_scenario->next_packet->status == ET_PACKET_STATUS_NONE) {
                 et_scenario_schedule_tx_packet(g_scenario->next_packet);
                 pthread_mutex_unlock(&g_fsm_lock);
-
                 et_event_t continue_event;
                 continue_event.code = ET_EVENT_TICK;
                 et_scenario_fsm_notify_event(continue_event);
-
                 return g_fsm_state;
               } else if (g_scenario->next_packet->status != ET_PACKET_STATUS_SCHEDULED_FOR_SENDING) {
                 AssertFatal(0, "Invalid packet status %d", g_scenario->next_packet->status);
@@ -202,7 +209,6 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_running(et_event_t event)
             } else if (g_scenario->next_packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
               if (g_scenario->next_packet->status == ET_PACKET_STATUS_RECEIVED) {
                 g_scenario->next_packet    = g_scenario->next_packet->next;
-
               } else if (g_scenario->next_packet->status == ET_PACKET_STATUS_NONE) {
                 et_scenario_wait_rx_packet(g_scenario->next_packet);
                 pthread_mutex_unlock(&g_fsm_lock);
@@ -213,6 +219,7 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_running(et_event_t event)
             } else {
               AssertFatal(0, "Invalid packet action %d", g_scenario->next_packet->action);
             }
+
             break;
 
           case SCTP_CID_INIT:
@@ -224,8 +231,8 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_running(et_event_t event)
           case SCTP_CID_ECN_ECNE:
           case SCTP_CID_ECN_CWR:
             LOG_D(ENB_APP, "EVENT_TICK: Ignoring packet num %d SCTP CID %s\n",
-                g_scenario->next_packet->packet_number,
-                et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
+                  g_scenario->next_packet->packet_number,
+                  et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
             g_scenario->next_packet->status = ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT;
             g_scenario->next_packet = g_scenario->next_packet->next;
             break;
@@ -236,20 +243,22 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_running(et_event_t event)
           case SCTP_CID_ERROR:
           case SCTP_CID_SHUTDOWN_COMPLETE:
             AssertFatal(0, "The scenario should be cleaned (packet %s cannot be processed at this time)",
-                et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
+                        et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
             break;
 
           default:
             LOG_D(ENB_APP, "EVENT_TICK: Ignoring packet num %d SCTP CID %s\n",
-                g_scenario->next_packet->packet_number,
-                et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
+                  g_scenario->next_packet->packet_number,
+                  et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
             g_scenario->next_packet->status = ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT;
             g_scenario->next_packet = g_scenario->next_packet->next;
         }
       }
+
       fprintf(stderr, "No Packet found in this scenario: %s\n", g_scenario->name);
       g_fsm_state = ET_FSM_STATE_NULL;
       pthread_mutex_unlock(&g_fsm_lock);
+
       if (0 == g_scenario->timer_count) {
         fprintf(stderr, "End of scenario: %s\n", g_scenario->name);
         fflush(stderr);
@@ -257,21 +266,27 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_running(et_event_t event)
         return 0;
         //exit(0);
       }
+
       fprintf(stderr, "Remaining timers running: %d\n", g_scenario->timer_count);
       return g_fsm_state;
       break;
+
     case ET_EVENT_RX_PACKET_TIME_OUT:
       AssertFatal(0, "Event ET_EVENT_RX_PACKET_TIME_OUT not handled in FSM state ET_FSM_STATE_RUNNING");
       break;
+
     case ET_EVENT_TX_TIMED_PACKET:
       AssertFatal(0, "Event ET_EVENT_TX_TIMED_PACKET not handled in FSM state ET_FSM_STATE_RUNNING");
       break;
+
     case ET_EVENT_RX_S1AP:
       et_s1ap_process_rx_packet(&event.u.s1ap_data_ind);
       break;
+
     default:
       AssertFatal(0, "Case event %d not handled in ET_FSM_STATE_RUNNING", event.code);
   }
+
   pthread_mutex_unlock(&g_fsm_lock);
   return 0;
 }
@@ -283,7 +298,7 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_waiting_tx(et_event_t event)
   int           original_frame_number = -1;
   et_packet_t  *packet                = NULL;
 
-  switch (event.code){
+  switch (event.code) {
     case ET_EVENT_TICK:
       fprintf(stdout, "EVENT_TICK: waiting for tx event\n");
       break;
@@ -296,23 +311,23 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_waiting_tx(et_event_t event)
       // send immediately
       packet = event.u.tx_timed_packet;
       AssertFatal(0 == gettimeofday(&packet->timestamp_packet, NULL), "gettimeofday() Failed");
-
       original_frame_number = packet->original_frame_number;
+
       do {
         g_scenario->time_last_tx_packet.tv_sec  = packet->timestamp_packet.tv_sec;
         g_scenario->time_last_tx_packet.tv_usec = packet->timestamp_packet.tv_usec;
-
         LOG_D(ENB_APP, "Sending packet num %d original frame number %u immediately\n",packet->packet_number, packet->original_frame_number);
         et_s1ap_eNB_itti_send_sctp_data_req(
-            packet->enb_instance,
-            packet->sctp_hdr.u.data_hdr.assoc_id,
-            packet->sctp_hdr.u.data_hdr.payload.binary_stream,
-            packet->sctp_hdr.u.data_hdr.payload.binary_stream_allocated_size,
-            packet->sctp_hdr.u.data_hdr.stream);
+          packet->enb_instance,
+          packet->sctp_hdr.u.data_hdr.assoc_id,
+          packet->sctp_hdr.u.data_hdr.payload.binary_stream,
+          packet->sctp_hdr.u.data_hdr.payload.binary_stream_allocated_size,
+          packet->sctp_hdr.u.data_hdr.stream);
         packet->status = ET_PACKET_STATUS_SENT;
         packet = packet->next;
         g_scenario->next_packet    = packet;
       } while ( (NULL != packet) && (packet->original_frame_number == original_frame_number));
+
       g_fsm_state = ET_FSM_STATE_RUNNING;
       break;
 
@@ -320,6 +335,7 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_waiting_tx(et_event_t event)
     default:
       AssertFatal(0, "Case event %d not handled in ET_FSM_STATE_WAITING_TX", event.code);
   }
+
   pthread_mutex_unlock(&g_fsm_lock);
   return 0;
 }
@@ -328,7 +344,8 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_waiting_tx(et_event_t event)
 et_fsm_state_t et_scenario_fsm_notify_event_state_waiting_rx(et_event_t event)
 {
   int rv = 0;
-  switch (event.code){
+
+  switch (event.code) {
     case ET_EVENT_TICK:
       fprintf(stdout, "EVENT_TICK: waiting for rx event\n");
       break;
@@ -341,16 +358,19 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_waiting_rx(et_event_t event)
 
     case ET_EVENT_RX_S1AP:
       rv = et_s1ap_process_rx_packet(&event.u.s1ap_data_ind);
+
       // waited packet
       if (rv == 0) {
         g_fsm_state = ET_FSM_STATE_RUNNING;
       }
+
       break;
 
     case ET_EVENT_TX_TIMED_PACKET:
     default:
       AssertFatal(0, "Case event %d not handled in ET_FSM_STATE_WAITING_RX", event.code);
   }
+
   pthread_mutex_unlock(&g_fsm_lock);
   return 0;
 }
@@ -358,8 +378,7 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_waiting_rx(et_event_t event)
 //------------------------------------------------------------------------------
 et_fsm_state_t et_scenario_fsm_notify_event_state_connecting_s1c(et_event_t event)
 {
-
-  switch (event.code){
+  switch (event.code) {
     case ET_EVENT_TICK:
       break;
 
@@ -370,22 +389,20 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_connecting_s1c(et_event_t even
       while (NULL != g_scenario->next_packet) {
         switch (g_scenario->next_packet->sctp_hdr.chunk_type) {
           case SCTP_CID_DATA :
+
             // no init in this scenario, may be sub-scenario
             if (g_scenario->next_packet->action == ET_PACKET_ACTION_S1C_SEND) {
               et_scenario_schedule_tx_packet(g_scenario->next_packet);
               pthread_mutex_unlock(&g_fsm_lock);
-
               et_event_t continue_event;
               continue_event.code = ET_EVENT_TICK;
               et_scenario_fsm_notify_event(continue_event);
-
               return g_fsm_state;
             } else if (g_scenario->next_packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
               if (g_scenario->next_packet->status == ET_PACKET_STATUS_RECEIVED) {
                 g_scenario->last_rx_packet = g_scenario->next_packet;
                 g_scenario->time_last_rx_packet = g_scenario->last_rx_packet->timestamp_packet;
                 g_scenario->next_packet    = g_scenario->next_packet->next;
-
               } else if (g_scenario->next_packet->status == ET_PACKET_STATUS_NONE) {
                 et_scenario_wait_rx_packet(g_scenario->next_packet);
                 pthread_mutex_unlock(&g_fsm_lock);
@@ -396,7 +413,8 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_connecting_s1c(et_event_t even
             } else {
               AssertFatal(0, "Invalid packet action %d", g_scenario->next_packet->action);
             }
-             break;
+
+            break;
 
           case SCTP_CID_INIT:
           case SCTP_CID_INIT_ACK:
@@ -416,7 +434,7 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_connecting_s1c(et_event_t even
           case SCTP_CID_ERROR:
           case SCTP_CID_SHUTDOWN_COMPLETE:
             AssertFatal(0, "The scenario should be cleaned (packet %s cannot be processed at this time)",
-                et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
+                        et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
             break;
 
           default:
@@ -424,15 +442,18 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_connecting_s1c(et_event_t even
             g_scenario->next_packet = g_scenario->next_packet->next;
         }
       }
+
       fprintf(stderr, "No Packet found in this scenario: %s\n", g_scenario->name);
       g_fsm_state = ET_FSM_STATE_NULL;
       pthread_mutex_unlock(&g_fsm_lock);
+
       if (0 == g_scenario->timer_count) {
         fprintf(stderr, "End of scenario: %s\n", g_scenario->name);
         fflush(stderr);
         fflush(stdout);
         exit(0);
       }
+
       fprintf(stderr, "Remaining timers running: %d\n", g_scenario->timer_count);
       return g_fsm_state;
       break;
@@ -440,13 +461,14 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_connecting_s1c(et_event_t even
     default:
       AssertFatal(0, "Case event %d not handled in ET_FSM_STATE_CONNECTING_S1C", event.code);
   }
+
   pthread_mutex_unlock(&g_fsm_lock);
   return 0;
 }
 //------------------------------------------------------------------------------
 et_fsm_state_t et_scenario_fsm_notify_event_state_null(et_event_t event)
 {
-  switch (event.code){
+  switch (event.code) {
     case ET_EVENT_TICK:
       break;
 
@@ -459,24 +481,21 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_null(et_event_t event)
 
       while (NULL != g_scenario->next_packet) {
         switch (g_scenario->next_packet->sctp_hdr.chunk_type) {
-
           case SCTP_CID_DATA :
+
             // no init in this scenario, may be sub-scenario, ...
             if (g_scenario->next_packet->action == ET_PACKET_ACTION_S1C_SEND) {
               et_scenario_schedule_tx_packet(g_scenario->next_packet);
               pthread_mutex_unlock(&g_fsm_lock);
-
               et_event_t continue_event;
               continue_event.code = ET_EVENT_TICK;
               et_scenario_fsm_notify_event(continue_event);
-
               return g_fsm_state;
             } else if (g_scenario->next_packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
               if (g_scenario->next_packet->status == ET_PACKET_STATUS_RECEIVED) {
                 g_scenario->last_rx_packet = g_scenario->next_packet;
                 g_scenario->time_last_rx_packet = g_scenario->last_rx_packet->timestamp_packet;
                 g_scenario->next_packet    = g_scenario->next_packet->next;
-
               } else if (g_scenario->next_packet->status == ET_PACKET_STATUS_NONE) {
                 et_scenario_wait_rx_packet(g_scenario->next_packet);
                 pthread_mutex_unlock(&g_fsm_lock);
@@ -487,6 +506,7 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_null(et_event_t event)
             } else {
               AssertFatal(0, "Invalid packet action %d", g_scenario->next_packet->action);
             }
+
             break;
 
           case SCTP_CID_INIT:
@@ -519,7 +539,7 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_null(et_event_t event)
           case SCTP_CID_ERROR:
           case SCTP_CID_SHUTDOWN_COMPLETE:
             AssertFatal(0, "The scenario should be cleaned (packet %s cannot be processed at this time)",
-                et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
+                        et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
             break;
 
           default:
@@ -527,6 +547,7 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_null(et_event_t event)
             g_scenario->next_packet = g_scenario->next_packet->next;
         }
       }
+
       fprintf(stderr, "No Useful packet found in this scenario: %s\n", g_scenario->name);
       g_fsm_state = ET_FSM_STATE_NULL;
       pthread_mutex_unlock(&g_fsm_lock);
@@ -536,6 +557,7 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_null(et_event_t event)
     default:
       AssertFatal(0, "Case event %d not handled in ET_FSM_STATE_NULL", event.code);
   }
+
   return 0;
 }
 
@@ -543,17 +565,23 @@ et_fsm_state_t et_scenario_fsm_notify_event_state_null(et_event_t event)
 et_fsm_state_t et_scenario_fsm_notify_event(et_event_t event)
 {
   AssertFatal((event.code >= ET_EVENT_START) && (event.code < ET_EVENT_END), "Unknown et_event_t.code %d", event.code);
-
   pthread_mutex_lock(&g_fsm_lock);
-  switch (g_fsm_state){
+
+  switch (g_fsm_state) {
     case ET_FSM_STATE_NULL: return et_scenario_fsm_notify_event_state_null(event); break;
+
     case ET_FSM_STATE_CONNECTING_S1C: return et_scenario_fsm_notify_event_state_connecting_s1c(event); break;
+
     case ET_FSM_STATE_WAITING_TX_EVENT: return et_scenario_fsm_notify_event_state_waiting_tx(event); break;
+
     case ET_FSM_STATE_WAITING_RX_EVENT: return et_scenario_fsm_notify_event_state_waiting_rx(event); break;
+
     case ET_FSM_STATE_RUNNING: return et_scenario_fsm_notify_event_state_running(event); break;
+
     default:
       AssertFatal(0, "Case fsm_state %d not handled", g_fsm_state);
   }
+
   pthread_mutex_unlock(&g_fsm_lock);
   return g_fsm_state;
 }
diff --git a/openair3/TEST/EPC_TEST/play_scenario_s1ap.c b/openair3/TEST/EPC_TEST/play_scenario_s1ap.c
index 95df0fc306c0bf2ee72ca6275da11363166f693e..aca2b66bca32f9b9683b5d3ba04f068b30fc47b2 100644
--- a/openair3/TEST/EPC_TEST/play_scenario_s1ap.c
+++ b/openair3/TEST/EPC_TEST/play_scenario_s1ap.c
@@ -60,6 +60,7 @@ int et_s1ap_eNB_compare_assoc_id(
     if (p1->cnx_id < p2->cnx_id) {
       return -1;
     }
+
     if (p1->cnx_id > p2->cnx_id) {
       return 1;
     }
@@ -67,6 +68,7 @@ int et_s1ap_eNB_compare_assoc_id(
     if (p1->assoc_id < p2->assoc_id) {
       return -1;
     }
+
     if (p1->assoc_id > p2->assoc_id) {
       return 1;
     }
@@ -82,16 +84,12 @@ uint32_t et_s1ap_generate_eNB_id(void)
   char     hostname[50];
   int      ret;
   uint32_t eNB_id;
-
   /* Retrieve the host name */
   ret = gethostname(hostname, sizeof(hostname));
   DevAssert(ret == 0);
-
   out = crypt(hostname, "eurecom");
   DevAssert(out != NULL);
-
   eNB_id = ((out[0] << 24) | (out[1] << 16) | (out[2] << 8) | out[3]);
-
   return eNB_id;
 }
 //------------------------------------------------------------------------------
@@ -111,7 +109,6 @@ void et_s1ap_eNB_prepare_internal_data(void)
 void et_s1ap_eNB_insert_new_instance(s1ap_eNB_instance_t *new_instance_p)
 {
   DevAssert(new_instance_p != NULL);
-
   STAILQ_INSERT_TAIL(&s1ap_eNB_internal_data.s1ap_eNB_instances_head,
                      new_instance_p, s1ap_eNB_entries);
 }
@@ -123,9 +120,7 @@ struct s1ap_eNB_mme_data_s *et_s1ap_eNB_get_MME(
 {
   struct s1ap_eNB_mme_data_s  temp;
   struct s1ap_eNB_mme_data_s *found;
-
   memset(&temp, 0, sizeof(struct s1ap_eNB_mme_data_s));
-
   temp.assoc_id = assoc_id;
   temp.cnx_id   = cnx_id;
 
@@ -149,7 +144,6 @@ struct s1ap_eNB_mme_data_s *et_s1ap_eNB_get_MME(
 s1ap_eNB_instance_t *et_s1ap_eNB_get_instance(instance_t instance)
 {
   s1ap_eNB_instance_t *temp = NULL;
-
   STAILQ_FOREACH(temp, &s1ap_eNB_internal_data.s1ap_eNB_instances_head,
                  s1ap_eNB_entries) {
     if (temp->instance == instance) {
@@ -157,208 +151,210 @@ s1ap_eNB_instance_t *et_s1ap_eNB_get_instance(instance_t instance)
       return temp;
     }
   }
-
   return NULL;
 }
 //------------------------------------------------------------------------------
 void et_s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, uint8_t *buffer,
-                                      uint32_t buffer_length, uint16_t stream)
+    uint32_t buffer_length, uint16_t stream)
 {
   MessageDef      *message_p;
   sctp_data_req_t *sctp_data_req;
-
   message_p = itti_alloc_new_message(TASK_S1AP, SCTP_DATA_REQ);
-
   sctp_data_req = &message_p->ittiMsg.sctp_data_req;
-
   sctp_data_req->assoc_id      = assoc_id;
   sctp_data_req->buffer        = buffer;
   sctp_data_req->buffer_length = buffer_length;
   sctp_data_req->stream        = stream;
-
   itti_send_msg_to_task(TASK_SCTP, instance, message_p);
 }
 //------------------------------------------------------------------------------
-int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packet_t * const rx_packet)
+int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t *const spacket, et_packet_t *const rx_packet)
 {
   S1ap_MME_UE_S1AP_ID_t scenario_mme_ue_s1ap_id = 0;
   S1ap_MME_UE_S1AP_ID_t rx_mme_ue_s1ap_id       = 0;
   S1AP_PDU_PR           present;
-
   present = rx_packet->sctp_hdr.u.data_hdr.payload.pdu.present;
 
   switch (rx_packet->sctp_hdr.u.data_hdr.payload.message.procedureCode) {
-    case  S1ap_ProcedureCode_id_HandoverPreparation:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
+    case  S1AP_ProcedureCode_id_HandoverPreparation:
+      if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequiredIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequiredIEs.mme_ue_s1ap_id;
       } else {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverCommandIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverCommandIEs.mme_ue_s1ap_id;
       }
+
       break;
 
-    case  S1ap_ProcedureCode_id_HandoverResourceAllocation:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
+    case  S1AP_ProcedureCode_id_HandoverResourceAllocation:
+      if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequestIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequestIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
+      } else if (present == S1AP_S1AP_PDU_PR_successfulOutcome) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequestAcknowledgeIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequestAcknowledgeIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_unsuccessfulOutcome) {
+      } else if (present == S1AP_S1AP_PDU_PR_unsuccessfulOutcome) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverFailureIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverFailureIEs.mme_ue_s1ap_id;
       }
+
       break;
 
-    case  S1ap_ProcedureCode_id_HandoverNotification:
+    case  S1AP_ProcedureCode_id_HandoverNotification:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverNotifyIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverNotifyIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_PathSwitchRequest:
+    case  S1AP_ProcedureCode_id_PathSwitchRequest:
       //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_PathSwitchRequestIEs.mme_ue_s1ap_id;
       //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_PathSwitchRequestIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_HandoverCancel:
+    case  S1AP_ProcedureCode_id_HandoverCancel:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverCancelIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverCancelIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_E_RABSetup:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
+    case  S1AP_ProcedureCode_id_E_RABSetup:
+      if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABSetupRequestIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABSetupRequestIEs.mme_ue_s1ap_id;
       } else  {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABSetupResponseIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABSetupResponseIEs.mme_ue_s1ap_id;
       }
+
       break;
 
-    case  S1ap_ProcedureCode_id_E_RABModify:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
+    case  S1AP_ProcedureCode_id_E_RABModify:
+      if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABModifyRequestIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABModifyRequestIEs.mme_ue_s1ap_id;
       } else  {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABModifyResponseIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABModifyResponseIEs.mme_ue_s1ap_id;
       }
+
       break;
 
-    case  S1ap_ProcedureCode_id_E_RABRelease:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
+    case  S1AP_ProcedureCode_id_E_RABRelease:
+      if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABReleaseCommandIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABReleaseCommandIEs.mme_ue_s1ap_id;
       } else  {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABReleaseResponseIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABReleaseResponseIEs.mme_ue_s1ap_id;
       }
+
       break;
 
-    case  S1ap_ProcedureCode_id_E_RABReleaseIndication:
+    case  S1AP_ProcedureCode_id_E_RABReleaseIndication:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABReleaseIndicationIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABReleaseIndicationIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_InitialContextSetup:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
+    case  S1AP_ProcedureCode_id_InitialContextSetup:
+      if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_InitialContextSetupRequestIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_InitialContextSetupRequestIEs.mme_ue_s1ap_id;
       } else  {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_InitialContextSetupResponseIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_InitialContextSetupResponseIEs.mme_ue_s1ap_id;
       }
+
       break;
 
-    case  S1ap_ProcedureCode_id_Paging:
+    case  S1AP_ProcedureCode_id_Paging:
       //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_PagingIEs.mme_ue_s1ap_id;
       //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_PagingIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_downlinkNASTransport:
+    case  S1AP_ProcedureCode_id_downlinkNASTransport:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkNASTransportIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkNASTransportIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_initialUEMessage:
+    case  S1AP_ProcedureCode_id_initialUEMessage:
       //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_InitialUEMessageIEs.mme_ue_s1ap_id;
       //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_InitialUEMessageIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_uplinkNASTransport:
+    case  S1AP_ProcedureCode_id_uplinkNASTransport:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkNASTransportIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkNASTransportIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_Reset:
+    case  S1AP_ProcedureCode_id_Reset:
       //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ResetIEs.mme_ue_s1ap_id;
       //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ResetIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_ErrorIndication:
+    case  S1AP_ProcedureCode_id_ErrorIndication:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ErrorIndicationIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ErrorIndicationIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_NASNonDeliveryIndication:
+    case  S1AP_ProcedureCode_id_NASNonDeliveryIndication:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_NASNonDeliveryIndication_IEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_NASNonDeliveryIndication_IEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_S1Setup:
-      /*if (present == S1AP_PDU_PR_initiatingMessage) {
+    case  S1AP_ProcedureCode_id_S1Setup:
+      /*if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_S1SetupRequestIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_S1SetupRequestIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
+      } else if (present == S1AP_S1AP_PDU_PR_successfulOutcome) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_S1SetupResponseIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_S1SetupResponseIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_unsuccessfulOutcome) {
+      } else if (present == S1AP_S1AP_PDU_PR_unsuccessfulOutcome) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_S1SetupFailureIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_S1SetupFailureIEs.mme_ue_s1ap_id;
       }*/
       break;
 
-    case  S1ap_ProcedureCode_id_UEContextReleaseRequest:
+    case  S1AP_ProcedureCode_id_UEContextReleaseRequest:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseRequestIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseRequestIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_DownlinkS1cdma2000tunneling:
+    case  S1AP_ProcedureCode_id_DownlinkS1cdma2000tunneling:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkS1cdma2000tunnelingIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkS1cdma2000tunnelingIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_UplinkS1cdma2000tunneling:
+    case  S1AP_ProcedureCode_id_UplinkS1cdma2000tunneling:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkS1cdma2000tunnelingIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkS1cdma2000tunnelingIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_UEContextModification:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
+    case  S1AP_ProcedureCode_id_UEContextModification:
+      if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextModificationRequestIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextModificationRequestIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
+      } else if (present == S1AP_S1AP_PDU_PR_successfulOutcome) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextModificationResponseIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextModificationResponseIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_unsuccessfulOutcome) {
+      } else if (present == S1AP_S1AP_PDU_PR_unsuccessfulOutcome) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextModificationFailureIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextModificationFailureIEs.mme_ue_s1ap_id;
       }
+
       break;
 
-    case  S1ap_ProcedureCode_id_UECapabilityInfoIndication:
+    case  S1AP_ProcedureCode_id_UECapabilityInfoIndication:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UECapabilityInfoIndicationIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UECapabilityInfoIndicationIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_UEContextRelease:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
+    case  S1AP_ProcedureCode_id_UEContextRelease:
+      if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
         switch (rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCommandIEs.uE_S1AP_IDs.present) {
           case S1ap_UE_S1AP_IDs_PR_uE_S1AP_ID_pair:
             rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCommandIEs.uE_S1AP_IDs.choice.uE_S1AP_ID_pair.mME_UE_S1AP_ID;
             scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCommandIEs.uE_S1AP_IDs.choice.uE_S1AP_ID_pair.mME_UE_S1AP_ID;
             break;
+
           case S1ap_UE_S1AP_IDs_PR_mME_UE_S1AP_ID:
             rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCommandIEs.uE_S1AP_IDs.choice.mME_UE_S1AP_ID;
             scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCommandIEs.uE_S1AP_IDs.choice.mME_UE_S1AP_ID;
@@ -368,38 +364,39 @@ int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packe
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCompleteIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCompleteIEs.mme_ue_s1ap_id;
       }
+
       break;
 
-    case  S1ap_ProcedureCode_id_eNBStatusTransfer:
+    case  S1AP_ProcedureCode_id_eNBStatusTransfer:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBStatusTransferIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBStatusTransferIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_MMEStatusTransfer:
+    case  S1AP_ProcedureCode_id_MMEStatusTransfer:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEStatusTransferIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEStatusTransferIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_DeactivateTrace:
+    case  S1AP_ProcedureCode_id_DeactivateTrace:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DeactivateTraceIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DeactivateTraceIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_TraceStart:
+    case  S1AP_ProcedureCode_id_TraceStart:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_TraceStartIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_TraceStartIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_TraceFailureIndication:
+    case  S1AP_ProcedureCode_id_TraceFailureIndication:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_TraceFailureIndicationIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_TraceFailureIndicationIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_ENBConfigurationUpdate:
-      /*if (present == S1AP_PDU_PR_initiatingMessage) {
+    case  S1AP_ProcedureCode_id_ENBConfigurationUpdate:
+      /*if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBConfigurationUpdateIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBConfigurationUpdateIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
+      } else if (present == S1AP_S1AP_PDU_PR_successfulOutcome) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBConfigurationUpdateAcknowledgeIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBConfigurationUpdateAcknowledgeIEs.mme_ue_s1ap_id;
       } else {
@@ -408,11 +405,11 @@ int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packe
       }*/
       break;
 
-    case  S1ap_ProcedureCode_id_MMEConfigurationUpdate:
-      /*if (present == S1AP_PDU_PR_initiatingMessage) {
+    case  S1AP_ProcedureCode_id_MMEConfigurationUpdate:
+      /*if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEConfigurationUpdateIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEConfigurationUpdateIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
+      } else if (present == S1AP_S1AP_PDU_PR_successfulOutcome) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEConfigurationUpdateAcknowledgeIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEConfigurationUpdateAcknowledgeIEs.mme_ue_s1ap_id;
       } else {
@@ -421,33 +418,33 @@ int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packe
       }*/
       break;
 
-    case  S1ap_ProcedureCode_id_LocationReportingControl:
+    case  S1AP_ProcedureCode_id_LocationReportingControl:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_LocationReportingControlIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_LocationReportingControlIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_LocationReportingFailureIndication:
+    case  S1AP_ProcedureCode_id_LocationReportingFailureIndication:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_LocationReportingFailureIndicationIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_LocationReportingFailureIndicationIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_LocationReport:
+    case  S1AP_ProcedureCode_id_LocationReport:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_LocationReportIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_LocationReportIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_OverloadStart:
+    case  S1AP_ProcedureCode_id_OverloadStart:
       //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_OverloadStartIEs.mme_ue_s1ap_id;
       //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_OverloadStartIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_OverloadStop:
+    case  S1AP_ProcedureCode_id_OverloadStop:
       //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_OverloadStopIEs.mme_ue_s1ap_id;
       //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_OverloadStopIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_WriteReplaceWarning:
-      /*if (present == S1AP_PDU_PR_initiatingMessage) {
+    case  S1AP_ProcedureCode_id_WriteReplaceWarning:
+      /*if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_WriteReplaceWarningRequestIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_WriteReplaceWarningRequestIEs.mme_ue_s1ap_id;
       } else  {
@@ -456,29 +453,29 @@ int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packe
       }*/
       break;
 
-    case  S1ap_ProcedureCode_id_eNBDirectInformationTransfer:
+    case  S1AP_ProcedureCode_id_eNBDirectInformationTransfer:
       //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBDirectInformationTransferIEs.mme_ue_s1ap_id;
       //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBDirectInformationTransferIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_MMEDirectInformationTransfer:
+    case  S1AP_ProcedureCode_id_MMEDirectInformationTransfer:
       //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEDirectInformationTransferIEs.mme_ue_s1ap_id;
       //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEDirectInformationTransferIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_PrivateMessage:
-    case  S1ap_ProcedureCode_id_eNBConfigurationTransfer:
-    case  S1ap_ProcedureCode_id_MMEConfigurationTransfer:
+    case  S1AP_ProcedureCode_id_PrivateMessage:
+    case  S1AP_ProcedureCode_id_eNBConfigurationTransfer:
+    case  S1AP_ProcedureCode_id_MMEConfigurationTransfer:
       AssertFatal(0, "TODO");
       break;
 
-    case  S1ap_ProcedureCode_id_CellTrafficTrace:
+    case  S1AP_ProcedureCode_id_CellTrafficTrace:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_CellTrafficTraceIEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_CellTrafficTraceIEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_Kill:
-      /*if (present == S1AP_PDU_PR_initiatingMessage) {
+    case  S1AP_ProcedureCode_id_Kill:
+      /*if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
         rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_KillRequestIEs.mme_ue_s1ap_id;
         scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_KillRequestIEs.mme_ue_s1ap_id;
       } else  {
@@ -487,22 +484,22 @@ int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packe
       }*/
       break;
 
-    case  S1ap_ProcedureCode_id_downlinkUEAssociatedLPPaTransport:
+    case  S1AP_ProcedureCode_id_downlinkUEAssociatedLPPaTransport:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_uplinkUEAssociatedLPPaTransport:
+    case  S1AP_ProcedureCode_id_uplinkUEAssociatedLPPaTransport:
       rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
       scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_downlinkNonUEAssociatedLPPaTransport:
+    case  S1AP_ProcedureCode_id_downlinkNonUEAssociatedLPPaTransport:
       //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
       //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
       break;
 
-    case  S1ap_ProcedureCode_id_uplinkNonUEAssociatedLPPaTransport:
+    case  S1AP_ProcedureCode_id_uplinkNonUEAssociatedLPPaTransport:
       //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkNonUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
       //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkNonUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
       break;
@@ -510,58 +507,83 @@ int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packe
     default:
       AssertFatal(0, "Unknown procedure code %ld", rx_packet->sctp_hdr.u.data_hdr.payload.message.procedureCode);
   }
+
   if (scenario_mme_ue_s1ap_id != rx_mme_ue_s1ap_id) {
     S1AP_DEBUG("%s() Updating  mme_ue_s1ap_id %u -> %u \n", __FUNCTION__, scenario_mme_ue_s1ap_id, rx_mme_ue_s1ap_id);
-    et_packet_t * p = spacket;
+    et_packet_t *p = spacket;
+
     while (p) {
       et_s1ap_update_mme_ue_s1ap_id(p, scenario_mme_ue_s1ap_id, rx_mme_ue_s1ap_id);
       p = p->next;
     }
+
     return 0;
   }
+
   return 1;
 }
 //------------------------------------------------------------------------------
-asn_comp_rval_t * et_s1ap_is_matching(et_s1ap_t * const s1ap1, et_s1ap_t * const s1ap2, const uint32_t constraints)
+asn_comp_rval_t *et_s1ap_is_matching(et_s1ap_t *const s1ap1, et_s1ap_t *const s1ap2, const uint32_t constraints)
 {
+#if 1
+
+  if (Choice_compare(&asn_DEF_S1AP_S1AP_PDU, &s1ap1->pdu, &s1ap2->pdu) != 0) {
+    return 0;
+  }
+
+#else
   asn_comp_rval_t *rv = NULL;
+
   if (s1ap1->pdu.present != s1ap2->pdu.present)  {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_PRESENT; return rv;}
+
   switch (s1ap1->pdu.present) {
-    case  S1AP_PDU_PR_NOTHING:
+    case  S1AP_S1AP_PDU_PR_NOTHING:
       break;
-    case  S1AP_PDU_PR_initiatingMessage:
+
+    case  S1AP_S1AP_PDU_PR_initiatingMessage:
       if (s1ap1->pdu.choice.initiatingMessage.procedureCode != s1ap2->pdu.choice.initiatingMessage.procedureCode)
-        {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_PROCEDURE_CODE; return rv;}
+      {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_PROCEDURE_CODE; return rv;}
+
       if (s1ap1->pdu.choice.initiatingMessage.criticality != s1ap2->pdu.choice.initiatingMessage.criticality)
-        {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_CRITICALITY; return rv;}
+      {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_CRITICALITY; return rv;}
+
       break;
-    case  S1AP_PDU_PR_successfulOutcome:
+
+    case  S1AP_S1AP_PDU_PR_successfulOutcome:
       if (s1ap1->pdu.choice.successfulOutcome.procedureCode != s1ap2->pdu.choice.successfulOutcome.procedureCode)
-        {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_PROCEDURE_CODE; return rv;}
+      {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_PROCEDURE_CODE; return rv;}
+
       if (s1ap1->pdu.choice.successfulOutcome.criticality != s1ap2->pdu.choice.successfulOutcome.criticality)
-        {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_CRITICALITY; return rv;}
+      {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_CRITICALITY; return rv;}
+
       break;
-    case  S1AP_PDU_PR_unsuccessfulOutcome:
+
+    case  S1AP_S1AP_PDU_PR_unsuccessfulOutcome:
       if (s1ap1->pdu.choice.unsuccessfulOutcome.procedureCode != s1ap2->pdu.choice.unsuccessfulOutcome.procedureCode)
-        {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_PROCEDURE_CODE; return rv;}
+      {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_PROCEDURE_CODE; return rv;}
+
       if (s1ap1->pdu.choice.unsuccessfulOutcome.criticality != s1ap2->pdu.choice.unsuccessfulOutcome.criticality)
-        {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_CRITICALITY; return rv;}
+      {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_CRITICALITY; return rv;}
+
       break;
+
     default:
       AssertFatal(0, "Unknown pdu.present %d", s1ap1->pdu.present);
   }
 
   if (s1ap1->binary_stream_allocated_size == s1ap2->binary_stream_allocated_size) {
-    if (memcmp((void*)s1ap1->binary_stream, (void*)s1ap2->binary_stream, s1ap1->binary_stream_allocated_size) ==  0) return NULL;
+    if (memcmp((void *)s1ap1->binary_stream, (void *)s1ap2->binary_stream, s1ap1->binary_stream_allocated_size) ==  0) return NULL;
   }
+
   // if no matching, may be the scenario need minor corrections (same enb_ue_s1ap_id but need to update mme_ue_s1ap_id)
   return et_s1ap_ies_is_matching(s1ap1->pdu.present, &s1ap1->message, &s1ap2->message, constraints);
+#endif
 }
 
 //------------------------------------------------------------------------------
-et_packet_t* et_build_packet_from_s1ap_data_ind(et_event_s1ap_data_ind_t * const s1ap_data_ind)
+et_packet_t *et_build_packet_from_s1ap_data_ind(et_event_s1ap_data_ind_t *const s1ap_data_ind)
 {
-  et_packet_t     * packet    = NULL;
+  et_packet_t      *packet    = NULL;
   AssertFatal (NULL != s1ap_data_ind, "Bad parameter sctp_data_ind\n");
   packet = calloc(1, sizeof(*packet));
   packet->action                                        = ET_PACKET_ACTION_S1C_NULL;
@@ -577,7 +599,7 @@ et_packet_t* et_build_packet_from_s1ap_data_ind(et_event_s1ap_data_ind_t * const
   //packet->ip_hdr;
   // keep in mind: allocated buffer: sctp_datahdr.payload.binary_stream
   packet->sctp_hdr.chunk_type = SCTP_CID_DATA;
-  memcpy((void*)&packet->sctp_hdr.u.data_hdr, (void*)&s1ap_data_ind->sctp_datahdr, sizeof(packet->sctp_hdr));
+  memcpy((void *)&packet->sctp_hdr.u.data_hdr, (void *)&s1ap_data_ind->sctp_datahdr, sizeof(packet->sctp_hdr));
   //packet->next = NULL;
   packet->status = ET_PACKET_STATUS_RECEIVED;
   //packet->timer_id = 0;
@@ -588,16 +610,15 @@ et_packet_t* et_build_packet_from_s1ap_data_ind(et_event_s1ap_data_ind_t * const
 
 //------------------------------------------------------------------------------
 // return 0 if packet was waited
-int et_scenario_set_packet_received(et_packet_t * const packet)
+int et_scenario_set_packet_received(et_packet_t *const packet)
 {
-  et_packet_t * p = NULL;
+  et_packet_t *p = NULL;
   int           rc = 0;
-
   packet->status = ET_PACKET_STATUS_RECEIVED;
   S1AP_DEBUG("Packet received:          num %u  | original frame number %u \n", packet->packet_number, packet->original_frame_number);
   S1AP_DEBUG("Last Packet received:     num %u  | original frame number %u \n", g_scenario->last_rx_packet->packet_number, g_scenario->last_rx_packet->original_frame_number);
-
   p = g_scenario->last_rx_packet;
+
   while (NULL != p) {
     if (ET_PACKET_ACTION_S1C_RECEIVE == p->action) {
       if ((ET_PACKET_STATUS_RECEIVED == p->status) || (ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT == p->status)) {
@@ -610,6 +631,7 @@ int et_scenario_set_packet_received(et_packet_t * const packet)
         break;
       }
     }
+
     p = p->next;
   }
 
@@ -619,11 +641,12 @@ int et_scenario_set_packet_received(et_packet_t * const packet)
     g_scenario->timer_count--;
     return rc;
   }
+
   return 1;
 }
 
 //------------------------------------------------------------------------------
-int et_s1ap_process_rx_packet(et_event_s1ap_data_ind_t * const s1ap_data_ind)
+int et_s1ap_process_rx_packet(et_event_s1ap_data_ind_t *const s1ap_data_ind)
 {
   et_packet_t      *packet       = NULL;
   et_packet_t      *rx_packet    = NULL;
@@ -631,37 +654,44 @@ int et_s1ap_process_rx_packet(et_event_s1ap_data_ind_t * const s1ap_data_ind)
   asn_comp_rval_t  *comp_results = NULL;
   asn_comp_rval_t  *comp_results2 = NULL;
   unsigned char     error_code   = 0;
-
   AssertFatal (NULL != s1ap_data_ind, "Bad parameter sctp_data_ind\n");
   rx_packet = et_build_packet_from_s1ap_data_ind(s1ap_data_ind);
 
   if (NULL == g_scenario->last_rx_packet) {
     packet = g_scenario->list_packet;
+
     while (NULL != packet) {
       if (packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
         if ((ET_PACKET_STATUS_RECEIVED == packet->status) || (ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT == packet->status)) {
           g_scenario->last_rx_packet = packet;
+
           if  (ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT != packet->status) {
             g_scenario->time_last_rx_packet.tv_sec  = packet->timestamp_packet.tv_sec;
             g_scenario->time_last_rx_packet.tv_usec = packet->timestamp_packet.tv_usec;
           }
+
           S1AP_DEBUG("Set Last Packet received: num %u  | original frame number %u \n", g_scenario->last_rx_packet->packet_number, g_scenario->last_rx_packet->original_frame_number);
           S1AP_DEBUG("Set time_last_rx_packet %ld.%06d\n", g_scenario->time_last_rx_packet.tv_sec, g_scenario->time_last_rx_packet.tv_usec);
         } else {
           break;
         }
       }
+
       packet = packet->next;
     }
+
     packet = g_scenario->list_packet;
   } else {
     packet = g_scenario->last_rx_packet->next;
   }
+
   // not_found threshold may sure depend on number of mme, may be not sure on number of UE
   while ((NULL != packet) && (not_found < 9)) {
     S1AP_DEBUG("%s() Considering packet num %d original frame number %u\n", __FUNCTION__, packet->packet_number, packet->original_frame_number);
+
     if (packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
       comp_results = et_sctp_is_matching(&packet->sctp_hdr, &rx_packet->sctp_hdr, g_constraints);
+
       if (NULL == comp_results) {
         S1AP_DEBUG("Compare RX packet with packet: num %u  | original frame number %u \n", packet->packet_number, packet->original_frame_number);
         packet->timestamp_packet.tv_sec = rx_packet->timestamp_packet.tv_sec;
@@ -669,10 +699,12 @@ int et_s1ap_process_rx_packet(et_event_s1ap_data_ind_t * const s1ap_data_ind)
         return et_scenario_set_packet_received(packet);
       } else {
         S1AP_DEBUG("Compare RX packet with packet: num %u  | original frame number %u failed\n",
-          packet->packet_number, packet->original_frame_number);
+                   packet->packet_number, packet->original_frame_number);
+
         while (comp_results) {
           S1AP_DEBUG("Result err code %s(%u) ASN1 struct name %s\n",
-              et_error_match2str(comp_results->err_code), comp_results->err_code, comp_results->name);
+                     et_error_match2str(comp_results->err_code), comp_results->err_code, comp_results->name);
+
           // (each asn1 rc <= 166 (enum e_S1ap_ProtocolIE_ID, in generated file S1ap_ProtocolIE_ID.h))
           if (comp_results->err_code == COMPARE_ERR_CODE_NO_MATCH) {
             //TODO MME_UE_S1AP_ID, etc.
@@ -696,40 +728,40 @@ int et_s1ap_process_rx_packet(et_event_s1ap_data_ind_t * const s1ap_data_ind)
               AssertFatal(0,"Some work needed there");
             }
           }
+
           comp_results2 = comp_results;
           comp_results = comp_results2->next;
           et_free_pointer(comp_results2);
         }
       }
     }
+
     not_found += 1;
     packet = packet->next;
   }
+
   et_display_packet_sctp(&rx_packet->sctp_hdr);
   AssertFatal(0, "Rx packet not found in scenario (see dump above)");
   return -1;
 }
 
 //------------------------------------------------------------------------------
-void et_s1ap_eNB_handle_sctp_data_ind(sctp_data_ind_t * const sctp_data_ind)
+void et_s1ap_eNB_handle_sctp_data_ind(sctp_data_ind_t *const sctp_data_ind)
 {
   int            result = 0;
   et_event_t     event;
-
   DevAssert(sctp_data_ind != NULL);
-
-  memset((void*)&event, 0, sizeof(event));
-
+  memset((void *)&event, 0, sizeof(event));
   event.code = ET_EVENT_RX_S1AP;
   event.u.s1ap_data_ind.sctp_datahdr.tsn                       = 0;
   event.u.s1ap_data_ind.sctp_datahdr.stream                    = sctp_data_ind->stream;
   event.u.s1ap_data_ind.sctp_datahdr.ssn                       = 0;
   event.u.s1ap_data_ind.sctp_datahdr.ppid                      = S1AP_SCTP_PPID;
   event.u.s1ap_data_ind.sctp_datahdr.assoc_id                  = sctp_data_ind->assoc_id;
-
   event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream_pos = 0;
   event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream_allocated_size = sctp_data_ind->buffer_length;
   event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream = NULL;
+
   if ((sctp_data_ind->buffer_length > 0) && (NULL != sctp_data_ind->buffer)) {
     event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream   = calloc(1, sctp_data_ind->buffer_length);
     memcpy(event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream,
@@ -737,72 +769,54 @@ void et_s1ap_eNB_handle_sctp_data_ind(sctp_data_ind_t * const sctp_data_ind)
            sctp_data_ind->buffer_length);
 
     if (et_s1ap_decode_pdu(
-           &event.u.s1ap_data_ind.sctp_datahdr.payload.pdu,
-           &event.u.s1ap_data_ind.sctp_datahdr.payload.message,
-           event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream,
-           event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream_allocated_size) < 0) {
+          &event.u.s1ap_data_ind.sctp_datahdr.payload.pdu,
+          &event.u.s1ap_data_ind.sctp_datahdr.payload.message,
+          event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream,
+          event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream_allocated_size) < 0) {
       AssertFatal (0, "ERROR Cannot decode RX S1AP message!\n");
     }
-
   }
 
   result = itti_free(TASK_UNKNOWN, sctp_data_ind->buffer);
   AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-
   et_scenario_fsm_notify_event(event);
-
-  memset((void*)&event, 0, sizeof(event));
+  memset((void *)&event, 0, sizeof(event));
   event.code = ET_EVENT_TICK;
   et_scenario_fsm_notify_event(event);
-
 }
 //------------------------------------------------------------------------------
 void et_s1ap_eNB_register_mme(s1ap_eNB_instance_t *instance_p,
-                                  net_ip_address_t    *mme_ip_address,
-                                  net_ip_address_t    *local_ip_addr,
-                                  uint16_t             in_streams,
-                                  uint16_t             out_streams)
+                              net_ip_address_t    *mme_ip_address,
+                              net_ip_address_t    *local_ip_addr,
+                              uint16_t             in_streams,
+                              uint16_t             out_streams)
 {
   MessageDef                 *message_p                   = NULL;
   sctp_new_association_req_t *sctp_new_association_req_p  = NULL;
   s1ap_eNB_mme_data_t        *s1ap_mme_data_p             = NULL;
-
   DevAssert(instance_p != NULL);
   DevAssert(mme_ip_address != NULL);
-
   message_p = itti_alloc_new_message(TASK_S1AP, SCTP_NEW_ASSOCIATION_REQ);
-
   sctp_new_association_req_p = &message_p->ittiMsg.sctp_new_association_req;
-
   sctp_new_association_req_p->port = S1AP_PORT_NUMBER;
   sctp_new_association_req_p->ppid = S1AP_SCTP_PPID;
-
   sctp_new_association_req_p->in_streams  = in_streams;
   sctp_new_association_req_p->out_streams = out_streams;
-
   memcpy(&sctp_new_association_req_p->remote_address,
          mme_ip_address,
          sizeof(*mme_ip_address));
-
   memcpy(&sctp_new_association_req_p->local_address,
          local_ip_addr,
          sizeof(*local_ip_addr));
-
   /* Create new MME descriptor */
   s1ap_mme_data_p = calloc(1, sizeof(*s1ap_mme_data_p));
   DevAssert(s1ap_mme_data_p != NULL);
-
   s1ap_mme_data_p->cnx_id                = et_s1ap_eNB_fetch_add_global_cnx_id();
   sctp_new_association_req_p->ulp_cnx_id = s1ap_mme_data_p->cnx_id;
-
   s1ap_mme_data_p->assoc_id          = -1;
   s1ap_mme_data_p->s1ap_eNB_instance = instance_p;
-
-  memcpy((void*)&s1ap_mme_data_p->mme_net_ip_address, mme_ip_address, sizeof(*mme_ip_address));
-
-
+  memcpy((void *)&s1ap_mme_data_p->mme_net_ip_address, mme_ip_address, sizeof(*mme_ip_address));
   STAILQ_INIT(&s1ap_mme_data_p->served_gummei);
-
   /* Insert the new descriptor in list of known MME
    * but not yet associated.
    */
@@ -810,33 +824,33 @@ void et_s1ap_eNB_register_mme(s1ap_eNB_instance_t *instance_p,
   s1ap_mme_data_p->state = S1AP_ENB_STATE_WAITING;
   instance_p->s1ap_mme_nb ++;
   instance_p->s1ap_mme_pending_nb ++;
-
   itti_send_msg_to_task(TASK_SCTP, instance_p->instance, message_p);
 }
 //------------------------------------------------------------------------------
 void et_s1ap_update_assoc_id_of_packets(const int32_t assoc_id,
-                                        struct s1ap_eNB_instance_s * const s1ap_eNB_instance,
-                                        s1ap_eNB_mme_data_t        * const mme_desc_p)
+                                        struct s1ap_eNB_instance_s *const s1ap_eNB_instance,
+                                        s1ap_eNB_mme_data_t         *const mme_desc_p)
 {
   et_packet_t     *packet = NULL;
   int              ret;
   unsigned int     old_enb_port = 0;
   unsigned int     old_mme_port = 0;
-
   S1AP_DEBUG("%s for SCTP association (%u)\n",__FUNCTION__,assoc_id);
-
   packet = g_scenario->list_packet;
+
   while (NULL != packet) {
     switch (packet->sctp_hdr.chunk_type) {
-
       case SCTP_CID_DATA :
         S1AP_DEBUG("%s for SCTP association (%u) SCTP_CID_DATA\n",__FUNCTION__,assoc_id);
+
         if ((ET_PACKET_STATUS_NONE == packet->status) || (ET_PACKET_STATUS_SCHEDULED_FOR_RECEIVING == packet->status)) {
           if (0 < old_mme_port) {
             if (packet->action == ET_PACKET_ACTION_S1C_SEND) {
               ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.dst, &mme_desc_p->mme_net_ip_address);
+
               if (0 == ret) {
                 ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.src, &s1ap_eNB_instance->s1c_net_ip_address);
+
                 if (0 == ret) {
                   // same IP src, same IP dst
                   if ((packet->sctp_hdr.dst_port == old_mme_port) && (packet->sctp_hdr.src_port == old_enb_port)) {
@@ -848,8 +862,10 @@ void et_s1ap_update_assoc_id_of_packets(const int32_t assoc_id,
               }
             } else if (packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
               ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.src, &mme_desc_p->mme_net_ip_address);
+
               if (0 == ret) {
                 ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.dst, &s1ap_eNB_instance->s1c_net_ip_address);
+
                 if (0 == ret) {
                   // same IP src, same IP dst
                   if ((packet->sctp_hdr.src_port == old_mme_port) && (packet->sctp_hdr.dst_port == old_enb_port)) {
@@ -862,15 +878,18 @@ void et_s1ap_update_assoc_id_of_packets(const int32_t assoc_id,
             }
           }
         }
+
         break;
 
-        // Strong assumption
-        // in replayed scenario, the order of SCTP INIT packets is supposed to be the same as in the catched scenario
+      // Strong assumption
+      // in replayed scenario, the order of SCTP INIT packets is supposed to be the same as in the catched scenario
       case SCTP_CID_INIT:
         S1AP_DEBUG("%s for SCTP association (%u) SCTP_CID_INIT\n",__FUNCTION__,assoc_id);
         ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.dst, &mme_desc_p->mme_net_ip_address);
+
         if (0 == ret) {
           ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.src, &s1ap_eNB_instance->s1c_net_ip_address);
+
           if (0 == ret) {
             if (0 == old_enb_port) {
               if (ET_PACKET_STATUS_NONE == packet->status) {
@@ -881,13 +900,16 @@ void et_s1ap_update_assoc_id_of_packets(const int32_t assoc_id,
             }
           }
         }
+
         break;
 
       case SCTP_CID_INIT_ACK:
         S1AP_DEBUG("%s for SCTP association (%u) SCTP_CID_INIT_ACK\n",__FUNCTION__,assoc_id);
         ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.src, &mme_desc_p->mme_net_ip_address);
+
         if (0 == ret) {
           ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.dst, &s1ap_eNB_instance->s1c_net_ip_address);
+
           if (0 == ret) {
             if (old_enb_port == packet->sctp_hdr.dst_port) {
               if (ET_PACKET_STATUS_NONE == packet->status) {
@@ -898,6 +920,7 @@ void et_s1ap_update_assoc_id_of_packets(const int32_t assoc_id,
             }
           }
         }
+
         break;
 
       case SCTP_CID_HEARTBEAT:
@@ -920,6 +943,7 @@ void et_s1ap_update_assoc_id_of_packets(const int32_t assoc_id,
         AssertFatal(0, "Unknown chunk_type %d packet num %d", packet->sctp_hdr.chunk_type, packet->packet_number);
         ;
     }
+
     packet = packet->next;
   }
 }
@@ -941,7 +965,6 @@ void et_s1ap_handle_s1_setup_message(s1ap_eNB_mme_data_t *mme_desc_p, int sctp_s
       /* If there are no more associated MME, inform eNB app */
       if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb == 0) {
         MessageDef                 *message_p;
-
         message_p = itti_alloc_new_message(TASK_S1AP, S1AP_DEREGISTERED_ENB_IND);
         S1AP_DEREGISTERED_ENB_IND(message_p).nb_mme = 0;
         itti_send_msg_to_task(TASK_ENB_APP, mme_desc_p->s1ap_eNB_instance->instance, message_p);
@@ -959,14 +982,12 @@ void et_s1ap_handle_s1_setup_message(s1ap_eNB_mme_data_t *mme_desc_p, int sctp_s
     }
 
     et_s1ap_update_assoc_id_of_packets(mme_desc_p->assoc_id,
-        mme_desc_p->s1ap_eNB_instance,
-        mme_desc_p);
-
+                                       mme_desc_p->s1ap_eNB_instance,
+                                       mme_desc_p);
 
     /* If there are no more pending messages, inform eNB app */
     if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_pending_nb == 0) {
       MessageDef                 *message_p;
-
       message_p = itti_alloc_new_message(TASK_S1AP, S1AP_REGISTER_ENB_CNF);
       S1AP_REGISTER_ENB_CNF(message_p).nb_mme = mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb;
       itti_send_msg_to_task(TASK_ENB_APP, mme_desc_p->s1ap_eNB_instance->instance, message_p);
@@ -978,9 +999,7 @@ void et_s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_
 {
   s1ap_eNB_instance_t *new_instance;
   uint8_t index;
-
   DevAssert(s1ap_register_eNB != NULL);
-
   /* Look if the provided instance already exists */
   new_instance = et_s1ap_eNB_get_instance(instance);
 
@@ -992,14 +1011,12 @@ void et_s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_
     DevCheck(new_instance->mcc == s1ap_register_eNB->mcc, new_instance->mcc, s1ap_register_eNB->mcc, 0);
     DevCheck(new_instance->mnc == s1ap_register_eNB->mnc, new_instance->mnc, s1ap_register_eNB->mnc, 0);
     DevCheck(new_instance->mnc_digit_length == s1ap_register_eNB->mnc_digit_length, new_instance->mnc_digit_length, s1ap_register_eNB->mnc_digit_length, 0);
-    DevCheck(memcmp((void*)&new_instance->s1c_net_ip_address, (void*)&s1ap_register_eNB->enb_ip_address, sizeof(new_instance->s1c_net_ip_address)) == 0, 0,0,0);
+    DevCheck(memcmp((void *)&new_instance->s1c_net_ip_address, (void *)&s1ap_register_eNB->enb_ip_address, sizeof(new_instance->s1c_net_ip_address)) == 0, 0,0,0);
   } else {
     new_instance = calloc(1, sizeof(s1ap_eNB_instance_t));
     DevAssert(new_instance != NULL);
-
     RB_INIT(&new_instance->s1ap_ue_head);
     RB_INIT(&new_instance->s1ap_mme_head);
-
     /* Copy usefull parameters */
     new_instance->instance         = instance;
     new_instance->eNB_name         = s1ap_register_eNB->eNB_name;
@@ -1009,11 +1026,9 @@ void et_s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_
     new_instance->mcc              = s1ap_register_eNB->mcc;
     new_instance->mnc              = s1ap_register_eNB->mnc;
     new_instance->mnc_digit_length = s1ap_register_eNB->mnc_digit_length;
-    memcpy((void*)&new_instance->s1c_net_ip_address, (void*)&s1ap_register_eNB->enb_ip_address, sizeof(new_instance->s1c_net_ip_address));
-
+    memcpy((void *)&new_instance->s1c_net_ip_address, (void *)&s1ap_register_eNB->enb_ip_address, sizeof(new_instance->s1c_net_ip_address));
     /* Add the new instance to the list of eNB (meaningfull in virtual mode) */
     et_s1ap_eNB_insert_new_instance(new_instance);
-
     S1AP_DEBUG("Registered new eNB[%d] and %s eNB id %u\n",
                instance,
                s1ap_register_eNB->cell_type == CELL_MACRO_ENB ? "macro" : "home",
@@ -1026,10 +1041,10 @@ void et_s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_
   /* Trying to connect to provided list of MME ip address */
   for (index = 0; index < s1ap_register_eNB->nb_mme; index++) {
     et_s1ap_eNB_register_mme(new_instance,
-                      &s1ap_register_eNB->mme_ip_address[index],
-                          &s1ap_register_eNB->enb_ip_address,
-                          s1ap_register_eNB->sctp_in_streams,
-                          s1ap_register_eNB->sctp_out_streams);
+                             &s1ap_register_eNB->mme_ip_address[index],
+                             &s1ap_register_eNB->enb_ip_address,
+                             s1ap_register_eNB->sctp_in_streams,
+                             s1ap_register_eNB->sctp_out_streams);
   }
 }
 
@@ -1038,14 +1053,11 @@ void et_s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_asso
 {
   s1ap_eNB_instance_t *instance_p      = NULL;
   s1ap_eNB_mme_data_t *s1ap_mme_data_p = NULL;
-
   DevAssert(sctp_new_association_resp != NULL);
-
   instance_p = et_s1ap_eNB_get_instance(instance);
   DevAssert(instance_p != NULL);
-
   s1ap_mme_data_p = et_s1ap_eNB_get_MME(instance_p, -1,
-                                     sctp_new_association_resp->ulp_cnx_id);
+                                        sctp_new_association_resp->ulp_cnx_id);
   DevAssert(s1ap_mme_data_p != NULL);
 
   if (sctp_new_association_resp->sctp_state != SCTP_STATE_ESTABLISHED) {
@@ -1053,9 +1065,7 @@ void et_s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_asso
               sctp_new_association_resp->sctp_state,
               instance,
               sctp_new_association_resp->ulp_cnx_id);
-
     et_s1ap_handle_s1_setup_message(s1ap_mme_data_p, sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN);
-
     return;
   }
 
@@ -1067,7 +1077,6 @@ void et_s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_asso
   s1ap_mme_data_p->assoc_id    = sctp_new_association_resp->assoc_id;
   s1ap_mme_data_p->in_streams  = sctp_new_association_resp->in_streams;
   s1ap_mme_data_p->out_streams = sctp_new_association_resp->out_streams;
-
   et_s1ap_handle_s1_setup_message(s1ap_mme_data_p, sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN);
 }
 
@@ -1076,11 +1085,8 @@ void *et_s1ap_eNB_task(void *arg)
 {
   MessageDef *received_msg = NULL;
   int         result;
-
   S1AP_DEBUG("Starting S1AP layer\n");
-
   et_s1ap_eNB_prepare_internal_data();
-
   itti_mark_task_ready(TASK_S1AP);
   MSC_START_USE();
 
@@ -1088,77 +1094,78 @@ void *et_s1ap_eNB_task(void *arg)
     itti_receive_msg(TASK_S1AP, &received_msg);
 
     switch (ITTI_MSG_ID(received_msg)) {
-    case TERMINATE_MESSAGE:
-      S1AP_WARN("*** Exiting S1AP thread\n");
-      itti_exit_task();
+      case TERMINATE_MESSAGE:
+        S1AP_WARN("*** Exiting S1AP thread\n");
+        itti_exit_task();
+        break;
+
+      case S1AP_REGISTER_ENB_REQ: {
+        /* Register a new eNB.
+         * in Virtual mode eNBs will be distinguished using the mod_id/
+         * Each eNB has to send an S1AP_REGISTER_ENB message with its
+         * own parameters.
+         */
+        et_s1ap_eNB_handle_register_eNB(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                        &S1AP_REGISTER_ENB_REQ(received_msg));
+      }
       break;
 
-    case S1AP_REGISTER_ENB_REQ: {
-      /* Register a new eNB.
-       * in Virtual mode eNBs will be distinguished using the mod_id/
-       * Each eNB has to send an S1AP_REGISTER_ENB message with its
-       * own parameters.
-       */
-      et_s1ap_eNB_handle_register_eNB(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                   &S1AP_REGISTER_ENB_REQ(received_msg));
-    }
-    break;
+      case SCTP_NEW_ASSOCIATION_RESP: {
+        et_s1ap_eNB_handle_sctp_association_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+            &received_msg->ittiMsg.sctp_new_association_resp);
+      }
+      break;
 
-    case SCTP_NEW_ASSOCIATION_RESP: {
-      et_s1ap_eNB_handle_sctp_association_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                            &received_msg->ittiMsg.sctp_new_association_resp);
-    }
-    break;
+      case SCTP_DATA_IND: {
+        et_s1ap_eNB_handle_sctp_data_ind(&received_msg->ittiMsg.sctp_data_ind);
+      }
+      break;
 
-    case SCTP_DATA_IND: {
-      et_s1ap_eNB_handle_sctp_data_ind(&received_msg->ittiMsg.sctp_data_ind);
-    }
-    break;
-
-    case TIMER_HAS_EXPIRED:
-      LOG_I(S1AP, " Received TIMER_HAS_EXPIRED: timer_id %d\n", TIMER_HAS_EXPIRED(received_msg).timer_id);
-      {
-        et_packet_t * packet = (et_packet_t*)TIMER_HAS_EXPIRED (received_msg).arg;
-        et_event_t    event;
-        g_scenario->timer_count--;
-        if (NULL != packet) {
-          if (packet->status == ET_PACKET_STATUS_SCHEDULED_FOR_RECEIVING) {
-            memset((void*)&event, 0, sizeof(event));
-            event.code = ET_EVENT_RX_PACKET_TIME_OUT;
-            event.u.rx_packet_time_out = packet;
-            et_scenario_fsm_notify_event(event);
-          } else if (packet->status == ET_PACKET_STATUS_SCHEDULED_FOR_SENDING) {
-            memset((void*)&event, 0, sizeof(event));
-            event.code = ET_EVENT_TX_TIMED_PACKET;
-            event.u.tx_timed_packet = packet;
-            et_scenario_fsm_notify_event(event);
-
-            et_event_t continue_event;
-            continue_event.code = ET_EVENT_TICK;
-            et_scenario_fsm_notify_event(continue_event);
-          } else if ((packet->status != ET_PACKET_STATUS_SENT) && ((packet->status != ET_PACKET_STATUS_RECEIVED))) {
-            AssertFatal (0, "Bad status %d of packet timed out!\n", packet->status);
+      case TIMER_HAS_EXPIRED:
+        LOG_I(S1AP, " Received TIMER_HAS_EXPIRED: timer_id %d\n", TIMER_HAS_EXPIRED(received_msg).timer_id);
+        {
+          et_packet_t *packet = (et_packet_t *)TIMER_HAS_EXPIRED (received_msg).arg;
+          et_event_t    event;
+          g_scenario->timer_count--;
+
+          if (NULL != packet) {
+            if (packet->status == ET_PACKET_STATUS_SCHEDULED_FOR_RECEIVING) {
+              memset((void *)&event, 0, sizeof(event));
+              event.code = ET_EVENT_RX_PACKET_TIME_OUT;
+              event.u.rx_packet_time_out = packet;
+              et_scenario_fsm_notify_event(event);
+            } else if (packet->status == ET_PACKET_STATUS_SCHEDULED_FOR_SENDING) {
+              memset((void *)&event, 0, sizeof(event));
+              event.code = ET_EVENT_TX_TIMED_PACKET;
+              event.u.tx_timed_packet = packet;
+              et_scenario_fsm_notify_event(event);
+              et_event_t continue_event;
+              continue_event.code = ET_EVENT_TICK;
+              et_scenario_fsm_notify_event(continue_event);
+            } else if ((packet->status != ET_PACKET_STATUS_SENT) && ((packet->status != ET_PACKET_STATUS_RECEIVED))) {
+              AssertFatal (0, "Bad status %d of packet timed out!\n", packet->status);
+            }
+          } else {
+            LOG_W(S1AP, " Received TIMER_HAS_EXPIRED: timer_id %d, no packet attached to timer\n", TIMER_HAS_EXPIRED(received_msg).timer_id);
           }
-        } else {
-          LOG_W(S1AP, " Received TIMER_HAS_EXPIRED: timer_id %d, no packet attached to timer\n", TIMER_HAS_EXPIRED(received_msg).timer_id);
         }
-      }
-      if (TIMER_HAS_EXPIRED (received_msg).timer_id == g_scenario->enb_register_retry_timer_id) {
-        /* Restart the registration process */
-        g_scenario->registered_enb = 0;
-        et_eNB_app_register (g_scenario->enb_properties);
-      }
-      break;
 
-    default:
-      S1AP_ERROR("Received unhandled message: %d:%s\n",
-                 ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
-      break;
+        if (TIMER_HAS_EXPIRED (received_msg).timer_id == g_scenario->enb_register_retry_timer_id) {
+          /* Restart the registration process */
+          g_scenario->registered_enb = 0;
+          et_eNB_app_register (g_scenario->enb_properties);
+        }
+
+        break;
+
+      default:
+        S1AP_ERROR("Received unhandled message: %d:%s\n",
+                   ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
+        break;
     }
 
     result = itti_free (ITTI_MSG_ORIGIN_ID(received_msg), received_msg);
     AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-
     received_msg = NULL;
   }
 
diff --git a/openair3/TEST/EPC_TEST/play_scenario_s1ap_compare_ie.c b/openair3/TEST/EPC_TEST/play_scenario_s1ap_compare_ie.c
index 08f79ef206dc245cc9ad20cbd2c4da6456d0f0cd..59cb1cdac9cfbd42e65a82cce291ebcda3b8beb2 100644
--- a/openair3/TEST/EPC_TEST/play_scenario_s1ap_compare_ie.c
+++ b/openair3/TEST/EPC_TEST/play_scenario_s1ap_compare_ie.c
@@ -56,402 +56,11 @@ extern et_scenario_t  *g_scenario;
 extern uint32_t        g_constraints;
 //------------------------------------------------------------------------------
 
-asn_comp_rval_t * et_s1ap_ies_is_matching(const S1AP_PDU_PR present, s1ap_message * const m1, s1ap_message * const m2, const uint32_t constraints)
-{
-  asn_comp_rval_t *ret = NULL;
-  AssertFatal(m1 != NULL, "bad parameter m1");
-  AssertFatal(m2 != NULL, "bad parameter m2");
-  AssertFatal((present == S1AP_PDU_PR_initiatingMessage) ||
-              (present == S1AP_PDU_PR_successfulOutcome) ||
-              (present == S1AP_PDU_PR_unsuccessfulOutcome) , "Bad parameter S1AP_PDU_PR present ");
-  AssertFatal( m1->procedureCode == m2->procedureCode, "Bad parameters: no matching procedure codes");
-
-
-  // some cases can never occur since uplink only.
-  switch (m1->procedureCode) {
-    case  S1ap_ProcedureCode_id_HandoverPreparation:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        ret = s1ap_compare_s1ap_handoverrequiredies(
-                &m1->msg.s1ap_HandoverRequiredIEs,
-                &m2->msg.s1ap_HandoverRequiredIEs);
-      } else {
-        ret = s1ap_compare_s1ap_handovercommandies(
-                &m1->msg.s1ap_HandoverCommandIEs,
-                &m2->msg.s1ap_HandoverCommandIEs);
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_HandoverResourceAllocation:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        ret = s1ap_compare_s1ap_handoverrequesties(
-                &m1->msg.s1ap_HandoverRequestIEs,
-                &m2->msg.s1ap_HandoverRequestIEs);
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
-        ret = s1ap_compare_s1ap_handoverrequestacknowledgeies(
-                &m1->msg.s1ap_HandoverRequestAcknowledgeIEs,
-                &m2->msg.s1ap_HandoverRequestAcknowledgeIEs);
-      } else if (present == S1AP_PDU_PR_unsuccessfulOutcome) {
-        ret = s1ap_compare_s1ap_handoverfailureies(
-                &m1->msg.s1ap_HandoverFailureIEs,
-                &m2->msg.s1ap_HandoverFailureIEs);
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_HandoverNotification:
-        ret = s1ap_compare_s1ap_handovernotifyies(
-                &m1->msg.s1ap_HandoverNotifyIEs,
-                &m2->msg.s1ap_HandoverNotifyIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_PathSwitchRequest:
-      ret = s1ap_compare_s1ap_pathswitchrequesties(
-              &m1->msg.s1ap_PathSwitchRequestIEs,
-              &m2->msg.s1ap_PathSwitchRequestIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_HandoverCancel:
-      ret = s1ap_compare_s1ap_handovercancelies(
-              &m1->msg.s1ap_HandoverCancelIEs,
-              &m2->msg.s1ap_HandoverCancelIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_E_RABSetup:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        ret = s1ap_compare_s1ap_e_rabsetuprequesties(
-                &m1->msg.s1ap_E_RABSetupRequestIEs,
-                &m2->msg.s1ap_E_RABSetupRequestIEs);
-      } else  {
-        ret = s1ap_compare_s1ap_e_rabsetupresponseies(
-                &m1->msg.s1ap_E_RABSetupResponseIEs,
-                &m2->msg.s1ap_E_RABSetupResponseIEs);
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_E_RABModify:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        ret = s1ap_compare_s1ap_e_rabmodifyrequesties(
-                &m1->msg.s1ap_E_RABModifyRequestIEs,
-                &m2->msg.s1ap_E_RABModifyRequestIEs);
-      } else  {
-        ret = s1ap_compare_s1ap_e_rabmodifyresponseies(
-                &m1->msg.s1ap_E_RABModifyResponseIEs,
-                &m2->msg.s1ap_E_RABModifyResponseIEs);
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_E_RABRelease:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        ret = s1ap_compare_s1ap_e_rabreleasecommandies(
-                &m1->msg.s1ap_E_RABReleaseCommandIEs,
-                &m2->msg.s1ap_E_RABReleaseCommandIEs);
-      } else  {
-        ret = s1ap_compare_s1ap_e_rabreleaseresponseies(
-                &m1->msg.s1ap_E_RABReleaseResponseIEs,
-                &m2->msg.s1ap_E_RABReleaseResponseIEs);
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_E_RABReleaseIndication:
-      ret = s1ap_compare_s1ap_e_rabreleaseindicationies(
-              &m1->msg.s1ap_E_RABReleaseIndicationIEs,
-              &m2->msg.s1ap_E_RABReleaseIndicationIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_InitialContextSetup:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        ret = s1ap_compare_s1ap_initialcontextsetuprequesties(
-                &m1->msg.s1ap_InitialContextSetupRequestIEs,
-                &m2->msg.s1ap_InitialContextSetupRequestIEs);
-      } else  {
-        ret = s1ap_compare_s1ap_initialcontextsetupresponseies(
-                &m1->msg.s1ap_InitialContextSetupResponseIEs,
-                &m2->msg.s1ap_InitialContextSetupResponseIEs);
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_Paging:
-      ret = s1ap_compare_s1ap_pagingies(
-              &m1->msg.s1ap_PagingIEs,
-              &m2->msg.s1ap_PagingIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_downlinkNASTransport:
-      ret = s1ap_compare_s1ap_downlinknastransporties(
-              &m1->msg.s1ap_DownlinkNASTransportIEs,
-              &m2->msg.s1ap_DownlinkNASTransportIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_initialUEMessage:
-      ret = s1ap_compare_s1ap_initialuemessageies(
-              &m1->msg.s1ap_InitialUEMessageIEs,
-              &m2->msg.s1ap_InitialUEMessageIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_uplinkNASTransport:
-      ret = s1ap_compare_s1ap_uplinknastransporties(
-              &m1->msg.s1ap_UplinkNASTransportIEs,
-              &m2->msg.s1ap_UplinkNASTransportIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_Reset:
-      ret = s1ap_compare_s1ap_reseties(
-              &m1->msg.s1ap_ResetIEs,
-              &m2->msg.s1ap_ResetIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_ErrorIndication:
-      ret = s1ap_compare_s1ap_errorindicationies(
-              &m1->msg.s1ap_ErrorIndicationIEs,
-              &m2->msg.s1ap_ErrorIndicationIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_NASNonDeliveryIndication:
-      ret = s1ap_compare_s1ap_nasnondeliveryindication_ies(
-              &m1->msg.s1ap_NASNonDeliveryIndication_IEs,
-              &m2->msg.s1ap_NASNonDeliveryIndication_IEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_S1Setup:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        ret = s1ap_compare_s1ap_s1setuprequesties(
-                &m1->msg.s1ap_S1SetupRequestIEs,
-                &m2->msg.s1ap_S1SetupRequestIEs);
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
-        ret = s1ap_compare_s1ap_s1setupresponseies(
-                &m1->msg.s1ap_S1SetupResponseIEs,
-                &m2->msg.s1ap_S1SetupResponseIEs);
-      } else if (present == S1AP_PDU_PR_unsuccessfulOutcome) {
-        ret = s1ap_compare_s1ap_s1setupfailureies(
-                &m1->msg.s1ap_S1SetupFailureIEs,
-                &m2->msg.s1ap_S1SetupFailureIEs);
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_UEContextReleaseRequest:
-      ret = s1ap_compare_s1ap_uecontextreleaserequesties(
-                &m1->msg.s1ap_UEContextReleaseRequestIEs,
-                &m2->msg.s1ap_UEContextReleaseRequestIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_DownlinkS1cdma2000tunneling:
-      ret = s1ap_compare_s1ap_downlinks1cdma2000tunnelingies(
-                &m1->msg.s1ap_DownlinkS1cdma2000tunnelingIEs,
-                &m2->msg.s1ap_DownlinkS1cdma2000tunnelingIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_UplinkS1cdma2000tunneling:
-      ret = s1ap_compare_s1ap_uplinks1cdma2000tunnelingies(
-                &m1->msg.s1ap_UplinkS1cdma2000tunnelingIEs,
-                &m2->msg.s1ap_UplinkS1cdma2000tunnelingIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_UEContextModification:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        ret = s1ap_compare_s1ap_uecontextmodificationrequesties(
-                &m1->msg.s1ap_UEContextModificationRequestIEs,
-                &m2->msg.s1ap_UEContextModificationRequestIEs);
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
-        ret = s1ap_compare_s1ap_uecontextmodificationresponseies(
-                &m1->msg.s1ap_UEContextModificationResponseIEs,
-                &m2->msg.s1ap_UEContextModificationResponseIEs);
-      } else if (present == S1AP_PDU_PR_unsuccessfulOutcome) {
-        ret = s1ap_compare_s1ap_uecontextmodificationfailureies(
-                &m1->msg.s1ap_UEContextModificationFailureIEs,
-                &m2->msg.s1ap_UEContextModificationFailureIEs);
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_UECapabilityInfoIndication:
-      ret = s1ap_compare_s1ap_uecapabilityinfoindicationies(
-                &m1->msg.s1ap_UECapabilityInfoIndicationIEs,
-                &m2->msg.s1ap_UECapabilityInfoIndicationIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_UEContextRelease:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        ret = s1ap_compare_s1ap_uecontextreleasecommandies(
-                &m1->msg.s1ap_UEContextReleaseCommandIEs,
-                &m2->msg.s1ap_UEContextReleaseCommandIEs);
-      } else  {
-        ret = s1ap_compare_s1ap_uecontextreleasecompleteies(
-                &m1->msg.s1ap_UEContextReleaseCompleteIEs,
-                &m2->msg.s1ap_UEContextReleaseCompleteIEs);
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_eNBStatusTransfer:
-      ret = s1ap_compare_s1ap_enbstatustransferies(
-                &m1->msg.s1ap_ENBStatusTransferIEs,
-                &m2->msg.s1ap_ENBStatusTransferIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_MMEStatusTransfer:
-      ret = s1ap_compare_s1ap_mmestatustransferies(
-                &m1->msg.s1ap_MMEStatusTransferIEs,
-                &m2->msg.s1ap_MMEStatusTransferIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_DeactivateTrace:
-      ret = s1ap_compare_s1ap_deactivatetraceies(
-                &m1->msg.s1ap_DeactivateTraceIEs,
-                &m2->msg.s1ap_DeactivateTraceIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_TraceStart:
-      ret = s1ap_compare_s1ap_tracestarties(
-                &m1->msg.s1ap_TraceStartIEs,
-                &m2->msg.s1ap_TraceStartIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_TraceFailureIndication:
-      ret = s1ap_compare_s1ap_tracefailureindicationies(
-                &m1->msg.s1ap_TraceFailureIndicationIEs,
-                &m2->msg.s1ap_TraceFailureIndicationIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_ENBConfigurationUpdate:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        ret = s1ap_compare_s1ap_enbconfigurationupdateies(
-                &m1->msg.s1ap_ENBConfigurationUpdateIEs,
-                &m2->msg.s1ap_ENBConfigurationUpdateIEs);
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
-        ret = s1ap_compare_s1ap_enbconfigurationupdateacknowledgeies(
-                &m1->msg.s1ap_ENBConfigurationUpdateAcknowledgeIEs,
-                &m2->msg.s1ap_ENBConfigurationUpdateAcknowledgeIEs);
-      } else {
-        ret = s1ap_compare_s1ap_enbconfigurationupdatefailureies(
-                &m1->msg.s1ap_ENBConfigurationUpdateFailureIEs,
-                &m2->msg.s1ap_ENBConfigurationUpdateFailureIEs);
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_MMEConfigurationUpdate:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        ret = s1ap_compare_s1ap_mmeconfigurationupdateies(
-                &m1->msg.s1ap_MMEConfigurationUpdateIEs,
-                &m2->msg.s1ap_MMEConfigurationUpdateIEs);
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
-        ret = s1ap_compare_s1ap_mmeconfigurationupdateacknowledgeies(
-                &m1->msg.s1ap_MMEConfigurationUpdateAcknowledgeIEs,
-                &m2->msg.s1ap_MMEConfigurationUpdateAcknowledgeIEs);
-      } else {
-        ret = s1ap_compare_s1ap_mmeconfigurationupdatefailureies(
-                &m1->msg.s1ap_MMEConfigurationUpdateFailureIEs,
-                &m2->msg.s1ap_MMEConfigurationUpdateFailureIEs);
-      }
-      break;
+//asn_comp_rval_t * et_s1ap_ies_is_matching(const S1AP_PDU_PR present, s1ap_message * const m1, s1ap_message * const m2, const uint32_t constraints)
+//{
+//}
 
-    case  S1ap_ProcedureCode_id_LocationReportingControl:
-      ret = s1ap_compare_s1ap_locationreportingcontrolies(
-                &m1->msg.s1ap_LocationReportingControlIEs,
-                &m2->msg.s1ap_LocationReportingControlIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_LocationReportingFailureIndication:
-      ret = s1ap_compare_s1ap_locationreportingfailureindicationies(
-                &m1->msg.s1ap_LocationReportingFailureIndicationIEs,
-                &m2->msg.s1ap_LocationReportingFailureIndicationIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_LocationReport:
-      ret = s1ap_compare_s1ap_locationreporties(
-                &m1->msg.s1ap_LocationReportIEs,
-                &m2->msg.s1ap_LocationReportIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_OverloadStart:
-      ret = s1ap_compare_s1ap_overloadstarties(
-                &m1->msg.s1ap_OverloadStartIEs,
-                &m2->msg.s1ap_OverloadStartIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_OverloadStop:
-      ret = s1ap_compare_s1ap_overloadstopies(
-                &m1->msg.s1ap_OverloadStopIEs,
-                &m2->msg.s1ap_OverloadStopIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_WriteReplaceWarning:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        ret = s1ap_compare_s1ap_writereplacewarningrequesties(
-                &m1->msg.s1ap_WriteReplaceWarningRequestIEs,
-                &m2->msg.s1ap_WriteReplaceWarningRequestIEs);
-      } else  {
-        ret = s1ap_compare_s1ap_writereplacewarningresponseies(
-                &m1->msg.s1ap_WriteReplaceWarningResponseIEs,
-                &m2->msg.s1ap_WriteReplaceWarningResponseIEs);
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_eNBDirectInformationTransfer:
-      ret = s1ap_compare_s1ap_enbdirectinformationtransferies(
-                &m1->msg.s1ap_ENBDirectInformationTransferIEs,
-                &m2->msg.s1ap_ENBDirectInformationTransferIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_MMEDirectInformationTransfer:
-
-      ret = s1ap_compare_s1ap_mmedirectinformationtransferies(
-                &m1->msg.s1ap_MMEDirectInformationTransferIEs,
-                &m2->msg.s1ap_MMEDirectInformationTransferIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_PrivateMessage:
-    case  S1ap_ProcedureCode_id_eNBConfigurationTransfer:
-    case  S1ap_ProcedureCode_id_MMEConfigurationTransfer:
-      AssertFatal(0, "TODO");
-      break;
-
-    case  S1ap_ProcedureCode_id_CellTrafficTrace:
-      ret = s1ap_compare_s1ap_celltraffictraceies(
-                &m1->msg.s1ap_CellTrafficTraceIEs,
-                &m2->msg.s1ap_CellTrafficTraceIEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_Kill:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        ret = s1ap_compare_s1ap_killrequesties(
-                &m1->msg.s1ap_KillRequestIEs,
-                &m2->msg.s1ap_KillRequestIEs);
-      } else  {
-        ret = s1ap_compare_s1ap_killresponseies(
-                &m1->msg.s1ap_KillResponseIEs,
-                &m2->msg.s1ap_KillResponseIEs);
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_downlinkUEAssociatedLPPaTransport:
-      ret = s1ap_compare_s1ap_downlinkueassociatedlppatransport_ies(
-                &m1->msg.s1ap_DownlinkUEAssociatedLPPaTransport_IEs,
-                &m2->msg.s1ap_DownlinkUEAssociatedLPPaTransport_IEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_uplinkUEAssociatedLPPaTransport:
-      ret = s1ap_compare_s1ap_uplinkueassociatedlppatransport_ies(
-                &m1->msg.s1ap_UplinkUEAssociatedLPPaTransport_IEs,
-                &m2->msg.s1ap_UplinkUEAssociatedLPPaTransport_IEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_downlinkNonUEAssociatedLPPaTransport:
-      ret = s1ap_compare_s1ap_downlinknonueassociatedlppatransport_ies(
-                &m1->msg.s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs,
-                &m2->msg.s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs);
-      break;
-
-    case  S1ap_ProcedureCode_id_uplinkNonUEAssociatedLPPaTransport:
-      ret = s1ap_compare_s1ap_uplinknonueassociatedlppatransport_ies(
-                &m1->msg.s1ap_UplinkNonUEAssociatedLPPaTransport_IEs,
-                &m2->msg.s1ap_UplinkNonUEAssociatedLPPaTransport_IEs);
-      break;
-
-    default:
-      AssertFatal(0, "Unknown procedure code %ld", m1->procedureCode);
-  }
-  return ret;
-}
-
-
-void update_xpath_node_mme_ue_s1ap_id(et_s1ap_t * const s1ap, xmlNode *node, const S1ap_MME_UE_S1AP_ID_t new_id)
+void update_xpath_node_mme_ue_s1ap_id(et_s1ap_t *const s1ap, xmlNode *node, const S1AP_MME_UE_S1AP_ID_t new_id)
 {
   xmlNode       *cur_node = NULL;
   xmlAttrPtr     attr     = NULL;
@@ -464,24 +73,30 @@ void update_xpath_node_mme_ue_s1ap_id(et_s1ap_t * const s1ap, xmlNode *node, con
   // modify
   for (cur_node = (xmlNode *)node; cur_node; cur_node = cur_node->next) {
     go_deeper_in_tree = 1;
+
     if ((!xmlStrcmp(cur_node->name, (const xmlChar *)"field"))) {
       // do not get hidden fields
       xml_char = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"hide");
+
       if (NULL != xml_char) {
         if ((!xmlStrcmp(xml_char, (const xmlChar *)"yes"))) {
           go_deeper_in_tree = 0;
         }
+
         xmlFree(xml_char);
       }
+
       if (0 < go_deeper_in_tree) {
         // first get size
         xml_char = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"pos");
+
         if (NULL != xml_char) {
           pos = strtoul((const char *)xml_char, NULL, 0);
           pos -= s1ap->xml_stream_pos_offset;
           AssertFatal(pos >= 0, "Bad pos %d xml_stream_pos_offset %d", pos, s1ap->xml_stream_pos_offset);
           xmlFree(xml_char);
           xml_char = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"size");
+
           if (NULL != xml_char) {
             const xmlChar value_d[32];
             const xmlChar value_h[20];
@@ -491,7 +106,6 @@ void update_xpath_node_mme_ue_s1ap_id(et_s1ap_t * const s1ap, xmlNode *node, con
             unsigned long int uli = 0;
             char          hex[3]  = {0,0,0};
             char         *end_ptr = NULL;
-
             size = strtoul((const char *)xml_char, NULL, 0);
             xmlFree(xml_char);
             // second: try to set value (always hex)
@@ -501,12 +115,12 @@ void update_xpath_node_mme_ue_s1ap_id(et_s1ap_t * const s1ap, xmlNode *node, con
             AssertFatal((ret > 0) && (ret < 20), "Could not convert int to hex str");
             ret = snprintf((char *)showname, 64, "MME-UE-S1AP-ID: %d", new_id);
             AssertFatal((ret > 0) && (ret < 64), "Could not convert int to dec str");
-
             attr = xmlSetProp((xmlNode *)cur_node, (const xmlChar *)"value", value_h);
             attr = xmlSetProp((xmlNode *)cur_node, (const xmlChar *)"show", value_d);
             attr = xmlSetProp((xmlNode *)cur_node, (const xmlChar *)"showname", showname);
             //TODO update s1ap->binary_stream @pos with new_id_hex, size
             AssertFatal((pos+size) < s1ap->binary_stream_allocated_size, "Rewrite of mme_ue_s1ap_id out of bounds of binary_stream");
+
             //avoid endianess issues
             do {
               hex[0] = value_h[pos2++];
@@ -517,6 +131,7 @@ void update_xpath_node_mme_ue_s1ap_id(et_s1ap_t * const s1ap, xmlNode *node, con
               AssertFatal((uli != ULONG_MAX) && (end_ptr != NULL) && (*end_ptr == '\0'), "Conversion of hexstring %s failed returned %ld errno %d", hex, uli, errno);
               s1ap->binary_stream[pos++] = (unsigned char)uli;
             } while (pos2 < (2*5));
+
             // update ASN1
             et_decode_s1ap(s1ap);
             //S1AP_INFO("Updated ASN1 for %s\n", showname);
@@ -524,6 +139,7 @@ void update_xpath_node_mme_ue_s1ap_id(et_s1ap_t * const s1ap, xmlNode *node, con
         }
       }
     }
+
     if (0 < go_deeper_in_tree) {
       update_xpath_node_mme_ue_s1ap_id(s1ap, cur_node->children, new_id);
     }
@@ -538,12 +154,11 @@ void update_xpath_node_mme_ue_s1ap_id(et_s1ap_t * const s1ap, xmlNode *node, con
  * Prints the @nodes content to @output.
  * From http://www.xmlsoft.org/examples/#xpath2.c
  */
-void update_xpath_nodes_mme_ue_s1ap_id(et_s1ap_t * const s1ap_payload, xmlNodeSetPtr nodes, const S1ap_MME_UE_S1AP_ID_t new_id)
+void update_xpath_nodes_mme_ue_s1ap_id(et_s1ap_t *const s1ap_payload, xmlNodeSetPtr nodes, const S1AP_MME_UE_S1AP_ID_t new_id)
 {
   int           size = 0;
   int           i    = 0;
   xmlNode      *s1ap_node = NULL;
-
   size = (nodes) ? nodes->nodeNr : 0;
   //S1AP_DEBUG("%s() num nodes %u\n", __FUNCTION__, size);
 
@@ -559,6 +174,7 @@ void update_xpath_nodes_mme_ue_s1ap_id(et_s1ap_t * const s1ap_payload, xmlNodeSe
     s1ap_node = nodes->nodeTab[i];
     AssertFatal(NULL != s1ap_node, "One element of resultset of XPATH expression is NULL\n");
     update_xpath_node_mme_ue_s1ap_id(s1ap_payload, s1ap_node, new_id);
+
     /*
      * All the elements returned by an XPath query are pointers to
      * elements from the tree *except* namespace nodes where the XPath
@@ -581,28 +197,24 @@ void update_xpath_nodes_mme_ue_s1ap_id(et_s1ap_t * const s1ap_payload, xmlNodeSe
   }
 }
 //------------------------------------------------------------------------------
-int et_s1ap_update_mme_ue_s1ap_id(et_packet_t * const packet, const S1ap_MME_UE_S1AP_ID_t old_id, const S1ap_MME_UE_S1AP_ID_t new_id)
+int et_s1ap_update_mme_ue_s1ap_id(et_packet_t *const packet, const S1AP_MME_UE_S1AP_ID_t old_id, const S1AP_MME_UE_S1AP_ID_t new_id)
 {
-
-
   xmlChar              xpath_expression[ET_XPATH_EXPRESSION_MAX_LENGTH];
   int                  ret       = 0;
   xmlDocPtr            doc       = NULL;
   xmlXPathContextPtr   xpath_ctx = NULL;
   xmlXPathObjectPtr    xpath_obj = NULL;
-
   //S1AP_DEBUG("%s() packet num %u original frame number %u, mme_ue_s1ap_id %u -> %u\n", __FUNCTION__, packet->packet_number, packet->original_frame_number, old_id, new_id);
-
   ret = snprintf(xpath_expression, ET_XPATH_EXPRESSION_MAX_LENGTH, "//field[@name=\"s1ap.MME_UE_S1AP_ID\"][@show=\"%u\"]", old_id);
   AssertFatal((ret > 0) && (ret < ET_XPATH_EXPRESSION_MAX_LENGTH), "Could not build XPATH expression err=%d", ret);
-
   doc = packet->sctp_hdr.u.data_hdr.payload.doc;
   // Create xpath evaluation context
   xpath_ctx = xmlXPathNewContext(doc);
+
   if(xpath_ctx == NULL) {
-      fprintf(stderr,"Error: unable to create new XPath context\n");
-      xmlFreeDoc(doc);
-      return(-1);
+    fprintf(stderr,"Error: unable to create new XPath context\n");
+    xmlFreeDoc(doc);
+    return(-1);
   }
 
   // Evaluate xpath expression
@@ -610,17 +222,16 @@ int et_s1ap_update_mme_ue_s1ap_id(et_packet_t * const packet, const S1ap_MME_UE_
   xmlXPathFreeContext(xpath_ctx);
   AssertFatal(xpath_obj != NULL, "Unable to evaluate XPATH expression \"%s\"\n", xpath_expression);
 
-  if(xmlXPathNodeSetIsEmpty(xpath_obj->nodesetval)){
+  if(xmlXPathNodeSetIsEmpty(xpath_obj->nodesetval)) {
     xmlXPathFreeObject(xpath_obj);
     S1AP_DEBUG("%s() No match \"%s\"packet num %u original frame number %u, mme_ue_s1ap_id %u -> %u\n",
-        __FUNCTION__, xpath_expression, packet->packet_number, packet->original_frame_number, old_id, new_id);
+               __FUNCTION__, xpath_expression, packet->packet_number, packet->original_frame_number, old_id, new_id);
     return -1;
   }
+
   // update selected nodes
   update_xpath_nodes_mme_ue_s1ap_id(&packet->sctp_hdr.u.data_hdr.payload, xpath_obj->nodesetval, new_id);
-
   // Cleanup of XPath data
   xmlXPathFreeObject(xpath_obj);
-
   return 0;
 }
diff --git a/openair3/TEST/EPC_TEST/play_scenario_sctp.c b/openair3/TEST/EPC_TEST/play_scenario_sctp.c
index 8a9bc491c8d443a77ca03c2dbbb8b40f12429336..c126608598bdb62d6aeee08a3d05335941f2c863 100644
--- a/openair3/TEST/EPC_TEST/play_scenario_sctp.c
+++ b/openair3/TEST/EPC_TEST/play_scenario_sctp.c
@@ -36,22 +36,25 @@
 #include "play_scenario.h"
 
 //------------------------------------------------------------------------------
-asn_comp_rval_t * et_sctp_data_is_matching(sctp_datahdr_t * const sctp1, sctp_datahdr_t * const sctp2, const uint32_t constraints)
+asn_comp_rval_t *et_sctp_data_is_matching(sctp_datahdr_t *const sctp1, sctp_datahdr_t *const sctp2, const uint32_t constraints)
 {
   asn_comp_rval_t *rv = NULL;
+
   // no comparison for ports
-  if (sctp1->ppid     != sctp2->ppid) {
+  if (sctp1->ppid != sctp2->ppid) {
     S1AP_WARN("No Matching SCTP PPID %u %u\n", sctp1->ppid, sctp2->ppid);
     rv  = calloc(1, sizeof(asn_comp_rval_t));
     rv->err_code = ET_ERROR_MATCH_PACKET_SCTP_PPID;
     return rv;
   }
+
   if (sctp1->assoc_id != sctp2->assoc_id) {
     S1AP_WARN("No Matching SCTP assoc id %u %u\n", sctp1->assoc_id, sctp2->assoc_id);
     rv  = calloc(1, sizeof(asn_comp_rval_t));
     rv->err_code = ET_ERROR_MATCH_PACKET_SCTP_ASSOC_ID;
     return rv;
   }
+
   if (sctp1->stream != sctp2->stream) {
     if (constraints & ET_BIT_MASK_MATCH_SCTP_STREAM) {
       rv  = calloc(1, sizeof(asn_comp_rval_t));
@@ -61,30 +64,33 @@ asn_comp_rval_t * et_sctp_data_is_matching(sctp_datahdr_t * const sctp1, sctp_da
       S1AP_WARN("No Matching SCTP stream %u %u\n", sctp1->stream, sctp2->stream);
     }
   }
+
   // We do not have SSN from lower layers
-//  if (sctp1->ssn != sctp2->ssn) {
-//    if (constraints & ET_BIT_MASK_MATCH_SCTP_SSN) {
-//      rv  = calloc(1, sizeof(asn_comp_rval_t));
-//      rv->err_code = ET_ERROR_MATCH_PACKET_SCTP_SSN;
-//      return rv;
-//    } else {
-//      S1AP_WARN("No Matching SCTP STREAM SN %u %u\n", sctp1->ssn, sctp2->ssn);
-//    }
-//  }
+  //  if (sctp1->ssn != sctp2->ssn) {
+  //    if (constraints & ET_BIT_MASK_MATCH_SCTP_SSN) {
+  //      rv  = calloc(1, sizeof(asn_comp_rval_t));
+  //      rv->err_code = ET_ERROR_MATCH_PACKET_SCTP_SSN;
+  //      return rv;
+  //    } else {
+  //      S1AP_WARN("No Matching SCTP STREAM SN %u %u\n", sctp1->ssn, sctp2->ssn);
+  //    }
+  //  }
   return et_s1ap_is_matching(&sctp1->payload, &sctp2->payload,  constraints);
 }
 
 //------------------------------------------------------------------------------
-asn_comp_rval_t *  et_sctp_is_matching(et_sctp_hdr_t * const sctp1, et_sctp_hdr_t * const sctp2, const uint32_t constraints)
+asn_comp_rval_t *et_sctp_is_matching(et_sctp_hdr_t *const sctp1, et_sctp_hdr_t *const sctp2, const uint32_t constraints)
 {
   // no comparison for ports
   asn_comp_rval_t *rv = NULL;
-  if (sctp1->chunk_type != sctp2->chunk_type){
+
+  if (sctp1->chunk_type != sctp2->chunk_type) {
     S1AP_WARN("No Matching chunk_type %u %u\n", sctp1->chunk_type, sctp2->chunk_type);
     rv  = calloc(1, sizeof(asn_comp_rval_t));
     rv->err_code = ET_ERROR_MATCH_PACKET_SCTP_CHUNK_TYPE;
     return rv;
   }
+
   switch (sctp1->chunk_type) {
     case SCTP_CID_DATA:
       return et_sctp_data_is_matching(&sctp1->u.data_hdr, &sctp2->u.data_hdr, constraints);
@@ -93,9 +99,11 @@ asn_comp_rval_t *  et_sctp_is_matching(et_sctp_hdr_t * const sctp1, et_sctp_hdr_
     case SCTP_CID_INIT:
       AssertFatal(0, "Not needed now");
       break;
+
     case SCTP_CID_INIT_ACK:
       AssertFatal(0, "Not needed now");
       break;
+
     default:
       AssertFatal(0, "Not needed now cid %d", sctp1->chunk_type);
   }
diff --git a/openair3/TEST/oaisim_mme_client_test.c b/openair3/TEST/oaisim_mme_client_test.c
index 0e89511865c71e89341cc4d27dfe144e2896ac25..8fcda8a5ad01f5539d6511c022425ee5fb59d679 100644
--- a/openair3/TEST/oaisim_mme_client_test.c
+++ b/openair3/TEST/oaisim_mme_client_test.c
@@ -35,7 +35,6 @@
 #include "s1ap_common.h"
 #include "s1ap_eNB.h"
 #include "s1ap_mme.h"
-#include "s1ap_ies_defs.h"
 
 char ip_addr[] = "127.0.0.1";
 
@@ -60,13 +59,10 @@ int s1ap_eNB_generate_initial_ue_message(uint8_t **buffer,
 {
   InitialUEMessageIEs  initialUEmessageIEs;
   InitialUEMessageIEs *initialUEmessageIEs_p = &initialUEmessageIEs;
-
   memset(initialUEmessageIEs_p, 0, sizeof(InitialUEMessageIEs));
-
   initialUEmessageIEs.eNB_UE_S1AP_ID = eNB_UE_S1AP_ID;
   initialUEmessageIEs.nas_pdu.buf = infoNAS;
   initialUEmessageIEs.nas_pdu.size = sizeof(infoNAS);
-
   initialUEmessageIEs.tai.tAC.buf = tac;
   initialUEmessageIEs.tai.tAC.size = 2;
   initialUEmessageIEs.tai.pLMNidentity.buf = identity;
@@ -76,9 +72,7 @@ int s1ap_eNB_generate_initial_ue_message(uint8_t **buffer,
   initialUEmessageIEs.eutran_cgi.cell_ID.buf = id;
   initialUEmessageIEs.eutran_cgi.cell_ID.size = 4;
   initialUEmessageIEs.eutran_cgi.cell_ID.bits_unused = 4;
-
   initialUEmessageIEs.rrC_Establishment_Cause = RRC_Establishment_Cause_mo_Data;
-
   return s1ap_eNB_encode_initial_ue_message(initialUEmessageIEs_p, buffer, length);
 }
 
@@ -95,13 +89,10 @@ int main(int argc, char *argv[])
   asn_enc_rval_t retVal;
   uint8_t *buffer;
   uint32_t len;
-
   SupportedTAs_Item_t ta;
   PLMNidentity_t plmnIdentity;
-
   asn_debug = 0;
   asn1_xer_print = 0;
-
   S1SetupRequestIEs s1SetupRequest;
   memset(&s1SetupRequest, 0, sizeof(S1SetupRequestIEs));
   s1SetupRequest.global_ENB_ID.eNB_ID.present = ENB_ID_PR_macroENB_ID;
@@ -109,32 +100,23 @@ int main(int argc, char *argv[])
   s1SetupRequest.global_ENB_ID.eNB_ID.choice.macroENB_ID.size = 3;
   s1SetupRequest.global_ENB_ID.eNB_ID.choice.macroENB_ID.bits_unused = 4;
   OCTET_STRING_fromBuf(&s1SetupRequest.global_ENB_ID.pLMNidentity, identity, 3);
-
   s1SetupRequest.presenceMask |= S1SETUPREQUESTIES_ENBNAME_PRESENT;
   OCTET_STRING_fromBuf(&s1SetupRequest.eNBname, "ENB 1 eurecom",
                        strlen("ENB 1 eurecom"));
-
   memset(&ta, 0, sizeof(SupportedTAs_Item_t));
   memset(&plmnIdentity, 0, sizeof(PLMNidentity_t));
   OCTET_STRING_fromBuf(&ta.tAC, tac, 2);
   OCTET_STRING_fromBuf(&plmnIdentity, identity, 3);
   ASN_SEQUENCE_ADD(&ta.broadcastPLMNs, &plmnIdentity);
   ASN_SEQUENCE_ADD(&s1SetupRequest.supportedTAs, &ta);
-
   s1SetupRequest.defaultPagingDRX = PagingDRX_v64;
-
   s1ap_eNB_encode_s1setuprequest(&s1SetupRequest, &buffer, &len);
-
   assoc[0] = sctp_connect_to_remote_host(ip_addr, 36412, &recv_callback);
   sctp_send_msg(0, 0, buffer, len);
-
   free(buffer);
-
   //     generateUplinkNASTransport(&buffer, &len);
   //     sctp_send_msg(assoc[0], 0, buffer, len);
   //     s1ap_mme_decode_pdu(buffer, len);
-
   pthread_join(sctp_get_receiver_thread(assoc[0]), NULL);
-
   return(0);
 }
diff --git a/openair3/TEST/oaisim_mme_list_benchmark.c b/openair3/TEST/oaisim_mme_list_benchmark.c
index bfd9274b8a83bf937fa66595af1d194b329c5531..633e83aace9e37786af3b96ad2820ee0ca2868f3 100644
--- a/openair3/TEST/oaisim_mme_list_benchmark.c
+++ b/openair3/TEST/oaisim_mme_list_benchmark.c
@@ -35,7 +35,6 @@
 #include "s1ap_common.h"
 #include "s1ap_eNB.h"
 #include "s1ap_mme.h"
-#include "s1ap_ies_defs.h"
 
 #include "s1ap_eNB_encoder.h"
 #include "s1ap_eNB_decoder.h"
@@ -79,27 +78,22 @@ void s1ap_test_generate_s1_setup_request(uint32_t eNB_id, uint8_t **buffer,
   SupportedTAs_Item_t ta;
   PLMNidentity_t plmnIdentity;
   uint8_t *id_p = (uint8_t *)(&eNB_id + 1);
-
   memset(&s1SetupRequest, 0, sizeof(S1SetupRequestIEs_t));
   s1SetupRequest.global_ENB_ID.eNB_ID.present = ENB_ID_PR_macroENB_ID;
   s1SetupRequest.global_ENB_ID.eNB_ID.choice.macroENB_ID.buf = id_p;
   s1SetupRequest.global_ENB_ID.eNB_ID.choice.macroENB_ID.size = 3;
   s1SetupRequest.global_ENB_ID.eNB_ID.choice.macroENB_ID.bits_unused = 4;
   OCTET_STRING_fromBuf(&s1SetupRequest.global_ENB_ID.pLMNidentity, identity, 3);
-
   s1SetupRequest.presenceMask |= S1SETUPREQUESTIES_ENBNAME_PRESENT;
   OCTET_STRING_fromBuf(&s1SetupRequest.eNBname, "ENB 1 eurecom",
                        strlen("ENB 1 eurecom"));
-
   memset(&ta, 0, sizeof(SupportedTAs_Item_t));
   memset(&plmnIdentity, 0, sizeof(PLMNidentity_t));
   OCTET_STRING_fromBuf(&ta.tAC, tac, 2);
   OCTET_STRING_fromBuf(&plmnIdentity, identity, 3);
   ASN_SEQUENCE_ADD(&ta.broadcastPLMNs, &plmnIdentity);
   ASN_SEQUENCE_ADD(&s1SetupRequest.supportedTAs, &ta);
-
   s1SetupRequest.defaultPagingDRX = PagingDRX_v64;
-
   s1ap_eNB_encode_s1_setup_request(&s1SetupRequest, buffer, length);
 }
 
@@ -109,13 +103,10 @@ int s1ap_test_generate_initial_ue_message(uint32_t eNB_UE_S1AP_ID,
 {
   InitialUEMessageIEs_t  initialUEmessageIEs;
   InitialUEMessageIEs_t *initialUEmessageIEs_p = &initialUEmessageIEs;
-
   memset(initialUEmessageIEs_p, 0, sizeof(InitialUEMessageIEs_t));
-
   initialUEmessageIEs.eNB_UE_S1AP_ID = eNB_UE_S1AP_ID & 0x00ffffff;
   initialUEmessageIEs.nas_pdu.buf = (uint8_t *)infoNAS;
   initialUEmessageIEs.nas_pdu.size = sizeof(infoNAS);
-
   initialUEmessageIEs.tai.tAC.buf = (uint8_t *)tac;
   initialUEmessageIEs.tai.tAC.size = 2;
   initialUEmessageIEs.tai.pLMNidentity.buf = (uint8_t *)identity;
@@ -125,9 +116,7 @@ int s1ap_test_generate_initial_ue_message(uint32_t eNB_UE_S1AP_ID,
   initialUEmessageIEs.eutran_cgi.cell_ID.buf = (uint8_t *)id;
   initialUEmessageIEs.eutran_cgi.cell_ID.size = 4;
   initialUEmessageIEs.eutran_cgi.cell_ID.bits_unused = 4;
-
   initialUEmessageIEs.rrC_Establishment_Cause = RRC_Establishment_Cause_mo_Data;
-
   return s1ap_eNB_encode_initial_ue_message(initialUEmessageIEs_p, buffer, length);
 }
 
@@ -140,26 +129,19 @@ int s1ap_test_generate_initial_setup_resp(uint32_t eNB_UE_S1AP_ID,
 {
   InitialContextSetupResponseIEs_t  initialResponseIEs;
   InitialContextSetupResponseIEs_t *initialResponseIEs_p = &initialResponseIEs;
-
   E_RABSetupItemCtxtSURes_t e_RABSetupItemCtxtSURes;
-
   memset(initialResponseIEs_p, 0, sizeof(InitialContextSetupResponseIEs_t));
   memset(&e_RABSetupItemCtxtSURes, 0, sizeof(E_RABSetupItemCtxtSURes_t));
-
   initialResponseIEs_p->mme_ue_s1ap_id = mme_UE_S1AP_ID;
   initialResponseIEs_p->eNB_UE_S1AP_ID = eNB_UE_S1AP_ID;
-
   e_RABSetupItemCtxtSURes.e_RAB_ID = eRAB_id;
   e_RABSetupItemCtxtSURes.transportLayerAddress.buf = (uint8_t *)&ipv4_local;
   e_RABSetupItemCtxtSURes.transportLayerAddress.size = 4;
-
   e_RABSetupItemCtxtSURes.gTP_TEID.buf = (uint8_t *)&teid;
   e_RABSetupItemCtxtSURes.gTP_TEID.size = 4;
-
   ASN_SEQUENCE_ADD(
     &initialResponseIEs_p->e_RABSetupListCtxtSURes.e_RABSetupItemCtxtSURes,
     &e_RABSetupItemCtxtSURes);
-
   return s1ap_eNB_encode_initial_context_setup_response(initialResponseIEs_p,
          buffer, length);
 }
@@ -169,19 +151,19 @@ int recv_callback(uint32_t  assocId,
                   uint8_t  *buffer,
                   uint32_t  length)
 {
-  s1ap_message message;
+  S1AP_S1AP_PDU_t pdu;
   uint8_t *buffer2;
   uint32_t len;
   int j;
 
-  if (s1ap_eNB_decode_pdu(&message, buffer, length) < 0) {
+  if (s1ap_eNB_decode_pdu(&pdu, buffer, length) < 0) {
     fprintf(stderr, "s1ap_eNB_decode_pdu returned status < 0\n");
     free(buffer);
     return -1;
   }
 
-  if (message.procedureCode == ProcedureCode_id_S1Setup
-      && message.direction == S1AP_PDU_PR_successfulOutcome) {
+  if (pdu.initiatingMessage.procedureCode == S1AP_ProcedureCode_id_S1Setup
+      && pdu.present == S1AP_S1AP_PDU_PR_successfulOutcome) {
     for (j = 0; j < nb_ue; j++) {
       s1ap_test_generate_initial_ue_message(j, &buffer2, &len);
 
@@ -194,8 +176,8 @@ int recv_callback(uint32_t  assocId,
 
       free(buffer2);
     }
-  } else if (message.procedureCode == ProcedureCode_id_InitialContextSetup
-             && message.direction == S1AP_PDU_PR_initiatingMessage) {
+  } else if (pdu.initiatingMessage.procedureCode == S1AP_ProcedureCode_id_InitialContextSetup
+             && pdu.present == S1AP_PDU_PR_initiatingMessage) {
     fprintf(stdout, "Received InitialContextSetup request\n");
     s1ap_test_generate_initial_setup_resp(
       message.msg.initialContextSetupRequestIEs.eNB_UE_S1AP_ID,
@@ -220,7 +202,6 @@ int recv_callback(uint32_t  assocId,
   }
 
   free(buffer);
-
   return 0;
 }
 
@@ -231,9 +212,7 @@ int sctp_connected(void     *args,
 {
   uint8_t *buffer;
   uint32_t len;
-
   fprintf(stdout, "New association %d\n", assocId);
-
   s1ap_test_generate_s1_setup_request(assocId * nb_eNB, &buffer, &len);
 
   if (sctp_send_msg(assocId, 0, buffer, len) < 0) {
@@ -244,7 +223,6 @@ int sctp_connected(void     *args,
   }
 
   free(buffer);
-
   connected_eNB++;
   return 0;
 }
@@ -252,12 +230,9 @@ int sctp_connected(void     *args,
 int main(int argc, char *argv[])
 {
   asn_enc_rval_t retVal;
-
   int i;
-
   SupportedTAs_Item_t ta;
   PLMNidentity_t plmnIdentity;
-
   asn_debug = 0;
   asn1_xer_print = 0;
 
@@ -278,12 +253,9 @@ int main(int argc, char *argv[])
     sleep(1);
   }
 
-
   //     generateUplinkNASTransport(&buffer, &len);
   //     sctp_send_msg(assoc[0], 0, buffer, len);
   //     s1ap_mme_decode_pdu(buffer, len);
-
   sctp_terminate();
-
   return(0);
 }
diff --git a/openair3/TEST/oaisim_mme_s1ap_test.c b/openair3/TEST/oaisim_mme_s1ap_test.c
index 1f7c1d3bbf803f406feb710f4bed60b33e4271ed..aa8f92aee128750cffa67e06f3db364f5e0e2b7f 100644
--- a/openair3/TEST/oaisim_mme_s1ap_test.c
+++ b/openair3/TEST/oaisim_mme_s1ap_test.c
@@ -145,16 +145,16 @@ int main(int argc, char *argv[])
   }
 
   for (i = 0; i < sizeof(s1ap_test) / sizeof(s1ap_test_t); i++) {
-    struct s1ap_message_s message;
+    S1AP_S1AP_PDU_t pdu;
     uint8_t *buffer;
     uint32_t length;
-    memset(&message, 0, sizeof(struct s1ap_message_s));
+    memset(&pdu, 0, sizeof(pdu));
     printf("Trying to decode %s procedure with asn1c decoder\n",
            s1ap_test[i].procedure_name);
 
-    if (s1ap_mme_decode_pdu(&message, s1ap_test[i].buffer,
+    if (s1ap_mme_decode_pdu(&pdu, s1ap_test[i].buffer,
                             s1ap_test[i].buf_len) < 0) {
-      if (s1ap_eNB_decode_pdu(&message, s1ap_test[i].buffer,
+      if (s1ap_eNB_decode_pdu(&pdu, s1ap_test[i].buffer,
                               s1ap_test[i].buf_len) < 0) {
         printf("Failed to decode this message\n");
       } else {
@@ -167,7 +167,7 @@ int main(int argc, char *argv[])
     printf("Trying to encode %s procedure with asn1c encoder\n",
            s1ap_test[i].procedure_name);
 
-    if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+    if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
       printf("Failed to encode this message on MME side, trying eNB side\n");
     } else {
       compare_buffer(buffer, length, s1ap_test[i].buffer, s1ap_test[i].buf_len);
diff --git a/openair3/TEST/oaisim_mme_sctp_test.c b/openair3/TEST/oaisim_mme_sctp_test.c
index d810f9ee8f8f19936d14cb58f8c911ead3f5e1ca..b8be3e185cc9aa1a853545728af771901e7c5152 100644
--- a/openair3/TEST/oaisim_mme_sctp_test.c
+++ b/openair3/TEST/oaisim_mme_sctp_test.c
@@ -35,7 +35,6 @@
 #include "s1ap_common.h"
 #include "s1ap_eNB.h"
 #include "s1ap_mme.h"
-#include "s1ap_ies_defs.h"
 
 #include "s1ap_eNB_encoder.h"
 #include "s1ap_eNB_decoder.h"
@@ -45,9 +44,7 @@ int recv_callback(uint32_t  assocId,
                   uint8_t  *buffer,
                   uint32_t  length)
 {
-
   free(buffer);
-
   return 0;
 }
 
@@ -56,14 +53,12 @@ int sctp_connected(void     *args,
                    uint32_t  instreams,
                    uint32_t  outstreams)
 {
-
   return 0;
 }
 
 int main(int argc, char *argv[])
 {
   asn_enc_rval_t retVal;
-
   int i;
 
   for (i = 0; i < nb_eNB; i++) {
@@ -75,6 +70,5 @@ int main(int argc, char *argv[])
   }
 
   sctp_terminate();
-
   return(0);
 }
diff --git a/openair3/TEST/oaisim_mme_test_s1c_s1ap.c b/openair3/TEST/oaisim_mme_test_s1c_s1ap.c
index 993fad2f89df6ab11e49dacfd8f82abcccded082..10d43d595d3107544d046996d774b78f5ffdaae2 100644
--- a/openair3/TEST/oaisim_mme_test_s1c_s1ap.c
+++ b/openair3/TEST/oaisim_mme_test_s1c_s1ap.c
@@ -43,7 +43,6 @@
 #include "intertask_interface.h"
 #include "s1ap_eNB_default_values.h"
 #include "s1ap_common.h"
-#include "s1ap_ies_defs.h"
 #include "s1ap_eNB_defs.h"
 #include "s1ap_eNB_management_procedures.h"
 #include "assertions.h"
@@ -55,11 +54,9 @@
 void s1ap_eNB_handle_sctp_data_ind(sctp_data_ind_t *sctp_data_ind)
 {
   int result;
-
   DevAssert(sctp_data_ind != NULL);
   mme_test_s1_notify_sctp_data_ind(sctp_data_ind->assoc_id, sctp_data_ind->stream,
-          sctp_data_ind->buffer, sctp_data_ind->buffer_length);
-
+                                   sctp_data_ind->buffer, sctp_data_ind->buffer_length);
   result = itti_free(TASK_UNKNOWN, sctp_data_ind->buffer);
   AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
 }
@@ -70,16 +67,12 @@ void s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, uin
 {
   MessageDef      *message_p;
   sctp_data_req_t *sctp_data_req;
-
   message_p = itti_alloc_new_message(TASK_S1AP, SCTP_DATA_REQ);
-
   sctp_data_req = &message_p->ittiMsg.sctp_data_req;
-
   sctp_data_req->assoc_id      = assoc_id;
   sctp_data_req->buffer        = buffer;
   sctp_data_req->buffer_length = buffer_length;
   sctp_data_req->stream        = stream;
-
   itti_send_msg_to_task(TASK_SCTP, instance, message_p);
 }
 
@@ -100,7 +93,6 @@ void s1ap_handle_s1_setup_message(s1ap_eNB_mme_data_t *mme_desc_p, int sctp_shut
       /* If there are no more associated MME, inform eNB app */
       if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb == 0) {
         MessageDef                 *message_p;
-
         message_p = itti_alloc_new_message(TASK_S1AP, S1AP_DEREGISTERED_ENB_IND);
         S1AP_DEREGISTERED_ENB_IND(message_p).nb_mme = 0;
         itti_send_msg_to_task(TASK_ENB_APP, mme_desc_p->s1ap_eNB_instance->instance, message_p);
@@ -119,7 +111,6 @@ void s1ap_handle_s1_setup_message(s1ap_eNB_mme_data_t *mme_desc_p, int sctp_shut
     /* If there are no more pending messages, inform eNB app */
     if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_pending_nb == 0) {
       MessageDef                 *message_p;
-
       message_p = itti_alloc_new_message(TASK_S1AP, S1AP_REGISTER_ENB_CNF);
       S1AP_REGISTER_ENB_CNF(message_p).nb_mme = mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb;
       itti_send_msg_to_task(TASK_ENB_APP, mme_desc_p->s1ap_eNB_instance->instance, message_p);
@@ -131,12 +122,9 @@ void s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
 {
   s1ap_eNB_instance_t *instance_p;
   s1ap_eNB_mme_data_t *s1ap_mme_data_p;
-
   DevAssert(sctp_new_association_resp != NULL);
-
   instance_p = s1ap_eNB_get_instance(instance);
   DevAssert(instance_p != NULL);
-
   s1ap_mme_data_p = s1ap_eNB_get_MME(instance_p, -1,
                                      sctp_new_association_resp->ulp_cnx_id);
   DevAssert(s1ap_mme_data_p != NULL);
@@ -146,9 +134,7 @@ void s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
               sctp_new_association_resp->sctp_state,
               instance,
               sctp_new_association_resp->ulp_cnx_id);
-
     s1ap_handle_s1_setup_message(s1ap_mme_data_p, sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN);
-
     return;
   }
 
@@ -156,49 +142,37 @@ void s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
   s1ap_mme_data_p->assoc_id    = sctp_new_association_resp->assoc_id;
   s1ap_mme_data_p->in_streams  = sctp_new_association_resp->in_streams;
   s1ap_mme_data_p->out_streams = sctp_new_association_resp->out_streams;
-
   /* Prepare new S1 Setup Request */
   mme_test_s1_start_test(instance_p, s1ap_mme_data_p);
 }
 
 void s1ap_eNB_register_mme(s1ap_eNB_instance_t *instance_p,
-                                  net_ip_address_t    *mme_ip_address,
-                                  net_ip_address_t    *local_ip_addr)
+                           net_ip_address_t    *mme_ip_address,
+                           net_ip_address_t    *local_ip_addr)
 {
   MessageDef                 *message_p                   = NULL;
   sctp_new_association_req_t *sctp_new_association_req_p  = NULL;
   s1ap_eNB_mme_data_t        *s1ap_mme_data_p             = NULL;
-
   DevAssert(instance_p != NULL);
   DevAssert(mme_ip_address != NULL);
-
   message_p = itti_alloc_new_message(TASK_S1AP, SCTP_NEW_ASSOCIATION_REQ);
-
   sctp_new_association_req_p = &message_p->ittiMsg.sctp_new_association_req;
-
   sctp_new_association_req_p->port = S1AP_PORT_NUMBER;
   sctp_new_association_req_p->ppid = S1AP_SCTP_PPID;
-
   memcpy(&sctp_new_association_req_p->remote_address,
          mme_ip_address,
          sizeof(*mme_ip_address));
-
   memcpy(&sctp_new_association_req_p->local_address,
          local_ip_addr,
          sizeof(*local_ip_addr));
-
   /* Create new MME descriptor */
   s1ap_mme_data_p = calloc(1, sizeof(*s1ap_mme_data_p));
   DevAssert(s1ap_mme_data_p != NULL);
-
   s1ap_mme_data_p->cnx_id                = s1ap_eNB_fetch_add_global_cnx_id();
   sctp_new_association_req_p->ulp_cnx_id = s1ap_mme_data_p->cnx_id;
-
   s1ap_mme_data_p->assoc_id          = -1;
   s1ap_mme_data_p->s1ap_eNB_instance = instance_p;
-
   STAILQ_INIT(&s1ap_mme_data_p->served_gummei);
-
   /* Insert the new descriptor in list of known MME
    * but not yet associated.
    */
@@ -206,7 +180,6 @@ void s1ap_eNB_register_mme(s1ap_eNB_instance_t *instance_p,
   s1ap_mme_data_p->state = S1AP_ENB_STATE_WAITING;
   instance_p->s1ap_mme_nb ++;
   instance_p->s1ap_mme_pending_nb ++;
-
   itti_send_msg_to_task(TASK_SCTP, instance_p->instance, message_p);
 }
 
@@ -216,9 +189,7 @@ void s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t *
 {
   s1ap_eNB_instance_t *new_instance;
   uint8_t index;
-
   DevAssert(s1ap_register_eNB != NULL);
-
   /* Look if the provided instance already exists */
   new_instance = s1ap_eNB_get_instance(instance);
 
@@ -234,10 +205,8 @@ void s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t *
   } else {
     new_instance = calloc(1, sizeof(s1ap_eNB_instance_t));
     DevAssert(new_instance != NULL);
-
     RB_INIT(&new_instance->s1ap_ue_head);
     RB_INIT(&new_instance->s1ap_mme_head);
-
     /* Copy usefull parameters */
     new_instance->instance         = instance;
     new_instance->eNB_name         = s1ap_register_eNB->eNB_name;
@@ -248,10 +217,8 @@ void s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t *
     new_instance->mnc              = s1ap_register_eNB->mnc;
     new_instance->mnc_digit_length = s1ap_register_eNB->mnc_digit_length;
     new_instance->default_drx      = s1ap_register_eNB->default_drx;
-
     /* Add the new instance to the list of eNB (meaningfull in virtual mode) */
     s1ap_eNB_insert_new_instance(new_instance);
-
     S1AP_DEBUG("Registered new eNB[%d] and %s eNB id %u\n",
                instance,
                s1ap_register_eNB->cell_type == CELL_MACRO_ENB ? "macro" : "home",
@@ -275,54 +242,48 @@ void *s1ap_eNB_task(void *arg)
 {
   MessageDef *received_msg = NULL;
   int         result;
-
   S1AP_DEBUG("Starting S1AP layer\n");
-
   s1ap_eNB_prepare_internal_data();
-
   itti_mark_task_ready(TASK_S1AP);
 
   while (1) {
     itti_receive_msg(TASK_S1AP, &received_msg);
 
     switch (ITTI_MSG_ID(received_msg)) {
-    case TERMINATE_MESSAGE:
-      itti_exit_task();
+      case TERMINATE_MESSAGE:
+        itti_exit_task();
+        break;
+
+      case S1AP_REGISTER_ENB_REQ: {
+        /* Register a new eNB.
+         * in Virtual mode eNBs will be distinguished using the mod_id/
+         * Each eNB has to send an S1AP_REGISTER_ENB message with its
+         * own parameters.
+         */
+        s1ap_eNB_handle_register_eNB(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                     &S1AP_REGISTER_ENB_REQ(received_msg));
+      }
       break;
 
-    case S1AP_REGISTER_ENB_REQ: {
-      /* Register a new eNB.
-       * in Virtual mode eNBs will be distinguished using the mod_id/
-       * Each eNB has to send an S1AP_REGISTER_ENB message with its
-       * own parameters.
-       */
-      s1ap_eNB_handle_register_eNB(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                   &S1AP_REGISTER_ENB_REQ(received_msg));
-    }
-    break;
-
-    case SCTP_NEW_ASSOCIATION_RESP: {
-      s1ap_eNB_handle_sctp_association_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                            &received_msg->ittiMsg.sctp_new_association_resp);
-    }
-    break;
-
-    case SCTP_DATA_IND: {
-      s1ap_eNB_handle_sctp_data_ind(&received_msg->ittiMsg.sctp_data_ind);
-    }
-    break;
-
-
+      case SCTP_NEW_ASSOCIATION_RESP: {
+        s1ap_eNB_handle_sctp_association_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                              &received_msg->ittiMsg.sctp_new_association_resp);
+      }
+      break;
 
-    default:
-      S1AP_ERROR("Received unhandled message: %d:%s\n",
-                 ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
+      case SCTP_DATA_IND: {
+        s1ap_eNB_handle_sctp_data_ind(&received_msg->ittiMsg.sctp_data_ind);
+      }
       break;
+
+      default:
+        S1AP_ERROR("Received unhandled message: %d:%s\n",
+                   ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
+        break;
     }
 
     result = itti_free (ITTI_MSG_ORIGIN_ID(received_msg), received_msg);
     AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-
     received_msg = NULL;
   }
 
diff --git a/openair3/TEST/test_s1ap.c b/openair3/TEST/test_s1ap.c
index a366796f77da1e201e73782be16e69da225f19f1..a040822155daadefdd241cc6a117239286068b41 100644
--- a/openair3/TEST/test_s1ap.c
+++ b/openair3/TEST/test_s1ap.c
@@ -153,22 +153,20 @@ static int compare_buffer(uint8_t *buffer, uint32_t length_buffer,
 void doit (void)
 {
   int i;
-
   break_on_error = 1;
 
   //     asn1_xer_print = 1;
   //     asn_debug = 1;
 
   for (i = 0; i < sizeof(s1ap_test) / sizeof(s1ap_test_t); i++) {
-    struct s1ap_message_s message;
+    S1AP_S1AP_PDU_t pdu;
     uint8_t *buffer;
     uint32_t length;
-
-    memset(&message, 0, sizeof(struct s1ap_message_s));
+    memset(&pdu, 0, sizeof(pdu));
 
     if (s1ap_test[i].originating == ENB) {
       /* eNB originated procedure -> USE MME decoder */
-      if (s1ap_mme_decode_pdu(&message, s1ap_test[i].buffer,
+      if (s1ap_mme_decode_pdu(&pdu, s1ap_test[i].buffer,
                               s1ap_test[i].buf_len) < 0) {
         fail("Failed to decode %s\n", s1ap_test[i].procedure_name);
       } else {
@@ -176,7 +174,7 @@ void doit (void)
       }
     } else {
       /* MME originated procedure -> USE eNB decoder */
-      if (s1ap_eNB_decode_pdu(&message, s1ap_test[i].buffer,
+      if (s1ap_eNB_decode_pdu(&pdu, s1ap_test[i].buffer,
                               s1ap_test[i].buf_len) < 0) {
         fail("Failed to decode %s\n", s1ap_test[i].procedure_name);
       } else {
@@ -186,14 +184,14 @@ void doit (void)
 
     if (s1ap_test[i].originating == ENB) {
       /* eNB originated procedure -> USE eNB encoder */
-      if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+      if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
         fail("Failed to decode %s\n", s1ap_test[i].procedure_name);
       } else {
         success("Encoded %s correctly\n", s1ap_test[i].procedure_name);
       }
     } else {
       /* MME originated procedure -> USE mme encoder */
-      if (s1ap_mme_encode_pdu(&message, &buffer, &length) < 0) {
+      if (s1ap_mme_encode_pdu(&pdu, &buffer, &length) < 0) {
         fail("Failed to encode %s\n", s1ap_test[i].procedure_name);
       } else {
         success("Encoded %s correctly\n", s1ap_test[i].procedure_name);