From 3e8899fc962cb16fc1ded49590ca5dddede54978 Mon Sep 17 00:00:00 2001
From: Sakthivel Velumani <velumani@eurecom.fr>
Date: Wed, 4 Jan 2023 10:14:11 +0530
Subject: [PATCH] Fix function arguments and warnings

---
 openair2/E1AP/e1ap.c               | 497 ++++++++++++++---------------
 openair2/E1AP/e1ap.h               |  18 +-
 openair2/E1AP/e1ap_api.c           |  10 +-
 openair2/E1AP/e1ap_api.h           |   4 +-
 openair2/F1AP/f1ap_decoder.c       |   2 +-
 openair2/RRC/NR/cucp_cuup_direct.c |  26 +-
 openair2/RRC/NR/cucp_cuup_e1ap.c   |   8 +-
 openair2/RRC/NR/cucp_cuup_if.h     |  16 +-
 openair2/RRC/NR/nr_rrc_defs.h      |   4 +-
 openair2/RRC/NR/rrc_gNB.c          |   7 +-
 openair2/RRC/NR/rrc_gNB_NGAP.c     |   2 +-
 11 files changed, 287 insertions(+), 307 deletions(-)

diff --git a/openair2/E1AP/e1ap.c b/openair2/E1AP/e1ap.c
index c98ca4f3f5d..ab2455a86b4 100644
--- a/openair2/E1AP/e1ap.c
+++ b/openair2/E1AP/e1ap.c
@@ -36,7 +36,7 @@
 #define E1AP_NUM_MSG_HANDLERS 14
 typedef int (*e1ap_message_processing_t)(
   instance_t            instance,
-  E1AP_E1AP_PDU_t       *message_p
+  const E1AP_E1AP_PDU_t       *message_p
 );
 e1ap_message_processing_t e1ap_message_processing[E1AP_NUM_MSG_HANDLERS][3] = {
 
@@ -168,13 +168,13 @@ int e1ap_send_ERROR_INDICATION(instance_t instance, E1AP_ErrorIndication_t *Erro
     E1 Setup: can be sent on both ways, to be refined
 */
 
-int e1apCUUP_send_SETUP_REQUEST(instance_t instance) {
-  E1AP_E1AP_PDU_t pdu = {0};
+void fill_SETUP_REQUEST(instance_t instance,
+                        E1AP_E1AP_PDU_t *pdu) {
   e1ap_setup_req_t *setup = &getCxtE1(UPtype, instance)->setupReq;
   /* Create */
   /* 0. pdu Type */
-  pdu.present = E1AP_E1AP_PDU_PR_initiatingMessage;
-  asn1cCalloc(pdu.choice.initiatingMessage, initMsg);
+  pdu->present = E1AP_E1AP_PDU_PR_initiatingMessage;
+  asn1cCalloc(pdu->choice.initiatingMessage, initMsg);
   initMsg->procedureCode = E1AP_ProcedureCode_id_gNB_CU_UP_E1Setup;
   initMsg->criticality   = E1AP_Criticality_reject;
   initMsg->value.present       = E1AP_InitiatingMessage__value_PR_GNB_CU_UP_E1SetupRequest;
@@ -217,22 +217,19 @@ int e1apCUUP_send_SETUP_REQUEST(instance_t instance) {
     /* 5.1 PLMN Identity */
     MCC_MNC_TO_PLMNID(setup->plmns[i].mcc, setup->plmns[i].mnc, setup->plmns[i].mnc_digit_length, &supportedPLMN->pLMN_Identity);
   }
-
-  e1ap_encode_send(UPtype, instance, &pdu, 0, __func__);
-  return 0;
 }
 
-int e1apCUCP_send_SETUP_RESPONSE(instance_t instance,
-                                 e1ap_setup_resp_t *e1ap_setup_resp) {
-  E1AP_E1AP_PDU_t pdu = {0};
+void fill_SETUP_RESPONSE(instance_t instance,
+                           const e1ap_setup_resp_t *e1ap_setup_resp,
+                           E1AP_E1AP_PDU_t *pdu) {
   /* Create */
   /* 0. pdu Type */
-  pdu.present = E1AP_E1AP_PDU_PR_successfulOutcome;
-  asn1cCalloc(pdu.choice.successfulOutcome, initMsg);
+  pdu->present = E1AP_E1AP_PDU_PR_successfulOutcome;
+  asn1cCalloc(pdu->choice.successfulOutcome, initMsg);
   initMsg->procedureCode = E1AP_ProcedureCode_id_gNB_CU_UP_E1Setup;
   initMsg->criticality = E1AP_Criticality_reject;
   initMsg->value.present = E1AP_SuccessfulOutcome__value_PR_GNB_CU_UP_E1SetupResponse;
-  E1AP_GNB_CU_UP_E1SetupResponse_t *out = &pdu.choice.successfulOutcome->value.choice.GNB_CU_UP_E1SetupResponse;
+  E1AP_GNB_CU_UP_E1SetupResponse_t *out = &pdu->choice.successfulOutcome->value.choice.GNB_CU_UP_E1SetupResponse;
   /* mandatory */
   /* c1. Transaction ID (integer value) */
   asn1cSequenceAdd(out->protocolIEs.list, E1AP_GNB_CU_UP_E1SetupResponseIEs_t, ieC1);
@@ -240,22 +237,27 @@ int e1apCUCP_send_SETUP_RESPONSE(instance_t instance,
   ieC1->criticality                = E1AP_Criticality_reject;
   ieC1->value.present              = E1AP_GNB_CU_UP_E1SetupResponseIEs__value_PR_TransactionID;
   ieC1->value.choice.TransactionID = e1ap_setup_resp->transac_id;
+}
 
+void e1apCUCP_send_SETUP_RESPONSE(instance_t instance,
+                                  const e1ap_setup_resp_t *e1ap_setup_resp) {
+  E1AP_E1AP_PDU_t pdu = {0};
+  fill_SETUP_RESPONSE(instance, e1ap_setup_resp, &pdu);
   e1ap_encode_send(CPtype, instance, &pdu, 0, __func__);
-  return 0;
+
 }
 
-int e1apCUCP_send_SETUP_FAILURE(instance_t instance,
-                                long transac_id) {
-  E1AP_E1AP_PDU_t pdu = {0};
+void fill_SETUP_FAILURE(instance_t instance,
+                        long transac_id,
+                        E1AP_E1AP_PDU_t *pdu) {
   /* Create */
   /* 0. pdu Type */
-  pdu.present = E1AP_E1AP_PDU_PR_unsuccessfulOutcome;
-  asn1cCalloc(pdu.choice.unsuccessfulOutcome, initMsg);
+  pdu->present = E1AP_E1AP_PDU_PR_unsuccessfulOutcome;
+  asn1cCalloc(pdu->choice.unsuccessfulOutcome, initMsg);
   initMsg->procedureCode = E1AP_ProcedureCode_id_gNB_CU_UP_E1Setup;
   initMsg->criticality = E1AP_Criticality_reject;
   initMsg->value.present = E1AP_UnsuccessfulOutcome__value_PR_GNB_CU_UP_E1SetupFailure;
-  E1AP_GNB_CU_UP_E1SetupFailure_t *out = &pdu.choice.unsuccessfulOutcome->value.choice.GNB_CU_UP_E1SetupFailure;
+  E1AP_GNB_CU_UP_E1SetupFailure_t *out = &pdu->choice.unsuccessfulOutcome->value.choice.GNB_CU_UP_E1SetupFailure;
   /* mandatory */
   /* c1. Transaction ID (integer value) */
   asn1cSequenceAdd(out->protocolIEs.list, E1AP_GNB_CU_UP_E1SetupFailureIEs_t, ieC1);
@@ -271,20 +273,19 @@ int e1apCUCP_send_SETUP_FAILURE(instance_t instance,
   ieC2->value.present              = E1AP_GNB_CU_UP_E1SetupFailureIEs__value_PR_Cause;
   ieC2->value.choice.Cause.present = E1AP_Cause_PR_radioNetwork; //choose this accordingly
   ieC2->value.choice.Cause.choice.radioNetwork = E1AP_CauseRadioNetwork_unspecified;
+}
 
+void e1apCUCP_send_SETUP_FAILURE(instance_t instance,
+                                long transac_id) {
+  E1AP_E1AP_PDU_t pdu = {0};
+  fill_SETUP_FAILURE(instance, transac_id, &pdu);
   e1ap_encode_send(CPtype, instance, &pdu, 0, __func__);
-  return 0;
 }
 
-int e1apCUCP_handle_SETUP_REQUEST(instance_t instance,
-                                  E1AP_E1AP_PDU_t *pdu) {
-
+void extract_SETUP_REQUEST(const E1AP_E1AP_PDU_t *pdu,
+                           e1ap_setup_req_t *req) {
   E1AP_GNB_CU_UP_E1SetupRequestIEs_t *ie;
-  DevAssert(pdu != NULL);
   E1AP_GNB_CU_UP_E1SetupRequest_t *in = &pdu->choice.initiatingMessage->value.choice.GNB_CU_UP_E1SetupRequest;
-
-  e1ap_setup_req_t *req = &getCxtE1(CPtype, instance)->setupReq;
-
   /* assoc_id */
   /* req->assoc_id = assoc_id; */
 
@@ -322,7 +323,16 @@ int e1apCUCP_handle_SETUP_REQUEST(instance_t instance,
                     req->plmns[i].mnc_digit_length);
     LOG_D(E1AP, "MCC: %d\nMNC: %d\n", req->plmns[i].mcc, req->plmns[i].mnc);
   }
+}
 
+int e1apCUCP_handle_SETUP_REQUEST(instance_t instance,
+                                  const E1AP_E1AP_PDU_t *pdu) {
+
+  DevAssert(pdu != NULL);
+
+  e1ap_setup_req_t *req = &getCxtE1(CPtype, instance)->setupReq;
+
+  extract_SETUP_REQUEST(pdu, req);
   /* Create ITTI message and send to queue */
   MessageDef *msg_p = itti_alloc_new_message(TASK_CUCP_E1, instance, E1AP_SETUP_REQ);
   memcpy(&E1AP_SETUP_REQ(msg_p), req, sizeof(e1ap_setup_req_t));
@@ -339,18 +349,13 @@ int e1apCUCP_handle_SETUP_REQUEST(instance_t instance,
 }
 
 int e1apCUUP_handle_SETUP_RESPONSE(instance_t instance,
-                                   E1AP_E1AP_PDU_t *pdu) {
+                                   const E1AP_E1AP_PDU_t *pdu) {
   LOG_D(E1AP, "%s\n", __func__);
-  AssertFatal(pdu->present == E1AP_E1AP_PDU_PR_successfulOutcome,
-              "pdu->present != E1AP_E1AP_PDU_PR_successfulOutcome\n");
-  AssertFatal(pdu->choice.successfulOutcome->procedureCode  == E1AP_ProcedureCode_id_gNB_CU_UP_E1Setup,
-              "pdu->choice.successfulOutcome->procedureCode != E1AP_ProcedureCode_id_gNB_CU_UP_E1Setup\n");
-  AssertFatal(pdu->choice.successfulOutcome->criticality  == E1AP_Criticality_reject,
-              "pdu->choice.successfulOutcome->criticality != E1AP_Criticality_reject\n");
-  AssertFatal(pdu->choice.successfulOutcome->value.present  == E1AP_SuccessfulOutcome__value_PR_GNB_CU_UP_E1SetupResponse,
-              "pdu->choice.successfulOutcome->value.present != E1AP_SuccessfulOutcome__value_PR_GNB_CU_UP_E1SetupResponse\n");
-
-  E1AP_GNB_CU_UP_E1SetupResponse_t  *in = &pdu->choice.successfulOutcome->value.choice.GNB_CU_UP_E1SetupResponse;
+  DevAssert(pdu->present == E1AP_E1AP_PDU_PR_successfulOutcome);
+  DevAssert(pdu->choice.successfulOutcome->procedureCode  == E1AP_ProcedureCode_id_gNB_CU_UP_E1Setup);
+  DevAssert(pdu->choice.successfulOutcome->criticality  == E1AP_Criticality_reject);
+  DevAssert(pdu->choice.successfulOutcome->value.present  == E1AP_SuccessfulOutcome__value_PR_GNB_CU_UP_E1SetupResponse);
+  const E1AP_GNB_CU_UP_E1SetupResponse_t  *in = &pdu->choice.successfulOutcome->value.choice.GNB_CU_UP_E1SetupResponse;
   E1AP_GNB_CU_UP_E1SetupResponseIEs_t *ie;
 
   /* transac_id */
@@ -372,7 +377,7 @@ int e1apCUUP_handle_SETUP_RESPONSE(instance_t instance,
 }
 
 int e1apCUUP_handle_SETUP_FAILURE(instance_t instance,
-                                  E1AP_E1AP_PDU_t *pdu) {
+                                  const E1AP_E1AP_PDU_t *pdu) {
   E1AP_GNB_CU_UP_E1SetupFailureIEs_t *ie;
   DevAssert(pdu != NULL);
   E1AP_GNB_CU_UP_E1SetupFailure_t *in = &pdu->choice.unsuccessfulOutcome->value.choice.GNB_CU_UP_E1SetupFailure;
@@ -386,20 +391,15 @@ int e1apCUUP_handle_SETUP_FAILURE(instance_t instance,
   return 0;
 }
 
-/*
-  E1 configuration update: can be sent in both ways, to be refined
-*/
-
-int e1apCUUP_send_CONFIGURATION_UPDATE(instance_t instance) {
-  E1AP_E1AP_PDU_t pdu = {0};
+void fill_CONFIGURATION_UPDATE(E1AP_E1AP_PDU_t *pdu) {
   /* Create */
   /* 0. pdu Type */
-  pdu.present = E1AP_E1AP_PDU_PR_initiatingMessage;
-  asn1cCalloc(pdu.choice.initiatingMessage, msg);
+  pdu->present = E1AP_E1AP_PDU_PR_initiatingMessage;
+  asn1cCalloc(pdu->choice.initiatingMessage, msg);
   msg->procedureCode = E1AP_ProcedureCode_id_gNB_CU_UP_ConfigurationUpdate;
   msg->criticality   = E1AP_Criticality_reject;
   msg->value.present = E1AP_InitiatingMessage__value_PR_GNB_CU_UP_ConfigurationUpdate;
-  E1AP_GNB_CU_UP_ConfigurationUpdate_t *out = &pdu.choice.initiatingMessage->value.choice.GNB_CU_UP_ConfigurationUpdate;
+  E1AP_GNB_CU_UP_ConfigurationUpdate_t *out = &pdu->choice.initiatingMessage->value.choice.GNB_CU_UP_ConfigurationUpdate;
   /* mandatory */
   /* c1. Transaction ID (integer value) */
   asn1cSequenceAdd(out->protocolIEs.list, E1AP_GNB_CU_UP_ConfigurationUpdateIEs_t, ieC1);
@@ -436,9 +436,16 @@ int e1apCUUP_send_CONFIGURATION_UPDATE(instance_t instance) {
     TNLAtoRemove->tNLAssociationTransportLayerAddress.present = E1AP_CP_TNL_Information_PR_endpoint_IP_Address;
     TRANSPORT_LAYER_ADDRESS_IPv4_TO_BIT_STRING(1234, &TNLAtoRemove->tNLAssociationTransportLayerAddress.choice.endpoint_IP_Address); // TODO: correct me
   }
+}
+                               
+/*
+  E1 configuration update: can be sent in both ways, to be refined
+*/
 
+void e1apCUUP_send_CONFIGURATION_UPDATE(instance_t instance) {
+  E1AP_E1AP_PDU_t pdu = {0};
+  fill_CONFIGURATION_UPDATE(&pdu);
   e1ap_encode_send(UPtype, instance, &pdu, 0, __func__);
-  return 0;
 }
 
 int e1apCUCP_send_gNB_DU_CONFIGURATION_FAILURE(instance_t instance) {
@@ -514,9 +521,9 @@ int e1ap_handle_RELEASE_ACKNOWLEDGE(instance_t instance,
   BEARER CONTEXT SETUP REQUEST
 */
 
-int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
-                                               e1ap_bearer_setup_req_t *bearerCxt) {
-  E1AP_E1AP_PDU_t pdu = {0};
+int fill_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
+                                       e1ap_bearer_setup_req_t *const bearerCxt,
+                                       E1AP_E1AP_PDU_t *pdu) {
   /* Create */
   /* 0. pdu Type */
   e1ap_setup_req_t *setup = &getCxtE1(CPtype, instance)->setupReq;
@@ -525,12 +532,12 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
     return -1;
   }
 
-  pdu.present = E1AP_E1AP_PDU_PR_initiatingMessage;
-  asn1cCalloc(pdu.choice.initiatingMessage, msg);
+  pdu->present = E1AP_E1AP_PDU_PR_initiatingMessage;
+  asn1cCalloc(pdu->choice.initiatingMessage, msg);
   msg->procedureCode = E1AP_ProcedureCode_id_bearerContextSetup;
   msg->criticality   = E1AP_Criticality_reject;
   msg->value.present = E1AP_InitiatingMessage__value_PR_BearerContextSetupRequest;
-  E1AP_BearerContextSetupRequest_t *out = &pdu.choice.initiatingMessage->value.choice.BearerContextSetupRequest;
+  E1AP_BearerContextSetupRequest_t *out = &pdu->choice.initiatingMessage->value.choice.BearerContextSetupRequest;
   /* mandatory */
   /* c1. gNB-CU-UP UE E1AP ID */
   asn1cSequenceAdd(out->protocolIEs.list, E1AP_BearerContextSetupRequestIEs_t, ieC1);
@@ -646,22 +653,26 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
       }
     }
   }
-
-  e1ap_encode_send(CPtype, instance, &pdu, 0, __func__);
   return 0;
 }
 
-int e1apCUUP_send_BEARER_CONTEXT_SETUP_RESPONSE(instance_t instance,
-                                                e1ap_bearer_setup_resp_t *resp) {
+void e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
+                                                e1ap_bearer_setup_req_t *const bearerCxt) {
   E1AP_E1AP_PDU_t pdu = {0};
+  fill_BEARER_CONTEXT_SETUP_REQUEST(instance, bearerCxt, &pdu);
+  e1ap_encode_send(CPtype, instance, &pdu, 0, __func__);
+}
+
+void fill_BEARER_CONTEXT_SETUP_RESPONSE(e1ap_bearer_setup_resp_t *const resp,
+                                        E1AP_E1AP_PDU_t *pdu) {
   /* Create */
   /* 0. pdu Type */
-  pdu.present = E1AP_E1AP_PDU_PR_successfulOutcome;
-  asn1cCalloc(pdu.choice.successfulOutcome, msg);
+  pdu->present = E1AP_E1AP_PDU_PR_successfulOutcome;
+  asn1cCalloc(pdu->choice.successfulOutcome, msg);
   msg->procedureCode = E1AP_ProcedureCode_id_bearerContextSetup;
   msg->criticality   = E1AP_Criticality_reject;
   msg->value.present = E1AP_SuccessfulOutcome__value_PR_BearerContextSetupResponse;
-  E1AP_BearerContextSetupResponse_t *out = &pdu.choice.successfulOutcome->value.choice.BearerContextSetupResponse;
+  E1AP_BearerContextSetupResponse_t *out = &pdu->choice.successfulOutcome->value.choice.BearerContextSetupResponse;
   /* mandatory */
   /* c1. gNB-CU-CP UE E1AP ID */
   asn1cSequenceAdd(out->protocolIEs.list, E1AP_BearerContextSetupResponseIEs_t, ieC1);
@@ -777,8 +788,13 @@ int e1apCUUP_send_BEARER_CONTEXT_SETUP_RESPONSE(instance_t instance,
       }
     }
   }
+}
+
+void e1apCUUP_send_BEARER_CONTEXT_SETUP_RESPONSE(instance_t instance,
+                                                 e1ap_bearer_setup_resp_t *const resp) {
+  E1AP_E1AP_PDU_t pdu = {0};
+  fill_BEARER_CONTEXT_SETUP_RESPONSE(resp, &pdu);
   e1ap_encode_send(UPtype, instance, &pdu, 0, __func__);
-  return 0;
 }
 
 int e1apCUUP_send_BEARER_CONTEXT_SETUP_FAILURE(instance_t instance) {
@@ -786,28 +802,11 @@ int e1apCUUP_send_BEARER_CONTEXT_SETUP_FAILURE(instance_t instance) {
   return -1;
 }
 
-int e1apCUUP_handle_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
-                                                 E1AP_E1AP_PDU_t *pdu) {
-  e1ap_upcp_inst_t *e1_inst = getCxtE1(UPtype, instance);
-  if (!e1_inst) {
-    LOG_E(E1AP, "got BEARER_CONTEXT_SETUP_REQUEST on not established instance (%ld)\n", instance);
-    return -1;
-  }
-  
-  DevAssert(pdu != NULL);
-  AssertFatal(pdu->present == E1AP_E1AP_PDU_PR_initiatingMessage,
-              "pdu->present != E1AP_E1AP_PDU_PR_initiatingMessage\n");
-  AssertFatal(pdu->choice.initiatingMessage->procedureCode == E1AP_ProcedureCode_id_bearerContextSetup,
-              "procedureCode != E1AP_ProcedureCode_id_bearerContextSetup\n");
-  AssertFatal(pdu->choice.initiatingMessage->criticality == E1AP_Criticality_reject,
-              "criticality != E1AP_Criticality_reject\n");
-  AssertFatal(pdu->choice.initiatingMessage->value.present == E1AP_InitiatingMessage__value_PR_BearerContextSetupRequest,
-              "initiatingMessage->value.present != E1AP_InitiatingMessage__value_PR_BearerContextSetupRequest\n");
-
-  E1AP_BearerContextSetupRequest_t *in = &pdu->choice.initiatingMessage->value.choice.BearerContextSetupRequest;
+void extract_BEARER_CONTEXT_SETUP_REQUEST(const E1AP_E1AP_PDU_t *pdu,
+                                          e1ap_bearer_setup_req_t *bearerCxt) {
+  const E1AP_BearerContextSetupRequest_t *in = &pdu->choice.initiatingMessage->value.choice.BearerContextSetupRequest;
   E1AP_BearerContextSetupRequestIEs_t *ie;
 
-  e1ap_bearer_setup_req_t bearerCxt = {0};
   LOG_I(E1AP, "Bearer context setup number of IEs %d\n", in->protocolIEs.list.count);
 
   for (int i=0; i < in->protocolIEs.list.count; i++) {
@@ -815,105 +814,87 @@ int e1apCUUP_handle_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
 
     switch(ie->id) {
       case E1AP_ProtocolIE_ID_id_gNB_CU_CP_UE_E1AP_ID:
-        AssertFatal(ie->criticality == E1AP_Criticality_reject,
-                    "ie->criticality != E1AP_Criticality_reject\n");
-        AssertFatal(ie->value.present == E1AP_BearerContextSetupRequestIEs__value_PR_GNB_CU_CP_UE_E1AP_ID,
-                    "ie->value.present != E1AP_BearerContextSetupRequestIEs__value_PR_GNB_CU_CP_UE_E1AP_ID\n");
-        bearerCxt.gNB_cu_cp_ue_id = ie->value.choice.GNB_CU_CP_UE_E1AP_ID;
+        DevAssert(ie->criticality == E1AP_Criticality_reject);
+        DevAssert(ie->value.present == E1AP_BearerContextSetupRequestIEs__value_PR_GNB_CU_CP_UE_E1AP_ID);
+        bearerCxt->gNB_cu_cp_ue_id = ie->value.choice.GNB_CU_CP_UE_E1AP_ID;
         break;
 
       case E1AP_ProtocolIE_ID_id_SecurityInformation:
-        AssertFatal(ie->criticality == E1AP_Criticality_reject,
-                    "ie->criticality != E1AP_Criticality_reject\n");
-        AssertFatal(ie->value.present == E1AP_BearerContextSetupRequestIEs__value_PR_SecurityInformation,
-                    "ie->value.present != E1AP_BearerContextSetupRequestIEs__value_PR_SecurityInformation\n");
-        bearerCxt.cipheringAlgorithm = ie->value.choice.SecurityInformation.securityAlgorithm.cipheringAlgorithm;
-        memcpy(bearerCxt.encryptionKey,
+        DevAssert(ie->criticality == E1AP_Criticality_reject);
+        DevAssert(ie->value.present == E1AP_BearerContextSetupRequestIEs__value_PR_SecurityInformation);
+        bearerCxt->cipheringAlgorithm = ie->value.choice.SecurityInformation.securityAlgorithm.cipheringAlgorithm;
+        memcpy(bearerCxt->encryptionKey,
                ie->value.choice.SecurityInformation.uPSecuritykey.encryptionKey.buf,
                ie->value.choice.SecurityInformation.uPSecuritykey.encryptionKey.size);
         if (ie->value.choice.SecurityInformation.securityAlgorithm.integrityProtectionAlgorithm) {
-          bearerCxt.integrityProtectionAlgorithm = *ie->value.choice.SecurityInformation.securityAlgorithm.integrityProtectionAlgorithm;
+          bearerCxt->integrityProtectionAlgorithm = *ie->value.choice.SecurityInformation.securityAlgorithm.integrityProtectionAlgorithm;
         }
         if (ie->value.choice.SecurityInformation.uPSecuritykey.integrityProtectionKey) {
-          memcpy(bearerCxt.integrityProtectionKey,
+          memcpy(bearerCxt->integrityProtectionKey,
                  ie->value.choice.SecurityInformation.uPSecuritykey.integrityProtectionKey->buf,
                  ie->value.choice.SecurityInformation.uPSecuritykey.integrityProtectionKey->size);
         }
         break;
 
       case E1AP_ProtocolIE_ID_id_UEDLAggregateMaximumBitRate:
-        AssertFatal(ie->criticality == E1AP_Criticality_reject,
-                    "ie->criticality != E1AP_Criticality_reject\n");
-        AssertFatal(ie->value.present == E1AP_BearerContextSetupRequestIEs__value_PR_BitRate,
-                    "ie->value.present != E1AP_BearerContextSetupRequestIEs__value_PR_BitRate\n");
-        asn_INTEGER2long(&ie->value.choice.BitRate, &bearerCxt.ueDlAggMaxBitRate);
+        DevAssert(ie->criticality == E1AP_Criticality_reject);
+        DevAssert(ie->value.present == E1AP_BearerContextSetupRequestIEs__value_PR_BitRate);
+        asn_INTEGER2long(&ie->value.choice.BitRate, &bearerCxt->ueDlAggMaxBitRate);
         break;
 
       case E1AP_ProtocolIE_ID_id_Serving_PLMN:
-        AssertFatal(ie->criticality == E1AP_Criticality_ignore,
-                    "ie->criticality != E1AP_Criticality_ignore\n");
-        AssertFatal(ie->value.present == E1AP_BearerContextSetupRequestIEs__value_PR_PLMN_Identity,
-                    "ie->value.present != E1AP_BearerContextSetupRequestIEs__value_PR_PLMN_Identity\n");
+        DevAssert(ie->criticality == E1AP_Criticality_ignore);
+        DevAssert(ie->value.present == E1AP_BearerContextSetupRequestIEs__value_PR_PLMN_Identity);
         PLMNID_TO_MCC_MNC(&ie->value.choice.PLMN_Identity,
-                          bearerCxt.servingPLMNid.mcc,
-                          bearerCxt.servingPLMNid.mnc,
-                          bearerCxt.servingPLMNid.mnc_digit_length);
+                          bearerCxt->servingPLMNid.mcc,
+                          bearerCxt->servingPLMNid.mnc,
+                          bearerCxt->servingPLMNid.mnc_digit_length);
         break;
 
       case E1AP_ProtocolIE_ID_id_ActivityNotificationLevel:
-        AssertFatal(ie->criticality == E1AP_Criticality_reject,
-                    "ie->criticality != E1AP_Criticality_reject\n");
-        AssertFatal(ie->value.present == E1AP_BearerContextSetupRequestIEs__value_PR_ActivityNotificationLevel,
-                    "ie->value.present != E1AP_BearerContextSetupRequestIEs__value_PR_ActivityNotificationLevel\n");
-        bearerCxt.activityNotificationLevel = ie->value.choice.ActivityNotificationLevel;
+        DevAssert(ie->criticality == E1AP_Criticality_reject);
+        DevAssert(ie->value.present == E1AP_BearerContextSetupRequestIEs__value_PR_ActivityNotificationLevel);
+        bearerCxt->activityNotificationLevel = ie->value.choice.ActivityNotificationLevel;
         break;
 
       case E1AP_ProtocolIE_ID_id_System_BearerContextSetupRequest:
-        AssertFatal(ie->criticality == E1AP_Criticality_reject,
-                    "ie->criticality != E1AP_Criticality_reject\n");
-        AssertFatal(ie->value.present == E1AP_BearerContextSetupRequestIEs__value_PR_System_BearerContextSetupRequest,
-                    "ie->value.present != E1AP_BearerContextSetupRequestIEs__value_PR_System_BearerContextSetupRequest\n");
-        AssertFatal(ie->value.choice.System_BearerContextSetupRequest.present ==
-                    E1AP_System_BearerContextSetupRequest_PR_nG_RAN_BearerContextSetupRequest,
-                    "ie->value.choice.System_BearerContextSetupRequest.present !="
-                    "E1AP_System_BearerContextSetupRequest_PR_nG_RAN_BearerContextSetupRequest\n");
-        AssertFatal(ie->value.choice.System_BearerContextSetupRequest.choice.nG_RAN_BearerContextSetupRequest,
-                    "nG_RAN_BearerContextSetupRequest is NULL\n");
+        DevAssert(ie->criticality == E1AP_Criticality_reject);
+        DevAssert(ie->value.present == E1AP_BearerContextSetupRequestIEs__value_PR_System_BearerContextSetupRequest);
+        DevAssert(ie->value.choice.System_BearerContextSetupRequest.present ==
+                    E1AP_System_BearerContextSetupRequest_PR_nG_RAN_BearerContextSetupRequest);
+        DevAssert(ie->value.choice.System_BearerContextSetupRequest.choice.nG_RAN_BearerContextSetupRequest);
         E1AP_ProtocolIE_Container_4932P19_t *msgNGRAN_list = (E1AP_ProtocolIE_Container_4932P19_t *) ie->value.choice.System_BearerContextSetupRequest.choice.nG_RAN_BearerContextSetupRequest;
         E1AP_NG_RAN_BearerContextSetupRequest_t *msgNGRAN = msgNGRAN_list->list.array[0];
-        AssertFatal(msgNGRAN_list->list.count == 1, "nG_RAN_BearerContextSetupRequest supports only 1 count for now\n");
-        AssertFatal(msgNGRAN->id == E1AP_ProtocolIE_ID_id_PDU_Session_Resource_To_Setup_List,
-                    "msgNGRAN->id (%ld) != E1AP_ProtocolIE_ID_id_PDU_Session_Resource_To_Setup_List\n", msgNGRAN->id);
-        AssertFatal(msgNGRAN->value.present =
-                    E1AP_NG_RAN_BearerContextSetupRequest__value_PR_PDU_Session_Resource_To_Setup_List,
-                    "msgNGRAN->value.present != E1AP_NG_RAN_BearerContextSetupRequest__value_PR_PDU_Session_Resource_To_Setup_List\n");
+        DevAssert(msgNGRAN_list->list.count == 1);
+        DevAssert(msgNGRAN->id == E1AP_ProtocolIE_ID_id_PDU_Session_Resource_To_Setup_List);
+        DevAssert(msgNGRAN->value.present == E1AP_NG_RAN_BearerContextSetupRequest__value_PR_PDU_Session_Resource_To_Setup_List);
 
         E1AP_PDU_Session_Resource_To_Setup_List_t *pdu2SetupList = &msgNGRAN->value.choice.PDU_Session_Resource_To_Setup_List;
-        bearerCxt.numPDUSessions = pdu2SetupList->list.count;
+        bearerCxt->numPDUSessions = pdu2SetupList->list.count;
         for (int i=0; i < pdu2SetupList->list.count; i++) {
-          pdu_session_to_setup_t *pdu = bearerCxt.pduSession + i;
+          pdu_session_to_setup_t *pdu_session = bearerCxt->pduSession + i;
           E1AP_PDU_Session_Resource_To_Setup_Item_t *pdu2Setup = pdu2SetupList->list.array[i];
 
-          pdu->sessionId = pdu2Setup->pDU_Session_ID;
-          pdu->sessionType = pdu2Setup->pDU_Session_Type;
+          pdu_session->sessionId = pdu2Setup->pDU_Session_ID;
+          pdu_session->sessionType = pdu2Setup->pDU_Session_Type;
 
-          OCTET_STRING_TO_INT8(&pdu2Setup->sNSSAI.sST, pdu->sst);
+          OCTET_STRING_TO_INT8(&pdu2Setup->sNSSAI.sST, pdu_session->sst);
 
-          pdu->integrityProtectionIndication = pdu2Setup->securityIndication.integrityProtectionIndication;
-          pdu->confidentialityProtectionIndication = pdu2Setup->securityIndication.confidentialityProtectionIndication;
+          pdu_session->integrityProtectionIndication = pdu2Setup->securityIndication.integrityProtectionIndication;
+          pdu_session->confidentialityProtectionIndication = pdu2Setup->securityIndication.confidentialityProtectionIndication;
 
           if (pdu2Setup->nG_UL_UP_TNL_Information.choice.gTPTunnel) { // Optional IE
-            AssertFatal(pdu2Setup->nG_UL_UP_TNL_Information.present = E1AP_UP_TNL_Information_PR_gTPTunnel,
-                        "pdu2Setup->nG_UL_UP_TNL_Information.present != E1AP_UP_TNL_Information_PR_gTPTunnel\n");
+            DevAssert(pdu2Setup->nG_UL_UP_TNL_Information.present ==
+                      E1AP_UP_TNL_Information_PR_gTPTunnel);
             BIT_STRING_TO_TRANSPORT_LAYER_ADDRESS_IPv4(&pdu2Setup->nG_UL_UP_TNL_Information.choice.gTPTunnel->transportLayerAddress,
-                                                       pdu->tlAddress);
-            OCTET_STRING_TO_INT32(&pdu2Setup->nG_UL_UP_TNL_Information.choice.gTPTunnel->gTP_TEID, pdu->teId);
+                                                       pdu_session->tlAddress);
+            OCTET_STRING_TO_INT32(&pdu2Setup->nG_UL_UP_TNL_Information.choice.gTPTunnel->gTP_TEID, pdu_session->teId);
           }
 
           E1AP_DRB_To_Setup_List_NG_RAN_t *drb2SetupList = &pdu2Setup->dRB_To_Setup_List_NG_RAN;
-          pdu->numDRB2Setup = drb2SetupList->list.count;
+          pdu_session->numDRB2Setup = drb2SetupList->list.count;
           for (int j=0; j < drb2SetupList->list.count; j++) {
-            DRB_nGRAN_to_setup_t *drb = pdu->DRBnGRanList + j;
+            DRB_nGRAN_to_setup_t *drb = pdu_session->DRBnGRanList + j;
             E1AP_DRB_To_Setup_Item_NG_RAN_t *drb2Setup = drb2SetupList->list.array[j];
 
             drb->id = drb2Setup->dRB_ID;
@@ -978,28 +959,34 @@ int e1apCUUP_handle_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
     }
   }
 
+
+}
+
+int e1apCUUP_handle_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
+                                                 const E1AP_E1AP_PDU_t *pdu) {
+  e1ap_upcp_inst_t *e1_inst = getCxtE1(UPtype, instance);
+  if (!e1_inst) {
+    LOG_E(E1AP, "got BEARER_CONTEXT_SETUP_REQUEST on not established instance (%ld)\n", instance);
+    return -1;
+  }
+  
+  DevAssert(pdu != NULL);
+  DevAssert(pdu->present == E1AP_E1AP_PDU_PR_initiatingMessage);
+  DevAssert(pdu->choice.initiatingMessage->procedureCode == E1AP_ProcedureCode_id_bearerContextSetup);
+  DevAssert(pdu->choice.initiatingMessage->criticality == E1AP_Criticality_reject);
+  DevAssert(pdu->choice.initiatingMessage->value.present == E1AP_InitiatingMessage__value_PR_BearerContextSetupRequest);
+
+  e1ap_bearer_setup_req_t bearerCxt = {0};
+  extract_BEARER_CONTEXT_SETUP_REQUEST(pdu, &bearerCxt);
   CUUP_process_e1_bearer_context_setup_req(&bearerCxt, instance);
   return 0;
 }
 
-int e1apCUCP_handle_BEARER_CONTEXT_SETUP_RESPONSE(instance_t instance,
-                                                  E1AP_E1AP_PDU_t *pdu) {
-  AssertFatal(pdu->present == E1AP_E1AP_PDU_PR_successfulOutcome,
-              "pdu->present != E1AP_E1AP_PDU_PR_successfulOutcome\n");
-  AssertFatal(pdu->choice.successfulOutcome->procedureCode == E1AP_ProcedureCode_id_bearerContextSetup,
-              "procedureCode != E1AP_ProcedureCode_id_bearerContextSetup\n");
-  AssertFatal(pdu->choice.successfulOutcome->criticality == E1AP_Criticality_reject,
-              "criticality != E1AP_Criticality_reject\n");
-  AssertFatal(pdu->choice.successfulOutcome->value.present == E1AP_SuccessfulOutcome__value_PR_BearerContextSetupResponse,
-              "initiatingMessage->value.present != E1AP_InitiatingMessage__value_PR_BearerContextSetupRequest\n");
-
-  E1AP_BearerContextSetupResponse_t *in = &pdu->choice.successfulOutcome->value.choice.BearerContextSetupResponse;
+void extract_BEARER_CONTEXT_SETUP_RESPONSE(const E1AP_E1AP_PDU_t *pdu,
+                                           e1ap_bearer_setup_resp_t *bearerCxt) {
+  const E1AP_BearerContextSetupResponse_t *in = &pdu->choice.successfulOutcome->value.choice.BearerContextSetupResponse;
   E1AP_BearerContextSetupResponseIEs_t *ie;
 
-  MessageDef *msg = itti_alloc_new_message(TASK_CUCP_E1, 0, E1AP_BEARER_CONTEXT_SETUP_RESP);
-
-  e1ap_bearer_setup_resp_t *bearerCxt = &E1AP_BEARER_CONTEXT_SETUP_RESP(msg);
-
   LOG_I(E1AP, "Bearer context setup response number of IEs %d\n", in->protocolIEs.list.count);
 
   for (int i=0; i < in->protocolIEs.list.count; i++) {
@@ -1007,60 +994,48 @@ int e1apCUCP_handle_BEARER_CONTEXT_SETUP_RESPONSE(instance_t instance,
 
     switch(ie->id) {
       case E1AP_ProtocolIE_ID_id_gNB_CU_CP_UE_E1AP_ID:
-        AssertFatal(ie->criticality == E1AP_Criticality_reject,
-                    "ie->criticality != E1AP_Criticality_reject\n");
-        AssertFatal(ie->value.present == E1AP_BearerContextSetupResponseIEs__value_PR_GNB_CU_CP_UE_E1AP_ID,
-                    "ie->value.present != E1AP_BearerContextSetupRequestIEs__value_PR_GNB_CU_CP_UE_E1AP_ID\n");
+        DevAssert(ie->criticality == E1AP_Criticality_reject);
+        DevAssert(ie->value.present == E1AP_BearerContextSetupResponseIEs__value_PR_GNB_CU_CP_UE_E1AP_ID);
         bearerCxt->gNB_cu_cp_ue_id = ie->value.choice.GNB_CU_CP_UE_E1AP_ID;
         break;
 
       case E1AP_ProtocolIE_ID_id_gNB_CU_UP_UE_E1AP_ID:
-        AssertFatal(ie->criticality == E1AP_Criticality_reject,
-                    "ie->criticality != E1AP_Criticality_reject\n");
-        AssertFatal(ie->value.present == E1AP_BearerContextSetupResponseIEs__value_PR_GNB_CU_UP_UE_E1AP_ID,
-                    "ie->value.present != E1AP_BearerContextSetupRequestIEs__value_PR_GNB_CU_UP_UE_E1AP_ID\n");
+        DevAssert(ie->criticality == E1AP_Criticality_reject);
+        DevAssert(ie->value.present == E1AP_BearerContextSetupResponseIEs__value_PR_GNB_CU_UP_UE_E1AP_ID);
         bearerCxt->gNB_cu_up_ue_id = ie->value.choice.GNB_CU_UP_UE_E1AP_ID;
         break;
 
       case E1AP_ProtocolIE_ID_id_System_BearerContextSetupResponse:
-        AssertFatal(ie->criticality == E1AP_Criticality_reject,
-                    "ie->criticality != E1AP_Criticality_reject\n");
-        AssertFatal(ie->value.present == E1AP_BearerContextSetupResponseIEs__value_PR_System_BearerContextSetupResponse,
-                    "ie->value.present != E1AP_BearerContextSetupResponseIEs__value_PR_System_BearerContextSetupResponse\n");
-        AssertFatal(ie->value.choice.System_BearerContextSetupResponse.present ==
-                    E1AP_System_BearerContextSetupResponse_PR_nG_RAN_BearerContextSetupResponse,
-                    "ie->value.choice.System_BearerContextSetupResponse.present !="
-                    "E1AP_System_BearerContextSetupResponse_PR_nG_RAN_BearerContextSetupResponse\n");
+        DevAssert(ie->criticality == E1AP_Criticality_reject);
+        DevAssert(ie->value.present == E1AP_BearerContextSetupResponseIEs__value_PR_System_BearerContextSetupResponse);
+        DevAssert(ie->value.choice.System_BearerContextSetupResponse.present ==
+                    E1AP_System_BearerContextSetupResponse_PR_nG_RAN_BearerContextSetupResponse);
         E1AP_ProtocolIE_Container_4932P22_t *msgNGRAN_list = (E1AP_ProtocolIE_Container_4932P22_t *) ie->value.choice.System_BearerContextSetupResponse.choice.nG_RAN_BearerContextSetupResponse;
-        AssertFatal(msgNGRAN_list->list.count == 1, "Array count more than 1 not supported\n");
+        DevAssert(msgNGRAN_list->list.count == 1);
         E1AP_NG_RAN_BearerContextSetupResponse_t *msgNGRAN = msgNGRAN_list->list.array[0];
-        AssertFatal(msgNGRAN->id == E1AP_ProtocolIE_ID_id_PDU_Session_Resource_Setup_List,
-                    "msgNGRAN->id != E1AP_ProtocolIE_ID_id_PDU_Session_Resource_Setup_List\n");
-        AssertFatal(msgNGRAN->criticality == E1AP_Criticality_reject,
-                    "msgNGRAN->criticality != E1AP_Criticality_reject\n");
-        AssertFatal(msgNGRAN->value.present == E1AP_NG_RAN_BearerContextSetupResponse__value_PR_PDU_Session_Resource_Setup_List,
-                    "msgNGRAN->value.present != E1AP_NG_RAN_BearerContextSetupResponse__value_PR_PDU_Session_Resource_Setup_List\n");
+        DevAssert(msgNGRAN->id == E1AP_ProtocolIE_ID_id_PDU_Session_Resource_Setup_List);
+        DevAssert(msgNGRAN->criticality == E1AP_Criticality_reject);
+        DevAssert(msgNGRAN->value.present == E1AP_NG_RAN_BearerContextSetupResponse__value_PR_PDU_Session_Resource_Setup_List);
         E1AP_PDU_Session_Resource_Setup_List_t *pduSetupList = &msgNGRAN->value.choice.PDU_Session_Resource_Setup_List;
         bearerCxt->numPDUSessions = pduSetupList->list.count;
 
         for (int i=0; i < pduSetupList->list.count; i++) {
           pdu_session_setup_t *pduSetup = bearerCxt->pduSession + i;
-          E1AP_PDU_Session_Resource_Setup_Item_t *pdu = pduSetupList->list.array[i];
-          pduSetup->id = pdu->pDU_Session_ID;
+          E1AP_PDU_Session_Resource_Setup_Item_t *pdu_session = pduSetupList->list.array[i];
+          pduSetup->id = pdu_session->pDU_Session_ID;
 
-          if (pdu->nG_DL_UP_TNL_Information.choice.gTPTunnel) {
-            AssertFatal(pdu->nG_DL_UP_TNL_Information.present == E1AP_UP_TNL_Information_PR_gTPTunnel,
-                        "pdu->nG_DL_UP_TNL_Information.present != E1AP_UP_TNL_Information_PR_gTPTunnel\n");
-            BIT_STRING_TO_TRANSPORT_LAYER_ADDRESS_IPv4(&pdu->nG_DL_UP_TNL_Information.choice.gTPTunnel->transportLayerAddress,
+          if (pdu_session->nG_DL_UP_TNL_Information.choice.gTPTunnel) {
+            DevAssert(pdu_session->nG_DL_UP_TNL_Information.present == E1AP_UP_TNL_Information_PR_gTPTunnel);
+            BIT_STRING_TO_TRANSPORT_LAYER_ADDRESS_IPv4(&pdu_session->nG_DL_UP_TNL_Information.choice.gTPTunnel->transportLayerAddress,
                                                        pduSetup->tlAddress);
-            OCTET_STRING_TO_INT32(&pdu->nG_DL_UP_TNL_Information.choice.gTPTunnel->gTP_TEID,
+            OCTET_STRING_TO_INT32(&pdu_session->nG_DL_UP_TNL_Information.choice.gTPTunnel->gTP_TEID,
                                   pduSetup->teId);
           }
 
-          pduSetup->numDRBSetup = pdu->dRB_Setup_List_NG_RAN.list.count;
-          for (int j=0; j < pdu->dRB_Setup_List_NG_RAN.list.count; j++) {
+          pduSetup->numDRBSetup = pdu_session->dRB_Setup_List_NG_RAN.list.count;
+          for (int j=0; j < pdu_session->dRB_Setup_List_NG_RAN.list.count; j++) {
             DRB_nGRAN_setup_t *drbSetup = pduSetup->DRBnGRanList + j;
-            E1AP_DRB_Setup_Item_NG_RAN_t *drb = pdu->dRB_Setup_List_NG_RAN.list.array[j];
+            E1AP_DRB_Setup_Item_NG_RAN_t *drb = pdu_session->dRB_Setup_List_NG_RAN.list.array[j];
 
             drbSetup->id = drb->dRB_ID;
 
@@ -1069,8 +1044,7 @@ int e1apCUCP_handle_BEARER_CONTEXT_SETUP_RESPONSE(instance_t instance,
               up_params_t *UL_UP_param = drbSetup->UpParamList + k;
               E1AP_UP_Parameters_Item_t *in_UL_UP_param = drb->uL_UP_Transport_Parameters.list.array[k];
 
-              AssertFatal(in_UL_UP_param->uP_TNL_Information.present == E1AP_UP_TNL_Information_PR_gTPTunnel,
-                          "in_UL_UP_param->uP_TNL_Information.present != E1AP_UP_TNL_Information_PR_gTPTunnel\n");
+              DevAssert(in_UL_UP_param->uP_TNL_Information.present == E1AP_UP_TNL_Information_PR_gTPTunnel);
               E1AP_GTPTunnel_t *gTPTunnel = in_UL_UP_param->uP_TNL_Information.choice.gTPTunnel;
               if (gTPTunnel) {
                 BIT_STRING_TO_TRANSPORT_LAYER_ADDRESS_IPv4(&gTPTunnel->transportLayerAddress,
@@ -1092,14 +1066,25 @@ int e1apCUCP_handle_BEARER_CONTEXT_SETUP_RESPONSE(instance_t instance,
         break;
     }
   }
+}
+
+int e1apCUCP_handle_BEARER_CONTEXT_SETUP_RESPONSE(instance_t instance,
+                                                  const E1AP_E1AP_PDU_t *pdu) {
+  DevAssert(pdu->present == E1AP_E1AP_PDU_PR_successfulOutcome);
+  DevAssert(pdu->choice.successfulOutcome->procedureCode == E1AP_ProcedureCode_id_bearerContextSetup);
+  DevAssert(pdu->choice.successfulOutcome->criticality == E1AP_Criticality_reject);
+  DevAssert(pdu->choice.successfulOutcome->value.present == E1AP_SuccessfulOutcome__value_PR_BearerContextSetupResponse);
 
+  MessageDef *msg = itti_alloc_new_message(TASK_CUCP_E1, 0, E1AP_BEARER_CONTEXT_SETUP_RESP);
+  e1ap_bearer_setup_resp_t *bearerCxt = &E1AP_BEARER_CONTEXT_SETUP_RESP(msg);
+  extract_BEARER_CONTEXT_SETUP_RESPONSE(pdu, bearerCxt);
   itti_send_msg_to_task(TASK_RRC_GNB, instance, msg);
 
   return 0;
 }
 
 int e1apCUCP_handle_BEARER_CONTEXT_SETUP_FAILURE(instance_t instance,
-                                                 E1AP_E1AP_PDU_t *pdu) {
+                                                 const E1AP_E1AP_PDU_t *pdu) {
   AssertFatal(false,"Not implemented yet\n");
   return -1;
 }
@@ -1108,9 +1093,9 @@ int e1apCUCP_handle_BEARER_CONTEXT_SETUP_FAILURE(instance_t instance,
   BEARER CONTEXT MODIFICATION REQUEST
 */
 
-int e1apCUCP_send_BEARER_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
-                                                      e1ap_bearer_setup_req_t *bearerCxt) {
-  E1AP_E1AP_PDU_t pdu = {0};
+int fill_BEARER_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
+                                             e1ap_bearer_setup_req_t *const bearerCxt,
+                                             E1AP_E1AP_PDU_t *pdu) {
   /* Create */
   /* 0. pdu Type */
   e1ap_setup_req_t *setup = &getCxtE1(CPtype, instance)->setupReq;
@@ -1119,12 +1104,12 @@ int e1apCUCP_send_BEARER_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
     return -1;
   }
 
-  pdu.present = E1AP_E1AP_PDU_PR_initiatingMessage;
-  asn1cCalloc(pdu.choice.initiatingMessage, msg);
+  pdu->present = E1AP_E1AP_PDU_PR_initiatingMessage;
+  asn1cCalloc(pdu->choice.initiatingMessage, msg);
   msg->procedureCode = E1AP_ProcedureCode_id_bearerContextModification;
   msg->criticality   = E1AP_Criticality_reject;
   msg->value.present = E1AP_InitiatingMessage__value_PR_BearerContextModificationRequest;
-  E1AP_BearerContextModificationRequest_t *out = &pdu.choice.initiatingMessage->value.choice.BearerContextModificationRequest;
+  E1AP_BearerContextModificationRequest_t *out = &pdu->choice.initiatingMessage->value.choice.BearerContextModificationRequest;
   /* mandatory */
   /* c1. gNB-CU-CP UE E1AP ID */
   asn1cSequenceAdd(out->protocolIEs.list, E1AP_BearerContextModificationRequestIEs_t, ieC1);
@@ -1176,9 +1161,14 @@ int e1apCUCP_send_BEARER_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
       }
     }
   }
+  return 0;
+}
 
+void e1apCUCP_send_BEARER_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
+                                                       e1ap_bearer_setup_req_t *const bearerCxt) {
+  E1AP_E1AP_PDU_t pdu = {0};
+  fill_BEARER_CONTEXT_MODIFICATION_REQUEST(instance, bearerCxt, &pdu);
   e1ap_encode_send(CPtype, instance, &pdu, 0, __func__);
-  return 0;
 }
 
 int e1apCUUP_send_BEARER_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
@@ -1191,28 +1181,11 @@ int e1apCUUP_send_BEARER_CONTEXT_MODIFICATION_FAILURE(instance_t instance) {
   return -1;
 }
 
-int e1apCUUP_handle_BEARER_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
-                                                        E1AP_E1AP_PDU_t *pdu) {
-  e1ap_upcp_inst_t *e1_inst = getCxtE1(UPtype, instance);
-  if (!e1_inst) {
-    LOG_E(E1AP, "got BEARER_CONTEXT_MODIFICATION_REQUEST on not established instance (%ld)\n", instance);
-    return -1;
-  }
-  
-  DevAssert(pdu != NULL);
-  AssertFatal(pdu->present == E1AP_E1AP_PDU_PR_initiatingMessage,
-              "pdu->present != E1AP_E1AP_PDU_PR_initiatingMessage\n");
-  AssertFatal(pdu->choice.initiatingMessage->procedureCode == E1AP_ProcedureCode_id_bearerContextModification,
-              "procedureCode != E1AP_ProcedureCode_id_bearerContextModification\n");
-  AssertFatal(pdu->choice.initiatingMessage->criticality == E1AP_Criticality_reject,
-              "criticality != E1AP_Criticality_reject\n");
-  AssertFatal(pdu->choice.initiatingMessage->value.present == E1AP_InitiatingMessage__value_PR_BearerContextModificationRequest,
-              "initiatingMessage->value.present != E1AP_InitiatingMessage__value_PR_BearerContextModificationRequest\n");
-
-  E1AP_BearerContextModificationRequest_t *in = &pdu->choice.initiatingMessage->value.choice.BearerContextModificationRequest;
+void extract_BEARER_CONTEXT_MODIFICATION_REQUEST(const E1AP_E1AP_PDU_t *pdu,
+                                                 e1ap_bearer_setup_req_t *bearerCxt) {
+  const E1AP_BearerContextModificationRequest_t *in = &pdu->choice.initiatingMessage->value.choice.BearerContextModificationRequest;
   E1AP_BearerContextModificationRequestIEs_t *ie;
 
-  e1ap_bearer_setup_req_t bearerCxt = {0};
   LOG_I(E1AP, "Bearer context setup number of IEs %d\n", in->protocolIEs.list.count);
 
   for (int i=0; i < in->protocolIEs.list.count; i++) {
@@ -1220,53 +1193,42 @@ int e1apCUUP_handle_BEARER_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
 
     switch(ie->id) {
       case E1AP_ProtocolIE_ID_id_gNB_CU_CP_UE_E1AP_ID:
-        AssertFatal(ie->criticality == E1AP_Criticality_reject,
-                    "ie->criticality != E1AP_Criticality_reject\n");
-        AssertFatal(ie->value.present == E1AP_BearerContextModificationRequestIEs__value_PR_GNB_CU_CP_UE_E1AP_ID,
-                    "ie->value.present != E1AP_BearerContextModificationRequestIEs__value_PR_GNB_CU_CP_UE_E1AP_ID\n");
-        bearerCxt.gNB_cu_cp_ue_id = ie->value.choice.GNB_CU_CP_UE_E1AP_ID;
+        DevAssert(ie->criticality == E1AP_Criticality_reject);
+        DevAssert(ie->value.present == E1AP_BearerContextModificationRequestIEs__value_PR_GNB_CU_CP_UE_E1AP_ID);
+        bearerCxt->gNB_cu_cp_ue_id = ie->value.choice.GNB_CU_CP_UE_E1AP_ID;
         break;
 
       case E1AP_ProtocolIE_ID_id_gNB_CU_UP_UE_E1AP_ID:
-        AssertFatal(ie->criticality == E1AP_Criticality_reject,
-                    "ie->criticality != E1AP_Criticality_reject\n");
-        AssertFatal(ie->value.present == E1AP_BearerContextModificationRequestIEs__value_PR_GNB_CU_UP_UE_E1AP_ID,
-                    "ie->value.present != E1AP_BearerContextModificationRequestIEs__value_PR_GNB_CU_UP_UE_E1AP_ID\n");
-        bearerCxt.gNB_cu_up_ue_id = ie->value.choice.GNB_CU_UP_UE_E1AP_ID;
+        DevAssert(ie->criticality == E1AP_Criticality_reject);
+        DevAssert(ie->value.present == E1AP_BearerContextModificationRequestIEs__value_PR_GNB_CU_UP_UE_E1AP_ID);
+        bearerCxt->gNB_cu_up_ue_id = ie->value.choice.GNB_CU_UP_UE_E1AP_ID;
         break;
 
       case E1AP_ProtocolIE_ID_id_System_BearerContextModificationRequest:
-        AssertFatal(ie->criticality == E1AP_Criticality_reject,
-                    "ie->criticality != E1AP_Criticality_reject\n");
-        AssertFatal(ie->value.present == E1AP_BearerContextModificationRequestIEs__value_PR_System_BearerContextModificationRequest,
-                    "ie->value.present != E1AP_BearerContextModificationRequestIEs__value_PR_System_BearerContextModificationRequest\n");
-        AssertFatal(ie->value.choice.System_BearerContextModificationRequest.present ==
-                    E1AP_System_BearerContextModificationRequest_PR_nG_RAN_BearerContextModificationRequest,
-                    "ie->value.choice.System_BearerContextSetupRequest.present !="
-                    "E1AP_System_BearerContextModificationRequest_PR_nG_RAN_BearerContextModificationRequest\n");
-        AssertFatal(ie->value.choice.System_BearerContextModificationRequest.choice.nG_RAN_BearerContextModificationRequest,
-                    "nG_RAN_BearerContextModificationRequest is NULL\n");
+        DevAssert(ie->criticality == E1AP_Criticality_reject);
+        DevAssert(ie->value.present == E1AP_BearerContextModificationRequestIEs__value_PR_System_BearerContextModificationRequest);
+        DevAssert(ie->value.choice.System_BearerContextModificationRequest.present ==
+                    E1AP_System_BearerContextModificationRequest_PR_nG_RAN_BearerContextModificationRequest);
+        DevAssert(ie->value.choice.System_BearerContextModificationRequest.choice.nG_RAN_BearerContextModificationRequest != NULL);
         E1AP_ProtocolIE_Container_4932P26_t *msgNGRAN_list = (E1AP_ProtocolIE_Container_4932P26_t *) ie->value.choice.System_BearerContextModificationRequest.choice.nG_RAN_BearerContextModificationRequest;
         E1AP_NG_RAN_BearerContextModificationRequest_t *msgNGRAN = msgNGRAN_list->list.array[0];
-        AssertFatal(msgNGRAN_list->list.count == 1, "nG_RAN_BearerContextModificationRequest supports only 1 count for now\n");
-        AssertFatal(msgNGRAN->id == E1AP_ProtocolIE_ID_id_PDU_Session_Resource_To_Modify_List,
-                    "msgNGRAN->id (%ld) != E1AP_ProtocolIE_ID_id_PDU_Session_Resource_To_Modify_List\n", msgNGRAN->id);
-        AssertFatal(msgNGRAN->value.present =
-                    E1AP_NG_RAN_BearerContextModificationRequest__value_PR_PDU_Session_Resource_To_Modify_List,
-                    "msgNGRAN->value.present != E1AP_NG_RAN_BearerContextModificationRequest__value_PR_PDU_Session_Resource_To_Modify_List\n");
+        DevAssert(msgNGRAN_list->list.count == 1);
+        DevAssert(msgNGRAN->id == E1AP_ProtocolIE_ID_id_PDU_Session_Resource_To_Modify_List);
+        DevAssert(msgNGRAN->value.present =
+                    E1AP_NG_RAN_BearerContextModificationRequest__value_PR_PDU_Session_Resource_To_Modify_List);
 
         E1AP_PDU_Session_Resource_To_Modify_List_t *pdu2ModList = &msgNGRAN->value.choice.PDU_Session_Resource_To_Modify_List;
-        bearerCxt.numPDUSessionsMod = pdu2ModList->list.count;
+        bearerCxt->numPDUSessionsMod = pdu2ModList->list.count;
         for (int i=0; i < pdu2ModList->list.count; i++) {
-          pdu_session_to_setup_t *pdu = bearerCxt.pduSessionMod + i;
+          pdu_session_to_setup_t *pdu_session = bearerCxt->pduSessionMod + i;
           E1AP_PDU_Session_Resource_To_Modify_Item_t *pdu2Mod = pdu2ModList->list.array[i];
 
-          pdu->sessionId = pdu2Mod->pDU_Session_ID;
+          pdu_session->sessionId = pdu2Mod->pDU_Session_ID;
 
           E1AP_DRB_To_Modify_List_NG_RAN_t *drb2ModList = pdu2Mod->dRB_To_Modify_List_NG_RAN;
-          pdu->numDRB2Modify = drb2ModList->list.count;
+          pdu_session->numDRB2Modify = drb2ModList->list.count;
           for (int j=0; j < drb2ModList->list.count; j++) {
-            DRB_nGRAN_to_setup_t *drb = pdu->DRBnGRanModList + j;
+            DRB_nGRAN_to_setup_t *drb = pdu_session->DRBnGRanModList + j;
             E1AP_DRB_To_Modify_Item_NG_RAN_t *drb2Mod = drb2ModList->list.array[j];
 
             drb->id = drb2Mod->dRB_ID;
@@ -1277,8 +1239,7 @@ int e1apCUUP_handle_BEARER_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
               up_params_t *dl_up_param = drb->DlUpParamList + k;
               E1AP_UP_Parameters_Item_t *dl_up_param_in = dl_up_paramList->list.array[k]; 
               if (dl_up_param_in->uP_TNL_Information.choice.gTPTunnel) { // Optional IE
-                AssertFatal(dl_up_param_in->uP_TNL_Information.present = E1AP_UP_TNL_Information_PR_gTPTunnel,
-                            "dl_up_param_in->uP_TNL_Information.present != E1AP_UP_TNL_Information_PR_gTPTunnel\n");
+                DevAssert(dl_up_param_in->uP_TNL_Information.present = E1AP_UP_TNL_Information_PR_gTPTunnel);
                 BIT_STRING_TO_TRANSPORT_LAYER_ADDRESS_IPv4(&dl_up_param_in->uP_TNL_Information.choice.gTPTunnel->transportLayerAddress,
                                                            dl_up_param->tlAddress);
                 OCTET_STRING_TO_INT32(&dl_up_param_in->uP_TNL_Information.choice.gTPTunnel->gTP_TEID, dl_up_param->teId);
@@ -1296,7 +1257,24 @@ int e1apCUUP_handle_BEARER_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
         break;
     }
   }
+}
 
+int e1apCUUP_handle_BEARER_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
+                                                        const E1AP_E1AP_PDU_t *pdu) {
+  e1ap_upcp_inst_t *e1_inst = getCxtE1(UPtype, instance);
+  if (!e1_inst) {
+    LOG_E(E1AP, "got BEARER_CONTEXT_MODIFICATION_REQUEST on not established instance (%ld)\n", instance);
+    return -1;
+  }
+  
+  DevAssert(pdu != NULL);
+  DevAssert(pdu->present == E1AP_E1AP_PDU_PR_initiatingMessage);
+  DevAssert(pdu->choice.initiatingMessage->procedureCode == E1AP_ProcedureCode_id_bearerContextModification);
+  DevAssert(pdu->choice.initiatingMessage->criticality == E1AP_Criticality_reject);
+  DevAssert(pdu->choice.initiatingMessage->value.present == E1AP_InitiatingMessage__value_PR_BearerContextModificationRequest);
+
+  e1ap_bearer_setup_req_t bearerCxt = {0};
+  extract_BEARER_CONTEXT_MODIFICATION_REQUEST(pdu, &bearerCxt);
   CUUP_process_bearer_context_mod_req(&bearerCxt, instance);
   return 0;
 }
@@ -1455,6 +1433,12 @@ void cuup_task_send_sctp_association_req(instance_t instance, e1ap_setup_req_t *
   itti_send_msg_to_task(TASK_SCTP, instance, message_p);
 }
 
+void e1apCUUP_send_SETUP_REQUEST(instance_t instance) {
+  E1AP_E1AP_PDU_t pdu = {0};
+  fill_SETUP_REQUEST(instance, &pdu);
+  e1ap_encode_send(UPtype, instance, &pdu, 0, __func__);
+}
+  
 void cuup_task_handle_sctp_association_resp(instance_t instance, sctp_new_association_resp_t *sctp_new_association_resp) {
   DevAssert(sctp_new_association_resp != NULL);
   getCxtE1(UPtype, instance)->sockState = sctp_new_association_resp->sctp_state;
@@ -1489,7 +1473,6 @@ void cuup_task_handle_sctp_association_resp(instance_t instance, sctp_new_associ
   if (getCxtE1(UPtype, instance)->gtpInstN3 < 0)
     LOG_E(E1AP, "Failed to create CUUP N3 UDP listener");
   N3GTPUInst = &getCxtE1(UPtype, instance)->gtpInstN3;
-
   e1apCUUP_send_SETUP_REQUEST(instance);
 }
 
diff --git a/openair2/E1AP/e1ap.h b/openair2/E1AP/e1ap.h
index f290f5805f7..96d7ece0beb 100644
--- a/openair2/E1AP/e1ap.h
+++ b/openair2/E1AP/e1ap.h
@@ -31,28 +31,28 @@
 
 
 int e1apCUCP_handle_SETUP_REQUEST(instance_t instance,
-                                  E1AP_E1AP_PDU_t *pdu);
+                                  const E1AP_E1AP_PDU_t *pdu);
 
 int e1apCUUP_handle_SETUP_RESPONSE(instance_t instance,
-                                   E1AP_E1AP_PDU_t *pdu);
+                                   const E1AP_E1AP_PDU_t *pdu);
 
 int e1apCUUP_handle_SETUP_FAILURE(instance_t instance,
-                                  E1AP_E1AP_PDU_t *pdu);
+                                  const E1AP_E1AP_PDU_t *pdu);
 
 int e1apCUUP_handle_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
-                                                 E1AP_E1AP_PDU_t *pdu);
+                                                 const E1AP_E1AP_PDU_t *pdu);
 
 int e1apCUCP_handle_BEARER_CONTEXT_SETUP_RESPONSE(instance_t instance,
-                                                  E1AP_E1AP_PDU_t *pdu);
+                                                  const E1AP_E1AP_PDU_t *pdu);
 
 int e1apCUCP_handle_BEARER_CONTEXT_SETUP_FAILURE(instance_t instance,
-                                                 E1AP_E1AP_PDU_t *pdu);
+                                                 const E1AP_E1AP_PDU_t *pdu);
 
 int e1apCUUP_handle_BEARER_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
-                                                        E1AP_E1AP_PDU_t *pdu);
+                                                        const E1AP_E1AP_PDU_t *pdu);
 
-int e1apCUUP_send_BEARER_CONTEXT_SETUP_RESPONSE(instance_t instance,
-                                                e1ap_bearer_setup_resp_t *resp);
+void e1apCUUP_send_BEARER_CONTEXT_SETUP_RESPONSE(instance_t instance,
+                                                 e1ap_bearer_setup_resp_t *const resp);
 
 void *E1AP_CUUP_task(void *arg);
 
diff --git a/openair2/E1AP/e1ap_api.c b/openair2/E1AP/e1ap_api.c
index 97fb4587482..e297c6e7777 100644
--- a/openair2/E1AP/e1ap_api.c
+++ b/openair2/E1AP/e1ap_api.c
@@ -100,7 +100,7 @@ static void fill_DRB_configList_e1(NR_DRB_ToAddModList_t *DRB_configList, pdu_se
   }
 }
 
-static int drb_config_N3gtpu_create(e1ap_bearer_setup_req_t *req,
+static int drb_config_N3gtpu_create(e1ap_bearer_setup_req_t * const req,
                                     gtpv1u_gnb_create_tunnel_resp_t *create_tunnel_resp,
                                     instance_t instance) {
 
@@ -108,7 +108,7 @@ static int drb_config_N3gtpu_create(e1ap_bearer_setup_req_t *req,
 
   NR_DRB_ToAddModList_t DRB_configList = {0};
   for (int i=0; i < req->numPDUSessions; i++) {
-    pdu_session_to_setup_t *pdu = &req->pduSession[i];
+    pdu_session_to_setup_t *const pdu = &req->pduSession[i];
     create_tunnel_req.pdusession_id[i] = pdu->sessionId;
     create_tunnel_req.incoming_rb_id[i] = pdu->DRBnGRanList[0].id; // taking only the first DRB. TODO:change this
     memcpy(&create_tunnel_req.dst_addr[i].buffer,
@@ -152,7 +152,7 @@ static int drb_config_N3gtpu_create(e1ap_bearer_setup_req_t *req,
   return ret;
 }
 
-void CUUP_process_e1_bearer_context_setup_req(e1ap_bearer_setup_req_t *req, instance_t instance) {
+void CUUP_process_e1_bearer_context_setup_req(e1ap_bearer_setup_req_t *const req, instance_t instance) {
 
   gtpv1u_gnb_create_tunnel_resp_t create_tunnel_resp_N3={0};
 
@@ -169,7 +169,7 @@ void CUUP_process_e1_bearer_context_setup_req(e1ap_bearer_setup_req_t *req, inst
             &my_addr);
 
   gtpInst = getCxtE1(UPtype, instance)->gtpInstF1U;
-  CU_create_UP_DL_tunnel(&resp, req, gtpInst, req->gNB_cu_cp_ue_id, remote_port, my_addr);
+  fill_e1ap_bearer_setup_resp(&resp, req, gtpInst, req->gNB_cu_cp_ue_id, remote_port, my_addr);
 
   resp.gNB_cu_cp_ue_id = req->gNB_cu_cp_ue_id;
   resp.numPDUSessions = req->numPDUSessions;
@@ -193,7 +193,7 @@ void CUUP_process_e1_bearer_context_setup_req(e1ap_bearer_setup_req_t *req, inst
   e1apCUUP_send_BEARER_CONTEXT_SETUP_RESPONSE(instance, &resp);
 }
 
-void CUUP_process_bearer_context_mod_req(e1ap_bearer_setup_req_t *req, instance_t instance) {
+void CUUP_process_bearer_context_mod_req(e1ap_bearer_setup_req_t *const req, instance_t instance) {
   instance_t gtpInst = getCxtE1(UPtype, instance)->gtpInstF1U;
   CU_update_UP_DL_tunnel(req, gtpInst, req->gNB_cu_cp_ue_id);
   // TODO: send bearer cxt mod response
diff --git a/openair2/E1AP/e1ap_api.h b/openair2/E1AP/e1ap_api.h
index 1f2c439ea28..6f14b1f18dc 100644
--- a/openair2/E1AP/e1ap_api.h
+++ b/openair2/E1AP/e1ap_api.h
@@ -27,8 +27,8 @@
 #include "platform_types.h"
 #include "openair2/COMMON/e1ap_messages_types.h"
 
-void CUUP_process_e1_bearer_context_setup_req(e1ap_bearer_setup_req_t *req, instance_t instance);
+void CUUP_process_e1_bearer_context_setup_req(e1ap_bearer_setup_req_t *const req, instance_t instance);
 
-void CUUP_process_bearer_context_mod_req(e1ap_bearer_setup_req_t *req, instance_t instance);
+void CUUP_process_bearer_context_mod_req(e1ap_bearer_setup_req_t *const req, instance_t instance);
 
 #endif
diff --git a/openair2/F1AP/f1ap_decoder.c b/openair2/F1AP/f1ap_decoder.c
index 04c4ae18ee9..0085add838b 100644
--- a/openair2/F1AP/f1ap_decoder.c
+++ b/openair2/F1AP/f1ap_decoder.c
@@ -166,7 +166,7 @@ static int f1ap_decode_unsuccessful_outcome(F1AP_F1AP_PDU_t *pdu) {
 int f1ap_decode_pdu(F1AP_F1AP_PDU_t *pdu, const uint8_t *const buffer, uint32_t length) {
   asn_dec_rval_t dec_ret;
   DevAssert(buffer != NULL);
-  asn_codec_ctx_t st={100*1000};
+  asn_codec_ctx_t st={.max_stack_size = 100 * 1000};
   dec_ret = aper_decode(&st,
                         &asn_DEF_F1AP_F1AP_PDU,
                         (void **)&pdu,
diff --git a/openair2/RRC/NR/cucp_cuup_direct.c b/openair2/RRC/NR/cucp_cuup_direct.c
index f3857911260..86b7820dae2 100644
--- a/openair2/RRC/NR/cucp_cuup_direct.c
+++ b/openair2/RRC/NR/cucp_cuup_direct.c
@@ -40,12 +40,12 @@
 
 extern RAN_CONTEXT_t RC;
 
-void CU_create_UP_DL_tunnel(e1ap_bearer_setup_resp_t *resp,
-                            e1ap_bearer_setup_req_t *req,
-                            instance_t gtpInst,
-                            ue_id_t ue_id,
-                            int remote_port,
-                            in_addr_t my_addr) {
+void fill_e1ap_bearer_setup_resp(e1ap_bearer_setup_resp_t *resp,
+                                 e1ap_bearer_setup_req_t *const req,
+                                 instance_t gtpInst,
+                                 ue_id_t ue_id,
+                                 int remote_port,
+                                 in_addr_t my_addr) {
 
   resp->numPDUSessions = req->numPDUSessions;
   transport_layer_addr_t dummy_address = {0};
@@ -78,7 +78,7 @@ void CU_create_UP_DL_tunnel(e1ap_bearer_setup_resp_t *resp,
   }
 }
 
-void CU_update_UP_DL_tunnel(e1ap_bearer_setup_req_t *req, instance_t instance, ue_id_t ue_id) {
+void CU_update_UP_DL_tunnel(e1ap_bearer_setup_req_t *const req, instance_t instance, ue_id_t ue_id) {
   for (int i=0; i < req->numPDUSessionsMod; i++) {
     for (int j=0; j < req->pduSessionMod[i].numDRB2Modify; j++) {
       DRB_nGRAN_to_setup_t *drb_p = req->pduSessionMod[i].DRBnGRanModList + j;
@@ -100,7 +100,7 @@ void CU_update_UP_DL_tunnel(e1ap_bearer_setup_req_t *req, instance_t instance, u
 
 static int drb_config_gtpu_create(const protocol_ctxt_t *const ctxt_p,
                                   rrc_gNB_ue_context_t  *ue_context_p,
-                                  e1ap_bearer_setup_req_t *req,
+                                  e1ap_bearer_setup_req_t *const req,
                                   NR_DRB_ToAddModList_t *DRB_configList,
                                   NR_SRB_ToAddModList_t *SRB_configList,
                                   instance_t instance) {
@@ -177,7 +177,7 @@ static int drb_config_gtpu_create(const protocol_ctxt_t *const ctxt_p,
   return ret;
 }
 
-static void cucp_cuup_bearer_context_setup_direct(e1ap_bearer_setup_req_t *req, instance_t instance) {
+static void cucp_cuup_bearer_context_setup_direct(e1ap_bearer_setup_req_t *const req, instance_t instance) {
   rrc_gNB_ue_context_t *ue_context_p = rrc_gNB_get_ue_context(RC.nrrrc[GNB_INSTANCE_TO_MODULE_ID(instance)], req->rnti);
   protocol_ctxt_t ctxt = {0};
   PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, GNB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0, 0);
@@ -202,18 +202,18 @@ static void cucp_cuup_bearer_context_setup_direct(e1ap_bearer_setup_req_t *req,
     in_addr_t my_addr = inet_addr(RC.nrrrc[ctxt.module_id]->eth_params_s.my_addr);
     instance_t gtpInst = getCxt(CUtype, instance)->gtpInst;
     // GTP tunnel for DL
-    CU_create_UP_DL_tunnel(&resp, req, gtpInst, ue_context_p->ue_context.rnti, remote_port, my_addr);
+    fill_e1ap_bearer_setup_resp(&resp, req, gtpInst, ue_context_p->ue_context.rnti, remote_port, my_addr);
 
     prepare_and_send_ue_context_modification_f1(ue_context_p, &resp);
   }
 }
 
-static void cucp_cuup_bearer_context_mod_direct(e1ap_bearer_setup_req_t *req, instance_t instance) {
+static void cucp_cuup_bearer_context_mod_direct(e1ap_bearer_setup_req_t *const req, instance_t instance) {
   instance_t gtpInst = getCxt(CUtype, instance)->gtpInst;
   CU_update_UP_DL_tunnel(req, gtpInst, req->rnti);
 }
 
 void cucp_cuup_message_transfer_direct_init(gNB_RRC_INST *rrc) {
-  rrc->cucp_cuup.cucp_cuup_bearer_context_setup = cucp_cuup_bearer_context_setup_direct;
-  rrc->cucp_cuup.cucp_cuup_bearer_context_mod = cucp_cuup_bearer_context_mod_direct;
+  rrc->cucp_cuup.bearer_context_setup = cucp_cuup_bearer_context_setup_direct;
+  rrc->cucp_cuup.bearer_context_mod = cucp_cuup_bearer_context_mod_direct;
 }
diff --git a/openair2/RRC/NR/cucp_cuup_e1ap.c b/openair2/RRC/NR/cucp_cuup_e1ap.c
index 7322714718d..069629db0bd 100644
--- a/openair2/RRC/NR/cucp_cuup_e1ap.c
+++ b/openair2/RRC/NR/cucp_cuup_e1ap.c
@@ -35,7 +35,7 @@
 
 extern RAN_CONTEXT_t RC;
 
-static void cucp_cuup_bearer_context_setup_e1ap(e1ap_bearer_setup_req_t *req, instance_t instance) {
+static void cucp_cuup_bearer_context_setup_e1ap(e1ap_bearer_setup_req_t *const req, instance_t instance) {
   rrc_gNB_ue_context_t *ue_context_p = rrc_gNB_get_ue_context(RC.nrrrc[GNB_INSTANCE_TO_MODULE_ID(instance)], req->rnti);
   protocol_ctxt_t ctxt = {0};
   PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, GNB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0, 0);
@@ -48,7 +48,7 @@ static void cucp_cuup_bearer_context_setup_e1ap(e1ap_bearer_setup_req_t *req, in
   itti_send_msg_to_task (TASK_CUCP_E1, instance, msg_p);
 }
 
-static void cucp_cuup_bearer_context_mod_e1ap(e1ap_bearer_setup_req_t *req, instance_t instance) {
+static void cucp_cuup_bearer_context_mod_e1ap(e1ap_bearer_setup_req_t *const req, instance_t instance) {
   MessageDef *msg = itti_alloc_new_message(TASK_CUCP_E1, instance, E1AP_BEARER_CONTEXT_MODIFICATION_REQ);
   e1ap_bearer_setup_req_t *req_msg = &E1AP_BEARER_CONTEXT_SETUP_REQ(msg);
   memcpy(req_msg, req, sizeof(*req));
@@ -56,6 +56,6 @@ static void cucp_cuup_bearer_context_mod_e1ap(e1ap_bearer_setup_req_t *req, inst
 }
 
 void cucp_cuup_message_transfer_e1ap_init(gNB_RRC_INST *rrc) {
-  rrc->cucp_cuup.cucp_cuup_bearer_context_setup = cucp_cuup_bearer_context_setup_e1ap;
-  rrc->cucp_cuup.cucp_cuup_bearer_context_mod = cucp_cuup_bearer_context_mod_e1ap;
+  rrc->cucp_cuup.bearer_context_setup = cucp_cuup_bearer_context_setup_e1ap;
+  rrc->cucp_cuup.bearer_context_mod = cucp_cuup_bearer_context_mod_e1ap;
 }
diff --git a/openair2/RRC/NR/cucp_cuup_if.h b/openair2/RRC/NR/cucp_cuup_if.h
index 6b641b55f8a..079a32e8506 100644
--- a/openair2/RRC/NR/cucp_cuup_if.h
+++ b/openair2/RRC/NR/cucp_cuup_if.h
@@ -27,16 +27,16 @@
 
 struct e1ap_bearer_setup_req_s;
 struct e1ap_bearer_setup_resp_s;
-typedef void (*cucp_cuup_bearer_context_setup_func_t)(struct e1ap_bearer_setup_req_s *req, instance_t instance);
+typedef void (*cucp_cuup_bearer_context_setup_func_t)(struct e1ap_bearer_setup_req_s *const req, instance_t instance);
 
 struct gNB_RRC_INST_s;
 void cucp_cuup_message_transfer_direct_init(struct gNB_RRC_INST_s *rrc);
 void cucp_cuup_message_transfer_e1ap_init(struct gNB_RRC_INST_s *rrc);
-void CU_create_UP_DL_tunnel(struct e1ap_bearer_setup_resp_s *resp,
-                            struct e1ap_bearer_setup_req_s *req,
-                            instance_t gtpInst,
-                            ue_id_t ue_id,
-                            int remote_port,
-                            in_addr_t my_addr);
-void CU_update_UP_DL_tunnel(struct e1ap_bearer_setup_req_s *req, instance_t instance, ue_id_t ue_id);
+void fill_e1ap_bearer_setup_resp(struct e1ap_bearer_setup_resp_s *resp,
+                                 struct e1ap_bearer_setup_req_s *const req,
+                                 instance_t gtpInst,
+                                 ue_id_t ue_id,
+                                 int remote_port,
+                                 in_addr_t my_addr);
+void CU_update_UP_DL_tunnel(struct e1ap_bearer_setup_req_s *const req, instance_t instance, ue_id_t ue_id);
 #endif
diff --git a/openair2/RRC/NR/nr_rrc_defs.h b/openair2/RRC/NR/nr_rrc_defs.h
index 98641099a10..f0b9b200399 100644
--- a/openair2/RRC/NR/nr_rrc_defs.h
+++ b/openair2/RRC/NR/nr_rrc_defs.h
@@ -478,8 +478,8 @@ typedef struct nr_mac_rrc_dl_if_s {
 } nr_mac_rrc_dl_if_t;
 
 typedef struct cucp_cuup_if_s {
-  cucp_cuup_bearer_context_setup_func_t cucp_cuup_bearer_context_setup;
-  cucp_cuup_bearer_context_setup_func_t cucp_cuup_bearer_context_mod;
+  cucp_cuup_bearer_context_setup_func_t bearer_context_setup;
+  cucp_cuup_bearer_context_setup_func_t bearer_context_mod;
 } cucp_cuup_if_t;
 
 //---NR---(completely change)---------------------
diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c
index e890914a702..2dfcc6eb142 100755
--- a/openair2/RRC/NR/rrc_gNB.c
+++ b/openair2/RRC/NR/rrc_gNB.c
@@ -756,19 +756,15 @@ void fill_DRB_configList(const protocol_ctxt_t *const ctxt_pP,
   gNB_RRC_UE_t                  *ue_p = &ue_context_pP->ue_context;
   NR_DRB_ToAddModList_t        **DRB_configList  = NULL;
   NR_DRB_ToAddModList_t        **DRB_configList2 = NULL;
-  NR_SRB_ToAddModList_t        *SRB_configList  = ue_context_pP->ue_context.SRB_configList;
   int                            qos_flow_index = 0;
   int                            pdu_sessions_done = 0;
   int i;
   uint8_t drb_id_to_setup_start = 0;
   uint8_t nb_drb_to_setup = rrc->configuration.drbs;
   long drb_priority[NGAP_MAX_DRBS_PER_UE];
-  NR_CellGroupConfig_t *cellGroupConfig = NULL;
 
   uint8_t xid = rrc_gNB_get_next_transaction_identifier(ctxt_pP->module_id);
 
-  NR_SRB_ToAddModList_t **SRB_configList2 = generateSRB2_confList(ue_p, SRB_configList, xid);
-
   DRB_configList = &ue_context_pP->ue_context.DRB_configList;
   if (*DRB_configList) {
       free(*DRB_configList);
@@ -881,6 +877,7 @@ void fill_DRB_configList(const protocol_ctxt_t *const ctxt_pP,
           ASN_SEQUENCE_ADD(&(*DRB_configList)->list, DRB_config);
           ASN_SEQUENCE_ADD(&(*DRB_configList2)->list, DRB_config);
         }
+        LOG_D(RRC, "DRB Priority %ld\n", drb_priority[drb_id]); // To supress warning for now
       }
     }
 
@@ -3540,7 +3537,7 @@ static void rrc_CU_process_ue_context_modification_response(MessageDef *msg_p, c
   }
 
   // send the F1 response message up to update F1-U tunnel info
-  rrc->cucp_cuup.cucp_cuup_bearer_context_mod(&req, instance);
+  rrc->cucp_cuup.bearer_context_mod(&req, instance);
 
   NR_CellGroupConfig_t *cellGroupConfig = NULL;
 
diff --git a/openair2/RRC/NR/rrc_gNB_NGAP.c b/openair2/RRC/NR/rrc_gNB_NGAP.c
index 98f76932fad..64f0bea9ff0 100644
--- a/openair2/RRC/NR/rrc_gNB_NGAP.c
+++ b/openair2/RRC/NR/rrc_gNB_NGAP.c
@@ -1070,7 +1070,7 @@ rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ(
     }
   }
 
-  rrc->cucp_cuup.cucp_cuup_bearer_context_setup(&bearer_req, instance);
+  rrc->cucp_cuup.bearer_context_setup(&bearer_req, instance);
   return;
 }
 
-- 
GitLab