[Epic-ID: ODUHIGH-463][Task-ID: ODUHIGH-509]Fix for memory leak and F1AP message...
[o-du/l2.git] / src / du_app / du_f1ap_msg_hdl.c
index 1450f92..eeaa1d3 100644 (file)
 #include "CFRA-SSB-Resource.h"
 #include "BWP-UplinkCommon.h"
 #include "ReconfigurationWithSync.h"
+#include "BCCH-DL-SCH-Message.h"
 #include "du_sys_info_hdl.h"
 #include "DRX-ConfigRrc.h"
+#include "MeasurementTimingConfigurationRrc.h"
+#include "MeasurementTimingConfigurationRrc-IEs.h"
+#include "MeasTimingList.h"
+#include "MeasTiming.h"
+#include "Cells-Status-List.h"
+#include "Cells-Status-Item.h"
 
 #ifdef O1_ENABLE
 #include "CmInterface.h"
@@ -210,13 +217,13 @@ uint8_t fetchLcId(uint8_t drbId)
       {
          if(duCb.actvCellLst[cellIdx] != NULLP)
          {
-            numLcs = duCb.actvCellLst[cellIdx]->ueCb[ueIdx].rlcUeCfg.numLcs;
+            numLcs = duCb.actvCellLst[cellIdx]->ueCb[ueIdx].duRlcUeCfg.numLcs;
             for(lcIdx = 0; lcIdx < numLcs; lcIdx++)
             {
-               if(duCb.actvCellLst[cellIdx]->ueCb[ueIdx].rlcUeCfg.rlcLcCfg[lcIdx].rbId == drbId && \
-                  duCb.actvCellLst[cellIdx]->ueCb[ueIdx].rlcUeCfg.rlcLcCfg[lcIdx].rbType == RB_TYPE_DRB)
+               if(duCb.actvCellLst[cellIdx]->ueCb[ueIdx].duRlcUeCfg.rlcLcCfg[lcIdx].rlcBearerCfg.rbId == drbId && \
+                  duCb.actvCellLst[cellIdx]->ueCb[ueIdx].duRlcUeCfg.rlcLcCfg[lcIdx].rlcBearerCfg.rbType == RB_TYPE_DRB)
                {
-                  lcId = duCb.actvCellLst[cellIdx]->ueCb[ueIdx].rlcUeCfg.rlcLcCfg[lcIdx].lcId;
+                  lcId = duCb.actvCellLst[cellIdx]->ueCb[ueIdx].duRlcUeCfg.rlcLcCfg[lcIdx].rlcBearerCfg.lcId;
                   return lcId;
                }
             }
@@ -540,6 +547,7 @@ uint8_t fillNrTddInfo(TDD_Info_t *tddInfo)
 
       freqInfo->freqBandListNr.list.array[freqBandListIdx]->freqBandIndicatorNr = duCfgParam.srvdCellLst[0].duCellInfo.\
       f1Mode.mode.tdd.nrFreqInfo.freqBand[0].nrFreqBand;
+
       freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.count = elementCnt;
       freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.size = freqInfo->freqBandListNr.list.array[freqBandListIdx]->\
       supportedSULBandList.list.count * sizeof(SupportedSULFreqBandItem_t*);
@@ -824,6 +832,186 @@ uint8_t  BuildServedPlmn(ServedPLMNs_List_t *srvplmn)
    }
    return ROK;
 }
+
+/*******************************************************************
+ *
+ * @brief Frees Measurement Timing configuration 
+ *
+ * @details
+ *
+ *    Function : FreeMeasTimingConf
+ *
+ *    Functionality: Frees Timing Configuration
+ *
+ * @params[in] MeasurementTimingConfigurationRrc_t measTimingConfRrc
+ * @return ROK     - success
+ *         RFAILED - failure
+ *
+ * ****************************************************************/
+void FreeMeasTimingConf(MeasurementTimingConfigurationRrc_t   measTimingConfRrc)
+{
+   uint8_t measIeIdx = 0;
+   MeasurementTimingConfigurationRrc_IEs_t  *measTimingConfIEs = NULLP;
+
+   if(measTimingConfRrc.criticalExtensions.choice.c1)
+   {
+      if(measTimingConfRrc.criticalExtensions.choice.c1->choice.measTimingConf)
+      {
+         measTimingConfIEs = measTimingConfRrc.criticalExtensions.choice.c1->choice.measTimingConf;
+         if(measTimingConfIEs->measTiming)
+         {
+            if(measTimingConfIEs->measTiming->list.array)
+            {
+               for(measIeIdx = 0; measIeIdx < measTimingConfIEs->measTiming->list.count; measIeIdx++)
+               {
+                  if(measTimingConfIEs->measTiming->list.array[measIeIdx])
+                  {
+                     DU_FREE(measTimingConfIEs->measTiming->list.array[measIeIdx]->frequencyAndTiming, sizeof(struct MeasTiming__frequencyAndTiming));
+                     DU_FREE(measTimingConfIEs->measTiming->list.array[measIeIdx], sizeof(MeasTiming_t));
+                  }
+               }
+               DU_FREE(measTimingConfIEs->measTiming->list.array, measTimingConfIEs->measTiming->list.size);
+            }
+            DU_FREE(measTimingConfIEs->measTiming, sizeof(MeasTimingList_t));
+         }
+         DU_FREE(measTimingConfRrc.criticalExtensions.choice.c1->choice.measTimingConf, sizeof(MeasurementTimingConfigurationRrc_IEs_t));
+      }
+      DU_FREE(measTimingConfRrc.criticalExtensions.choice.c1, sizeof(struct MeasurementTimingConfigurationRrc__criticalExtensions__c1));
+   }
+}
+
+/*******************************************************************
+ *
+ * @brief Builds MEasuerment Timing Configuration
+ *
+ * @details
+ *
+ *    Function : BuildMeasTimingConf
+ *
+ *    Functionality: Building Measurement Timing Configuration
+ *
+ * @params[in] Pointer to octet string to store Measurement timing
+ *             Configuration
+ * @return ROK     - success
+ *         RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t BuildMeasTimingConf(OCTET_STRING_t *measTimingConf)
+{
+   uint8_t ret = RFAILED;
+   uint8_t elementCnt = 0;
+   uint8_t measIeIdx = 0;
+   asn_enc_rval_t encRetVal;
+   MeasurementTimingConfigurationRrc_t   measTimingConfRrc;
+   MeasurementTimingConfigurationRrc_IEs_t  *measTimingConfIEs = NULLP;
+   struct MeasTiming__frequencyAndTiming  *freqAndTiming = NULLP;
+
+   while(true)
+   {
+      measTimingConfRrc.criticalExtensions.present = MeasurementTimingConfigurationRrc__criticalExtensions_PR_c1;
+      DU_ALLOC(measTimingConfRrc.criticalExtensions.choice.c1, sizeof(struct MeasurementTimingConfigurationRrc__criticalExtensions__c1));
+      if(!measTimingConfRrc.criticalExtensions.choice.c1)
+      {
+         DU_LOG("ERROR  --> DU_APP : BuildMeasTimingConf(): Memory allocation failure for critical extension choice C1");
+         break;
+      }
+      measTimingConfRrc.criticalExtensions.choice.c1->present = MeasurementTimingConfigurationRrc__criticalExtensions__c1_PR_measTimingConf;
+
+      DU_ALLOC(measTimingConfRrc.criticalExtensions.choice.c1->choice.measTimingConf, sizeof(MeasurementTimingConfigurationRrc_IEs_t));
+      if(!measTimingConfRrc.criticalExtensions.choice.c1->choice.measTimingConf)
+      {
+         DU_LOG("ERROR  --> DU_APP : BuildMeasTimingConf(): Memory allocation failure for measTimingConf");
+         break;
+      }
+      measTimingConfIEs = measTimingConfRrc.criticalExtensions.choice.c1->choice.measTimingConf;
+
+      DU_ALLOC(measTimingConfIEs->measTiming, sizeof(MeasTimingList_t));
+      if(!measTimingConfIEs->measTiming)
+      {
+         DU_LOG("ERROR  --> DU_APP : BuildMeasTimingConf(): Memory allocation failure for MeasTimingList");
+         break;
+      }
+
+      elementCnt = 1;  
+      measTimingConfIEs->measTiming->list.count = elementCnt;
+      measTimingConfIEs->measTiming->list.size = elementCnt * sizeof(MeasTiming_t *);
+      DU_ALLOC(measTimingConfIEs->measTiming->list.array, measTimingConfIEs->measTiming->list.size);
+      if(!measTimingConfIEs->measTiming->list.array)
+      {
+         DU_LOG("ERROR  --> DU_APP : BuildMeasTimingConf(): Memory allocation failure for MeasTimingList array");
+         break;
+      }
+
+      for(measIeIdx = 0; measIeIdx < elementCnt; measIeIdx++)
+      {
+         DU_ALLOC(measTimingConfIEs->measTiming->list.array[measIeIdx], sizeof(MeasTiming_t));
+         if(!measTimingConfIEs->measTiming->list.array[measIeIdx])
+         {
+            DU_LOG("ERROR  --> DU_APP : BuildMeasTimingConf(): Memory allocation failure for MeasTimingList array index %d", measIeIdx);
+            break;
+         }
+      }
+      if(measIeIdx < elementCnt)
+      {
+         break;
+      }
+
+      measIeIdx = 0;
+      DU_ALLOC(measTimingConfIEs->measTiming->list.array[measIeIdx]->frequencyAndTiming, sizeof(struct MeasTiming__frequencyAndTiming));
+      if(!measTimingConfIEs->measTiming->list.array[measIeIdx]->frequencyAndTiming)
+      {
+         DU_LOG("ERROR  --> DU_APP : BuildMeasTimingConf(): Memory allocation failure for frequencyAndTiming");
+         break;
+      }
+      freqAndTiming = measTimingConfIEs->measTiming->list.array[measIeIdx]->frequencyAndTiming;
+      freqAndTiming->carrierFreq = MEAS_TIMING_ARFCN;
+      freqAndTiming->ssbSubcarrierSpacing = duCfgParam.macCellCfg.ssbCfg.scsCmn;
+      freqAndTiming->ssb_MeasurementTimingConfiguration.periodicityAndOffset.present = duCfgParam.macCellCfg.ssbCfg.ssbPeriod + 1;
+      freqAndTiming->ssb_MeasurementTimingConfiguration.periodicityAndOffset.choice.sf20 = duCfgParam.macCellCfg.ssbCfg.ssbScOffset;
+      freqAndTiming->ssb_MeasurementTimingConfiguration.duration = duCfgParam.srvdCellLst[0].duCellInfo.measTimeCfgDuration;
+
+      /* Encode the F1SetupRequest type as APER */
+      xer_fprint(stdout, &asn_DEF_MeasurementTimingConfigurationRrc, &measTimingConfRrc);
+
+      memset(encBuf, 0, ENC_BUF_MAX_LEN);
+      encBufSize = 0;
+      encRetVal = uper_encode(&asn_DEF_MeasurementTimingConfigurationRrc, 0, &measTimingConfRrc, PrepFinalEncBuf, encBuf);
+
+      /* Encode results */
+      if(encRetVal.encoded == ENCODE_FAIL)
+      {     
+         DU_LOG("\nERROR  -->  F1AP : Could not encode Measurement Timing Configuration structure (at %s)\n",\
+               encRetVal.failed_type ? encRetVal.failed_type->name : "unknown");
+         break;
+      }     
+      else  
+      {     
+         DU_LOG("\nDEBUG   -->  F1AP : Created APER encoded buffer for Measurement Timing Configuration \n");
+#ifdef DEBUG_ASN_PRINT
+         for(measIeIdx=0; measIeIdx< encBufSize; measIeIdx++)
+         {
+            printf("%x",encBuf[measIeIdx]);
+         }
+#endif
+
+         measTimingConf->size = encBufSize;
+         DU_ALLOC(measTimingConf->buf, encBufSize);
+         if(measTimingConf->buf == NULLP)
+         {
+            DU_LOG("\nERROR  -->  F1AP : Memory allocation failed for MeasurementTimingConfiguration buffer");
+            return RFAILED;
+         }
+         memcpy(measTimingConf->buf, &encBuf, encBufSize);
+
+         FreeMeasTimingConf(measTimingConfRrc);
+
+         ret = ROK;
+         break;
+      }
+   }
+   return ret;
+}
+
 /*******************************************************************
  *
  * @brief Builds Served Cell List
@@ -861,19 +1049,19 @@ uint8_t BuildServedCellList(GNB_DU_Served_Cells_List_t *duServedCell)
    for(plmnidx=0; plmnidx<plmnCnt; plmnidx++)
    {
       DU_ALLOC(duServedCell->list.array[plmnidx],\
-           sizeof(GNB_DU_Served_Cells_ItemIEs_t));
+            sizeof(GNB_DU_Served_Cells_ItemIEs_t));
       if(duServedCell->list.array[plmnidx] == NULLP)
       {
-        return RFAILED;
+         return RFAILED;
       }
    }
    idx = 0;
    duServedCell->list.array[idx]->id = ProtocolIE_ID_id_GNB_DU_Served_Cells_Item;
    duServedCell->list.array[idx]->criticality = Criticality_reject;
    duServedCell->list.array[idx]->value.present = \
-                                                 GNB_DU_Served_Cells_ItemIEs__value_PR_GNB_DU_Served_Cells_Item;
+                                                  GNB_DU_Served_Cells_ItemIEs__value_PR_GNB_DU_Served_Cells_Item;
    srvCellItem = \
-                &duServedCell->list.array[idx]->value.choice.GNB_DU_Served_Cells_Item;
+                 &duServedCell->list.array[idx]->value.choice.GNB_DU_Served_Cells_Item;
    /*nRCGI*/
    BuildNrcgiret = BuildNrcgi(&srvCellItem->served_Cell_Information.nRCGI);
    if(BuildNrcgiret != ROK)
@@ -882,42 +1070,36 @@ uint8_t BuildServedCellList(GNB_DU_Served_Cells_List_t *duServedCell)
    }
    /*nRPCI*/
    srvCellItem->served_Cell_Information.nRPCI = \
-                                               duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrPci;
+                                                duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrPci;
 
-   /*fiveGS_TAC*/
+   /* fiveGS_TAC */
    BuildFiveGSTacret = BuildFiveGSTac(&srvCellItem->served_Cell_Information);
    if(BuildFiveGSTacret != ROK)
    {
       return RFAILED;
    }
-   /*Served PLMNs*/
+
+   /* Served PLMNs */
    BuildServedPlmnret = BuildServedPlmn(&srvCellItem->served_Cell_Information.servedPLMNs);
    if(BuildServedPlmnret !=ROK)
    {
       return RFAILED;
    }
-   /*nR Mode Info with FDD*/
+
+   /* nR Mode Info with FDD/TDD */
    BuildNrModeret = BuildNrMode(&srvCellItem->served_Cell_Information.nR_Mode_Info);
    if(BuildNrModeret != ROK)
    {
       return RFAILED;
    }
+
    /*Measurement timing Config*/
-   srvCellItem->served_Cell_Information.measurementTimingConfiguration.\
-      size = sizeof(uint8_t);
-   DU_ALLOC(srvCellItem->served_Cell_Information.\
-        measurementTimingConfiguration.buf,srvCellItem->served_Cell_Information.measurementTimingConfiguration.size);
-   if(srvCellItem->served_Cell_Information.\
-        measurementTimingConfiguration.buf == NULLP)
-   {
+   if(BuildMeasTimingConf(&srvCellItem->served_Cell_Information.measurementTimingConfiguration) != ROK)
       return RFAILED;
-   }
-   srvCellItem->served_Cell_Information.measurementTimingConfiguration.buf[0] = \
-                                                                               duCfgParam.srvdCellLst[0].duCellInfo.measTimeCfg;
 
    /* GNB DU System Information */
    DU_ALLOC(srvCellItem->gNB_DU_System_Information,
-        sizeof(GNB_DU_System_Information_t));
+         sizeof(GNB_DU_System_Information_t));
    if(!srvCellItem->gNB_DU_System_Information)
    {
       return RFAILED;
@@ -925,20 +1107,20 @@ uint8_t BuildServedCellList(GNB_DU_Served_Cells_List_t *duServedCell)
    /* MIB */
    srvCellItem->gNB_DU_System_Information->mIB_message.size = duCfgParam.srvdCellLst[0].duSysInfo.mibLen;
    DU_ALLOC(srvCellItem->gNB_DU_System_Information->mIB_message.buf,
-        srvCellItem->gNB_DU_System_Information->mIB_message.size);
+         srvCellItem->gNB_DU_System_Information->mIB_message.size);
    if(!srvCellItem->gNB_DU_System_Information->mIB_message.buf)
    {
       return RFAILED;
    }
    memcpy(srvCellItem->gNB_DU_System_Information->mIB_message.buf, duCfgParam.srvdCellLst[0].duSysInfo.mibMsg, \
-                  srvCellItem->gNB_DU_System_Information->mIB_message.size);
+         srvCellItem->gNB_DU_System_Information->mIB_message.size);
 
    /* SIB1 */
    srvCellItem->gNB_DU_System_Information->sIB1_message.size =\
-                                                             duCfgParam.srvdCellLst[0].duSysInfo.sib1Len;
+                                                              duCfgParam.srvdCellLst[0].duSysInfo.sib1Len;
 
    DU_ALLOC(srvCellItem->gNB_DU_System_Information->sIB1_message.buf,
-        srvCellItem->gNB_DU_System_Information->sIB1_message.size);
+         srvCellItem->gNB_DU_System_Information->sIB1_message.size);
    if(!srvCellItem->gNB_DU_System_Information->sIB1_message.buf)
    {
       return RFAILED;
@@ -946,7 +1128,7 @@ uint8_t BuildServedCellList(GNB_DU_Served_Cells_List_t *duServedCell)
    for(int x=0; x<srvCellItem->gNB_DU_System_Information->sIB1_message.size; x++)
    {
       srvCellItem->gNB_DU_System_Information->sIB1_message.buf[x]=\
-                                                                 duCfgParam.srvdCellLst[0].duSysInfo.sib1Msg[x];
+                                                                  duCfgParam.srvdCellLst[0].duSysInfo.sib1Msg[x];
    }
    return ROK; 
 }                                                                                                                  
@@ -1214,7 +1396,7 @@ void freeFddNrFreqInfo(FDD_Info_t *fDD)
  * ****************************************************************/
 void FreeServedCellList( GNB_DU_Served_Cells_List_t *duServedCell)
 {
-   uint8_t   plmnCnt=MAX_PLMN;
+   uint8_t   plmnCnt= 1;
    uint8_t  extensionCnt=IE_EXTENSION_LIST_COUNT;
    uint8_t  plmnIdx=0, sliceIdx=0;
    GNB_DU_Served_Cells_Item_t *srvCellItem;
@@ -1359,50 +1541,51 @@ void FreeF1SetupReq(F1AP_PDU_t *f1apMsg)
    {
       if(f1apMsg->choice.initiatingMessage != NULLP)
       {
-        f1SetupReq = &f1apMsg->choice.initiatingMessage->value.choice.F1SetupRequest;
-        if(f1SetupReq->protocolIEs.list.array != NULLP)
-        {
-           for(ieIdx = 0; ieIdx < f1SetupReq->protocolIEs.list.count; ieIdx++)
-           {
-              if(f1SetupReq->protocolIEs.list.array[ieIdx] != NULLP)
-              {
-                 switch(f1SetupReq->protocolIEs.list.array[ieIdx]->id)
-                 {
-                    case ProtocolIE_ID_id_TransactionID:
-                       break;
-                    case ProtocolIE_ID_id_gNB_DU_ID:
-                       DU_FREE(f1SetupReq->protocolIEs.list.array[ieIdx]->value.choice.GNB_DU_ID.buf,\
-                             f1SetupReq->protocolIEs.list.array[ieIdx]->value.choice.GNB_DU_ID.size);
-                       break;
-                    case ProtocolIE_ID_id_gNB_DU_Name:
-                       DU_FREE(f1SetupReq->protocolIEs.list.array[ieIdx]->value.choice.GNB_DU_Name.buf,\
-                             strlen((char *)duCfgParam.duName));
-                       break;
-                    case ProtocolIE_ID_id_gNB_DU_Served_Cells_List:
-                       FreeServedCellList(&f1SetupReq->protocolIEs.list.\
-                             array[ieIdx]->value.choice.GNB_DU_Served_Cells_List);
-                       break;
-                    case ProtocolIE_ID_id_GNB_DU_RRC_Version:
-                       FreeRrcVer(&f1SetupReq->protocolIEs.list.array[ieIdx]->value.choice.RRC_Version);
-                       break;
-                    default:
-                       DU_LOG("\nERROR  -->  Invalid Event Type %ld", f1SetupReq->protocolIEs.list.array[ieIdx]->id);
-                       break;
-                 }
-              }
-           }
-           for(ieIdx2=0; ieIdx2< ieIdx; ieIdx2++)
-           {
-              DU_FREE(f1SetupReq->protocolIEs.list.array[ieIdx2],sizeof(F1SetupRequestIEs_t));
-           }
-           DU_FREE(f1SetupReq->protocolIEs.list.array,\
-                 f1SetupReq->protocolIEs.list.size);
-        }
-        DU_FREE(f1apMsg->choice.initiatingMessage, sizeof(InitiatingMessage_t));
+         f1SetupReq = &f1apMsg->choice.initiatingMessage->value.choice.F1SetupRequest;
+         if(f1SetupReq->protocolIEs.list.array != NULLP)
+         {
+            for(ieIdx = 0; ieIdx < f1SetupReq->protocolIEs.list.count; ieIdx++)
+            {
+               if(f1SetupReq->protocolIEs.list.array[ieIdx] != NULLP)
+               {
+                  switch(f1SetupReq->protocolIEs.list.array[ieIdx]->id)
+                  {
+                     case ProtocolIE_ID_id_TransactionID:
+                        break;
+                     case ProtocolIE_ID_id_gNB_DU_ID:
+                        DU_FREE(f1SetupReq->protocolIEs.list.array[ieIdx]->value.choice.GNB_DU_ID.buf,\
+                              f1SetupReq->protocolIEs.list.array[ieIdx]->value.choice.GNB_DU_ID.size);
+                        break;
+                     case ProtocolIE_ID_id_gNB_DU_Name:
+                        DU_FREE(f1SetupReq->protocolIEs.list.array[ieIdx]->value.choice.GNB_DU_Name.buf,\
+                              strlen((char *)duCfgParam.duName));
+                        break;
+                     case ProtocolIE_ID_id_gNB_DU_Served_Cells_List:
+                        FreeServedCellList(&f1SetupReq->protocolIEs.list.\
+                              array[ieIdx]->value.choice.GNB_DU_Served_Cells_List);
+                        break;
+                     case ProtocolIE_ID_id_GNB_DU_RRC_Version:
+                        FreeRrcVer(&f1SetupReq->protocolIEs.list.array[ieIdx]->value.choice.RRC_Version);
+                        break;
+                     default:
+                        DU_LOG("\nERROR  -->  Invalid Event Type %ld", f1SetupReq->protocolIEs.list.array[ieIdx]->id);
+                        break;
+                  }
+               }
+            }
+            for(ieIdx2=0; ieIdx2< ieIdx; ieIdx2++)
+            {
+               DU_FREE(f1SetupReq->protocolIEs.list.array[ieIdx2],sizeof(F1SetupRequestIEs_t));
+            }
+            DU_FREE(f1SetupReq->protocolIEs.list.array,\
+                  f1SetupReq->protocolIEs.list.size);
+         }
+         DU_FREE(f1apMsg->choice.initiatingMessage, sizeof(InitiatingMessage_t));
       }
       DU_FREE(f1apMsg, sizeof(F1AP_PDU_t));
    }
 }
+
 /*******************************************************************
  *
  * @brief Builds and Send the F1SetupRequest
@@ -1433,25 +1616,25 @@ uint8_t BuildAndSendF1SetupReq()
       DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t));
       if(f1apMsg == NULLP)
       {
-        break;
+         break;
       }
       f1apMsg->present = F1AP_PDU_PR_initiatingMessage;
       DU_ALLOC(f1apMsg->choice.initiatingMessage, sizeof(InitiatingMessage_t));
       if(f1apMsg->choice.initiatingMessage == NULLP)
       {
-        break;
+         break;
       }
       f1apMsg->choice.initiatingMessage->procedureCode = ProcedureCode_id_F1Setup;
       f1apMsg->choice.initiatingMessage->criticality = Criticality_reject;
       f1apMsg->choice.initiatingMessage->value.present = \
-                                                        InitiatingMessage__value_PR_F1SetupRequest;
+                                                         InitiatingMessage__value_PR_F1SetupRequest;
 
       f1SetupReq = &f1apMsg->choice.initiatingMessage->value.choice.F1SetupRequest;
 
-      elementCnt = 4;
+      elementCnt = 5;
 
       f1SetupReq->protocolIEs.list.count = elementCnt;
-      f1SetupReq->protocolIEs.list.size = elementCnt * sizeof(F1SetupRequestIEs_t );
+      f1SetupReq->protocolIEs.list.size = elementCnt * sizeof(F1SetupRequestIEs_t *);
 
       /* Initialize the F1Setup members */
       DU_ALLOC(f1SetupReq->protocolIEs.list.array,f1SetupReq->protocolIEs.list.size);
@@ -1497,7 +1680,6 @@ uint8_t BuildAndSendF1SetupReq()
 
       f1SetupReq->protocolIEs.list.array[ieIdx]->value.choice.GNB_DU_ID.buf[0] =\
                                                                                 duCfgParam.duId;
-#if 0
       /* DU name IE is of type printableString_t which wireshark is unable to decode.
        * However this string is decoded successfully on online decoders.
        * Since this is an optional IE and the value received in it are not
@@ -1518,9 +1700,8 @@ uint8_t BuildAndSendF1SetupReq()
             break;
          }
          strcpy((char*)f1SetupReq->protocolIEs.list.array[ieIdx]->value.choice.GNB_DU_Name.buf,
-               (char*)&duCfgParam.duName);
+               (char*)duCfgParam.duName);
       }
-#endif
 
       /*Served Cell list */
       ieIdx++;
@@ -1536,7 +1717,6 @@ uint8_t BuildAndSendF1SetupReq()
          break;
       }
 
-
       /*RRC Version*/
       ieIdx++;
       f1SetupReq->protocolIEs.list.array[ieIdx]->id = \
@@ -1705,7 +1885,7 @@ void freeCellsToModifyItem(Served_Cells_To_Modify_Item_t *modifyItem)
       }
    }
    DU_FREE(modifyItem->served_Cell_Information.measurementTimingConfiguration.buf,\
-      modifyItem->served_Cell_Information.measurementTimingConfiguration.size);
+         modifyItem->served_Cell_Information.measurementTimingConfiguration.size);
 }
 
 /*******************************************************************
@@ -1726,12 +1906,13 @@ void freeCellsToModifyItem(Served_Cells_To_Modify_Item_t *modifyItem)
  * ****************************************************************/
 void FreeDUConfigUpdate(F1AP_PDU_t *f1apDuCfg)
 {
-   uint8_t  ieIdx=0, cellModifyIdx=0, cellDeleteIdx=0;
+   uint8_t  idx=0,ieIdx=0, cellModifyIdx=0, cellDeleteIdx=0;
    GNBDUConfigurationUpdate_t *duCfgUpdate = NULLP;
    Served_Cells_To_Modify_List_t  *cellsToModify=NULLP;
    Served_Cells_To_Delete_List_t  *cellsToDelete=NULLP;
    Served_Cells_To_Delete_Item_t  *deleteItem = NULLP;
    Served_Cells_To_Delete_ItemIEs_t *deleteItemIe = NULLP;
+   Cells_Status_ItemIEs_t *cellStatusItemIE;
 
    if(f1apDuCfg != NULLP)
    {
@@ -1799,6 +1980,18 @@ void FreeDUConfigUpdate(F1AP_PDU_t *f1apDuCfg)
                                  duCfgUpdate->protocolIEs.list.array[ieIdx]->value.choice.GNB_DU_ID.size);
                            break;
                         }
+                     case ProtocolIE_ID_id_Cells_Status_List:
+                        {
+                           for(idx = 0; idx < duCfgUpdate->protocolIEs.list.array[ieIdx]->value.choice.Cells_Status_List.list.count; idx++)
+                           {
+                              cellStatusItemIE = (Cells_Status_ItemIEs_t *)duCfgUpdate->protocolIEs.list.array[ieIdx]->value.choice.Cells_Status_List.list.array[idx];
+                              DU_FREE(cellStatusItemIE->value.choice.Cells_Status_Item.nRCGI.nRCellIdentity.buf, cellStatusItemIE->value.choice.Cells_Status_Item.nRCGI.nRCellIdentity.size);
+                              DU_FREE(cellStatusItemIE->value.choice.Cells_Status_Item.nRCGI.pLMN_Identity.buf, cellStatusItemIE->value.choice.Cells_Status_Item.nRCGI.pLMN_Identity.size);
+                              DU_FREE(duCfgUpdate->protocolIEs.list.array[ieIdx]->value.choice.Cells_Status_List.list.array[idx],sizeof(Cells_Status_ItemIEs_t));
+                           }
+                           DU_FREE(duCfgUpdate->protocolIEs.list.array[ieIdx]->value.choice.Cells_Status_List.list.array,\
+                                 duCfgUpdate->protocolIEs.list.array[ieIdx]->value.choice.Cells_Status_List.list.size);
+                        }
                   }
                   DU_FREE(duCfgUpdate->protocolIEs.list.array[ieIdx],\
                         sizeof(GNBDUConfigurationUpdateIEs_t));
@@ -2142,15 +2335,8 @@ uint8_t fillServedCellInfo(Served_Cell_Information_t *srvCellInfo)
 #endif
 
    /*Measurement timing Config*/
-   srvCellInfo->measurementTimingConfiguration.size = sizeof(uint8_t);
-   DU_ALLOC(srvCellInfo->measurementTimingConfiguration.\
-         buf,srvCellInfo->measurementTimingConfiguration.size);
-   if(srvCellInfo->measurementTimingConfiguration.buf == NULLP)
-   {
+   if(BuildMeasTimingConf(&srvCellInfo->measurementTimingConfiguration) != ROK)
       return RFAILED;
-   }
-   srvCellInfo->measurementTimingConfiguration.\
-        buf[0] = duCfgParam.srvdCellLst[0].duCellInfo.measTimeCfg;
 
    return ROK;
 }
@@ -2298,6 +2484,7 @@ uint8_t fillCellToDeleteItem(struct Served_Cells_To_Delete_ItemIEs *deleteItemIe
    fillBitString(&deleteItem->oldNRCGI.nRCellIdentity, ODU_VALUE_FOUR, ODU_VALUE_FIVE, duCfgParam.sib1Params.cellIdentity);
    return ROK;
 } 
+
 /*******************************************************************
  *
  * @brief Builds ServCellToDeleteList
@@ -2349,6 +2536,56 @@ uint8_t buildServCellToDeleteList(Served_Cells_To_Delete_List_t *cellsToDelete)
    return ROK;
 }
 
+/*******************************************************************
+ *
+ * @brief Builds CellsStatusList
+ *
+ * @details
+ *
+ *    Function : buildCellsStatusList
+ *
+ *    Functionality: Builds the Cell Status List
+ *
+ * @params[in] Pointer to Cells_Status_List_t *
+ *
+ * @return ROK     - success
+ *         RFAILED - failure
+ *
+ *****************************************************************/
+uint8_t buildCellsStatusList(Cells_Status_List_t *cellStatusList)
+{
+   uint8_t elementCnt = 0, idx = 0, ret = ROK;
+   Cells_Status_ItemIEs_t *cellStatusItemIE;
+
+   elementCnt = 1;
+   cellStatusList->list.count = elementCnt;
+   cellStatusList->list.size = elementCnt * sizeof(Cells_Status_ItemIEs_t *);
+   DU_ALLOC(cellStatusList->list.array, cellStatusList->list.size);
+
+   for(idx = 0; idx < elementCnt; idx++)
+   {
+      DU_ALLOC(cellStatusList->list.array[idx], sizeof(Cells_Status_ItemIEs_t));
+      if(!cellStatusList->list.array[idx])
+      {
+         DU_LOG("ERROR  --> F1AP: buildCellsStatusList() memory allocation failure");
+         return RFAILED;
+      }
+   }
+   idx = 0;
+   cellStatusItemIE = (Cells_Status_ItemIEs_t *)cellStatusList->list.array[idx];
+   cellStatusItemIE->id = ProtocolIE_ID_id_Cells_Status_Item;
+   cellStatusItemIE->criticality = Criticality_reject;
+   cellStatusItemIE->value.present = Cells_Status_ItemIEs__value_PR_Cells_Status_Item;
+   ret = BuildNrcgi(&cellStatusItemIE->value.choice.Cells_Status_Item.nRCGI);
+   if(ret == RFAILED)
+   {
+         DU_LOG("ERROR  --> F1AP: buildCellsStatusList() NRCGI failed");
+         return RFAILED;
+   }
+   cellStatusItemIE->value.choice.Cells_Status_Item.service_status.service_state = Service_State_in_service;
+   return ROK;
+}
+
 /*******************************************************************
  *
  * @brief Builds and sends the DUConfigUpdate
@@ -2404,7 +2641,7 @@ uint8_t BuildAndSendDUConfigUpdate(ServCellAction servCellAction)
                                                            InitiatingMessage__value_PR_GNBDUConfigurationUpdate;
       duCfgUpdate = &f1apDuCfg->choice.initiatingMessage->value.\
                     choice.GNBDUConfigurationUpdate;
-      elementCnt = 3;
+      elementCnt = 4;
       duCfgUpdate->protocolIEs.list.count = elementCnt;
       duCfgUpdate->protocolIEs.list.size = \
                                            elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t*);
@@ -2471,7 +2708,21 @@ uint8_t BuildAndSendDUConfigUpdate(ServCellAction servCellAction)
          }
          
       }
-      // NOTE :GNB DU SYS INFO:MIB AND SIB1 INFORMATION TO BE BUILT AND FILLED HERE
+      // TODO :GNB DU SYS INFO:MIB AND SIB1 INFORMATION TO BE BUILT AND FILLED HERE
+      
+      /*Cell Status List*/
+      ieIdx++;
+      duCfgUpdate->protocolIEs.list.array[ieIdx]->id = ProtocolIE_ID_id_Cells_Status_List;
+      duCfgUpdate->protocolIEs.list.array[ieIdx]->criticality = Criticality_reject;
+      duCfgUpdate->protocolIEs.list.array[ieIdx]->value.present = \
+           GNBDUConfigurationUpdateIEs__value_PR_Cells_Status_List;
+      ret = buildCellsStatusList(&duCfgUpdate->protocolIEs.list.array[ieIdx]->value.choice.Cells_Status_List);
+      if(ret == RFAILED)
+      {
+         DU_LOG("ERROR  --> DU APP : BuildAndSendDUConfigUpdate(): Cell Status List building failed");
+         break;
+      }
+
       /*GNB DU ID */
       ieIdx++;
       duCfgUpdate->protocolIEs.list.array[ieIdx]->id = ProtocolIE_ID_id_gNB_DU_ID;
@@ -2606,7 +2857,7 @@ uint8_t BuildAndSendULRRCMessageTransfer(DuUeCb  *ueCb, uint8_t lcId, \
 
    while(true)
    {
-      DU_LOG("\n INFO   -->  F1AP : Building UL RRC Message Transfer Message\n");
+      DU_LOG("\nINFO   -->  F1AP : Building UL RRC Message Transfer Message\n");
 
       DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t));
       if(f1apMsg == NULLP)
@@ -2707,7 +2958,7 @@ uint8_t BuildAndSendULRRCMessageTransfer(DuUeCb  *ueCb, uint8_t lcId, \
       }
       else
       {
-        DU_LOG("\nDEBUG   -->  F1AP : Created APER encoded buffer for ULRRCMessageTransfer\n");
+        DU_LOG("\nDEBUG  -->  F1AP : Created APER encoded buffer for ULRRCMessageTransfer\n");
 #ifdef DEBUG_ASN_PRINT
         for(int i=0; i< encBufSize; i++)
         {
@@ -3036,7 +3287,8 @@ uint8_t BuildRlcConfigAm(AmBearerCfg *amCfg, struct RLC_Config *rlcConfig)
    /* Fill default AM UL configuration if input pointer to DU database is NULL */
    if(amCfg == NULLP)
    {
-      *(rlcConfig->choice.am->ul_AM_RLC.sn_FieldLength) = SN_FIELD_LEN;
+      
+      *(rlcConfig->choice.am->ul_AM_RLC.sn_FieldLength) = SN_FIELD_LEN_12BIT; /*As per Spec 38.331, "Network configures only value size12 in SN-FieldLengthAM for SRB"*/
       rlcConfig->choice.am->ul_AM_RLC.t_PollRetransmit  = T_POLL_RETRANSMIT;
       rlcConfig->choice.am->ul_AM_RLC.pollPDU           = POLL_PDU;
       rlcConfig->choice.am->ul_AM_RLC.pollByte          = POLL_BYTE;
@@ -3063,7 +3315,7 @@ uint8_t BuildRlcConfigAm(AmBearerCfg *amCfg, struct RLC_Config *rlcConfig)
    /* Fill default AM DL configuration if input pointer to DU database is NULL */
    if(amCfg == NULLP)
    {
-      *(rlcConfig->choice.am->dl_AM_RLC.sn_FieldLength) = SN_FIELD_LEN;
+      *(rlcConfig->choice.am->dl_AM_RLC.sn_FieldLength) = SN_FIELD_LEN_12BIT; /*As per Spec 38.331, "Network configures only value size12 in SN-FieldLengthAM for SRB"*/
       rlcConfig->choice.am->dl_AM_RLC.t_Reassembly      = T_REASSEMBLY;
       rlcConfig->choice.am->dl_AM_RLC.t_StatusProhibit  = T_STATUS_PROHIBHIT;
    }
@@ -3377,12 +3629,12 @@ uint8_t BuildRlcBearerToAddModList(DuUeCb *ueCb, struct CellGroupConfigRrc__rlc_
    if(ueCb == NULLP)
       elementCnt = 1;
    else if(ueCb->f1UeDb->actionType == UE_CTXT_CFG_QUERY)
-      elementCnt = ueCb->rlcUeCfg.numLcs;
+      elementCnt = ueCb->duRlcUeCfg.numLcs;
    else
    {
-      for(lcIdx = 0; lcIdx<ueCb->rlcUeCfg.numLcs; lcIdx++)
+      for(lcIdx = 0; lcIdx<ueCb->duRlcUeCfg.numLcs; lcIdx++)
       {
-         if(ueCb->rlcUeCfg.rlcLcCfg[lcIdx].isLcAddModRspSent == false)
+         if(ueCb->duRlcUeCfg.rlcLcCfg[lcIdx].rlcBearerCfg.isLcAddModRspSent == false)
             elementCnt++;
       }
    }
@@ -3453,13 +3705,13 @@ uint8_t BuildRlcBearerToAddModList(DuUeCb *ueCb, struct CellGroupConfigRrc__rlc_
    else
    {
       idx=0;
-      for(lcIdx=0; lcIdx<ueCb->rlcUeCfg.numLcs; lcIdx++)
+      for(lcIdx=0; lcIdx<ueCb->duRlcUeCfg.numLcs; lcIdx++)
       {
-         if((ueCb->f1UeDb->actionType != UE_CTXT_CFG_QUERY) && (ueCb->rlcUeCfg.rlcLcCfg[lcIdx].isLcAddModRspSent == true))
+         if((ueCb->f1UeDb->actionType != UE_CTXT_CFG_QUERY) && (ueCb->duRlcUeCfg.rlcLcCfg[lcIdx].rlcBearerCfg.isLcAddModRspSent == true))
             continue;
 
          /* Fill Logical channel identity */
-         rlcBearerList->list.array[idx]->logicalChannelIdentity = ueCb->rlcUeCfg.rlcLcCfg[lcIdx].lcId;
+         rlcBearerList->list.array[idx]->logicalChannelIdentity = ueCb->duRlcUeCfg.rlcLcCfg[lcIdx].rlcBearerCfg.lcId;
 
          /* Fill Radio Bearer Id and type (DRB/SRB) for this logical channel */
          DU_ALLOC(rlcBearerList->list.array[idx]->servedRadioBearer, sizeof(struct RLC_BearerConfig__servedRadioBearer));
@@ -3469,20 +3721,20 @@ uint8_t BuildRlcBearerToAddModList(DuUeCb *ueCb, struct CellGroupConfigRrc__rlc_
             return RFAILED;
          }
          rlcBearerList->list.array[idx]->servedRadioBearer->present = \
-                                                                      covertRbTypeFromIntEnumToRrcEnum(ueCb->rlcUeCfg.rlcLcCfg[lcIdx].rbType);
+                                                                      covertRbTypeFromIntEnumToRrcEnum(ueCb->duRlcUeCfg.rlcLcCfg[lcIdx].rlcBearerCfg.rbType);
          switch(rlcBearerList->list.array[idx]->servedRadioBearer->present)
          {
             case RLC_BearerConfig__servedRadioBearer_PR_srb_Identity: 
-               rlcBearerList->list.array[idx]->servedRadioBearer->choice.srb_Identity = ueCb->rlcUeCfg.rlcLcCfg[lcIdx].rbId;
+               rlcBearerList->list.array[idx]->servedRadioBearer->choice.srb_Identity = ueCb->duRlcUeCfg.rlcLcCfg[lcIdx].rlcBearerCfg.rbId;
                break;
             case RLC_BearerConfig__servedRadioBearer_PR_drb_Identity:
-               rlcBearerList->list.array[idx]->servedRadioBearer->choice.drb_Identity = ueCb->rlcUeCfg.rlcLcCfg[lcIdx].rbId;
+               rlcBearerList->list.array[idx]->servedRadioBearer->choice.drb_Identity = ueCb->duRlcUeCfg.rlcLcCfg[lcIdx].rlcBearerCfg.rbId;
                break;
             case RLC_BearerConfig__servedRadioBearer_PR_NOTHING:
             default:
                break;
          }
-         ueCb->rlcUeCfg.rlcLcCfg[lcIdx].isLcAddModRspSent = true;
+         ueCb->duRlcUeCfg.rlcLcCfg[lcIdx].rlcBearerCfg.isLcAddModRspSent = true;
 
          rlcBearerList->list.array[idx]->reestablishRLC = NULLP;
 
@@ -3494,7 +3746,7 @@ uint8_t BuildRlcBearerToAddModList(DuUeCb *ueCb, struct CellGroupConfigRrc__rlc_
             DU_LOG("\nERROR  -->  F1AP : Memory allocation failure in BuildRlcBearerToAddModList");
             return RFAILED;
          }
-         if(BuildRlcConfig(&ueCb->rlcUeCfg.rlcLcCfg[lcIdx], rlcBearerList->list.array[idx]->rlc_Config) != ROK)
+         if(BuildRlcConfig(&ueCb->duRlcUeCfg.rlcLcCfg[lcIdx].rlcBearerCfg, rlcBearerList->list.array[idx]->rlc_Config) != ROK)
          {
             DU_LOG("\nERROR  -->  F1AP : BuildRlcConfig failed");
             return RFAILED;
@@ -3510,7 +3762,7 @@ uint8_t BuildRlcBearerToAddModList(DuUeCb *ueCb, struct CellGroupConfigRrc__rlc_
          }
          for(macLcIdx = 0; macLcIdx < ueCb->duMacUeCfg.numLcs; macLcIdx++)
          {
-            if(ueCb->duMacUeCfg.lcCfgList[macLcIdx].lcConfig.lcId == ueCb->rlcUeCfg.rlcLcCfg[lcIdx].lcId)
+            if(ueCb->duMacUeCfg.lcCfgList[macLcIdx].lcConfig.lcId == ueCb->duRlcUeCfg.rlcLcCfg[lcIdx].rlcBearerCfg.lcId)
             {
                if(BuildMacLCConfig(&ueCb->duMacUeCfg.lcCfgList[macLcIdx].lcConfig, rlcBearerList->list.array[idx]->mac_LogicalChannelConfig) != ROK)
                {
@@ -4083,14 +4335,16 @@ elementCnt = pdschCfg->numTimeDomRsrcAlloc;
       for(idx = 0; idx < elementCnt; idx++)
       {
          timeDomAlloc = timeDomAllocList->choice.setup->list.array[idx];
-         DU_ALLOC(timeDomAlloc->k0, sizeof(long));
-         if(!timeDomAlloc->k0)
-         {
-            DU_LOG("\nERROR  -->  F1AP : Memory allocation failed in BuildPdschTimeDomAllocList");
-            return RFAILED;
-         }
          if(pdschCfg->timeDomRsrcAllociList[idx].k0)
+         {
+            DU_ALLOC(timeDomAlloc->k0, sizeof(long));
+            if(!timeDomAlloc->k0)
+            {
+               DU_LOG("\nERROR  -->  F1AP : Memory allocation failed in BuildPdschTimeDomAllocList");
+               return RFAILED;
+            }
             *(timeDomAlloc->k0) = *(pdschCfg->timeDomRsrcAllociList[idx].k0);
+         }
          timeDomAlloc->mappingType = pdschCfg->timeDomRsrcAllociList[idx].mappingType;
          timeDomAlloc->startSymbolAndLength = pdschCfg->timeDomRsrcAllociList[idx].startSymbolAndLength;
       }
@@ -6715,7 +6969,7 @@ uint8_t BuildSpCellConfigCommon(ServingCellConfigCommon_t *spCellConfigCommon)
       convertSsbPeriodicityValueToEnum(duCfgParam.sib1Params.srvCellCfgCommSib.ssbPrdServingCell);
 
    /* DMRS Type A position */
-   spCellConfigCommon->dmrs_TypeA_Position = convertDmrsTypeAPosValueToEnum(duCfgParam.macCellCfg.dmrsTypeAPos);
+   spCellConfigCommon->dmrs_TypeA_Position = convertDmrsTypeAPosValueToEnum(duCfgParam.macCellCfg.ssbCfg.dmrsTypeAPos);
 
    /* SSB subcarrier spacing */
    DU_ALLOC(spCellConfigCommon->ssbSubcarrierSpacing, sizeof(SubcarrierSpacing_t));
@@ -7199,27 +7453,27 @@ uint8_t BuildDrxConfigRrc(DuUeCb *ueCb, struct MAC_CellGroupConfig__drx_ConfigRr
    else
    {
       drxCfg->choice.setup->drx_onDurationTimer.present = DRX_ConfigRrc__drx_onDurationTimer_PR_subMilliSeconds;
-      drxCfg->choice.setup->drx_onDurationTimer.choice.subMilliSeconds = ueCb->macUeCfg.macCellGrpCfg.drxCfg.\
+      drxCfg->choice.setup->drx_onDurationTimer.choice.subMilliSeconds = ueCb->duMacUeCfg.macCellGrpCfg.drxCfg.\
       drxOnDurationTimer.onDurationtimerValue.subMilliSeconds;
    }
-   drxCfg->choice.setup->drx_InactivityTimer = convertDrxInactivityTimerValueToEnum(ueCb->macUeCfg.macCellGrpCfg.drxCfg.drxInactivityTimer);
-   drxCfg->choice.setup->drx_HARQ_RTT_TimerDL = ueCb->macUeCfg.macCellGrpCfg.drxCfg.drxHarqRttTimerDl;
-   drxCfg->choice.setup->drx_HARQ_RTT_TimerUL = ueCb->macUeCfg.macCellGrpCfg.drxCfg.drxHarqRttTimerUl;
-   drxCfg->choice.setup->drx_RetransmissionTimerDL = convertDrxRetransmissionTimerDlValueToEnum(ueCb->macUeCfg.macCellGrpCfg.drxCfg.\
+   drxCfg->choice.setup->drx_InactivityTimer = convertDrxInactivityTimerValueToEnum(ueCb->duMacUeCfg.macCellGrpCfg.drxCfg.drxInactivityTimer);
+   drxCfg->choice.setup->drx_HARQ_RTT_TimerDL = ueCb->duMacUeCfg.macCellGrpCfg.drxCfg.drxHarqRttTimerDl;
+   drxCfg->choice.setup->drx_HARQ_RTT_TimerUL = ueCb->duMacUeCfg.macCellGrpCfg.drxCfg.drxHarqRttTimerUl;
+   drxCfg->choice.setup->drx_RetransmissionTimerDL = convertDrxRetransmissionTimerDlValueToEnum(ueCb->duMacUeCfg.macCellGrpCfg.drxCfg.\
    drxRetransmissionTimerDl);
-   drxCfg->choice.setup->drx_RetransmissionTimerUL = convertDrxRetransmissionTimerUlValueToEnum(ueCb->macUeCfg.macCellGrpCfg.drxCfg.\
+   drxCfg->choice.setup->drx_RetransmissionTimerUL = convertDrxRetransmissionTimerUlValueToEnum(ueCb->duMacUeCfg.macCellGrpCfg.drxCfg.\
    drxRetransmissionTimerUl);
-   drxCfg->choice.setup->drx_SlotOffset = ueCb->macUeCfg.macCellGrpCfg.drxCfg.drxSlotOffset;
-   fillLongCycleOffsetValFromDuCb(ueCb->macUeCfg.macCellGrpCfg.drxCfg.drxLongCycleStartOffset, &drxCfg->choice.setup->drx_LongCycleStartOffset);
+   drxCfg->choice.setup->drx_SlotOffset = ueCb->duMacUeCfg.macCellGrpCfg.drxCfg.drxSlotOffset;
+   fillLongCycleOffsetValFromDuCb(ueCb->duMacUeCfg.macCellGrpCfg.drxCfg.drxLongCycleStartOffset, &drxCfg->choice.setup->drx_LongCycleStartOffset);
    
-   if(ueCb->macUeCfg.macCellGrpCfg.drxCfg.shortDrxPres)
+   if(ueCb->duMacUeCfg.macCellGrpCfg.drxCfg.shortDrxPres)
    {
       DU_ALLOC(drxCfg->choice.setup->shortDRX, sizeof(struct DRX_ConfigRrc__shortDRX));
       if(drxCfg->choice.setup->shortDRX)
       {
-         drxCfg->choice.setup->shortDRX->drx_ShortCycle = convertShortDrxCycleLengthValueToEnum(ueCb->macUeCfg.macCellGrpCfg.drxCfg.\
+         drxCfg->choice.setup->shortDRX->drx_ShortCycle = convertShortDrxCycleLengthValueToEnum(ueCb->duMacUeCfg.macCellGrpCfg.drxCfg.\
          shortDrx.drxShortCycle);
-         drxCfg->choice.setup->shortDRX->drx_ShortCycleTimer = ueCb->macUeCfg.macCellGrpCfg.drxCfg.shortDrx.drxShortCycleTimer;
+         drxCfg->choice.setup->shortDRX->drx_ShortCycleTimer = ueCb->duMacUeCfg.macCellGrpCfg.drxCfg.shortDrx.drxShortCycleTimer;
       }
       else
       {
@@ -9736,7 +9990,7 @@ void freeDuUeCfg(UeCtxtActionType actionType, DuUeCfg *ueCfg)
    {
       for(lcIdx = 0; lcIdx < ueCfg->numRlcLcs; lcIdx++)
       {
-         freeRlcLcCfg(&ueCfg->rlcLcCfg[lcIdx]);
+         freeRlcLcCfg(&ueCfg->rlcLcCfg[lcIdx].rlcBearerCfg);
       }
    }
 
@@ -10082,30 +10336,30 @@ uint8_t extractDrbSnssaiCfg(SNSSAI_t *RecvSnssai, Snssai **snssaiToBeShared)
  * ****************************************************************/
 
 void procRlcLcCfg(uint8_t rbId, uint8_t lcId, uint8_t rbType, uint8_t rlcMode,\
-   uint8_t configType, RLC_Config_t *f1RlcCfg, RlcBearerCfg *lcCfg, QoSInformation_t *qoSInformation)
+   uint8_t configType, RLC_Config_t *f1RlcCfg, DuRlcBearerCfg *lcCfg, QoSInformation_t *qoSInformation)
 {
    DRB_Information_t *drbInfo;
 
-   lcCfg->rbId   = rbId;
+   lcCfg->rlcBearerCfg.rbId   = rbId;
    lcCfg->configType = configType;
 
    if(rbType == RB_TYPE_SRB)
    {
-      lcCfg->rbType = RB_TYPE_SRB;
-      lcCfg->lcId   = rbId;
-      lcCfg->lcType = LCH_DCCH;
-      lcCfg->rlcMode = RLC_AM;
+      lcCfg->rlcBearerCfg.rbType = RB_TYPE_SRB;
+      lcCfg->rlcBearerCfg.lcId   = rbId;
+      lcCfg->rlcBearerCfg.lcType = LCH_DCCH;
+      lcCfg->rlcBearerCfg.rlcMode = RLC_AM;
    }
    else if(rbType == RB_TYPE_DRB)
    {
-      lcCfg->rbType = RB_TYPE_DRB;
-      lcCfg->lcId   = lcId;
-      lcCfg->lcType = LCH_DTCH;
-      lcCfg->rlcMode = rlcMode;
+      lcCfg->rlcBearerCfg.rbType = RB_TYPE_DRB;
+      lcCfg->rlcBearerCfg.lcId   = lcId;
+      lcCfg->rlcBearerCfg.lcType = LCH_DTCH;
+      lcCfg->rlcBearerCfg.rlcMode = rlcMode;
    }
    if(f1RlcCfg) /* rlc mode config recived */
    {
-      extractRlcModeCfg(lcCfg->rlcMode, lcCfg, f1RlcCfg);
+      extractRlcModeCfg(lcCfg->rlcBearerCfg.rlcMode, &lcCfg->rlcBearerCfg, f1RlcCfg);
    }
    if(qoSInformation != NULLP)
    {
@@ -10115,7 +10369,7 @@ void procRlcLcCfg(uint8_t rbId, uint8_t lcId, uint8_t rbType, uint8_t rlcMode,\
                QoSInformation_ExtIEs__value_PR_DRB_Information)
          {
             drbInfo = &qoSInformation->choice.choice_extension->value.choice.DRB_Information; 
-            if(extractDrbSnssaiCfg(&drbInfo->sNSSAI, &lcCfg->snssai) != ROK)
+            if(extractDrbSnssaiCfg(&drbInfo->sNSSAI, &lcCfg->rlcBearerCfg.snssai) != ROK)
             {
                DU_LOG("\nERROR  -->  DUAPP: Unable to extract Snssai information at procRlcLcCfg()");
                return;
@@ -10556,7 +10810,7 @@ uint8_t extractRlcCfgToAddMod(struct CellGroupConfigRrc__rlc_BearerToAddModList
      
      /* Filling RLC/MAC Config*/
      memset(&ueCfgDb->macLcCfg[idx], 0, sizeof(DuLcCfg));
-     memset(&ueCfgDb->rlcLcCfg[idx], 0, sizeof(RlcBearerCfg));
+     memset(&ueCfgDb->rlcLcCfg[idx], 0, sizeof(DuRlcBearerCfg));
      procRlcLcCfg(rbId, lcId, rbType, rlcMode, CONFIG_UNKNOWN, f1RlcCfg, &(ueCfgDb->rlcLcCfg[idx]), NULLP);
      if(procMacLcCfg(lcId, rbType, CONFIG_UNKNOWN, NULL, NULL, NULL, macUlLcCfg, &ueCfgDb->macLcCfg[idx], NULL) != ROK)
      {
@@ -12964,7 +13218,7 @@ uint8_t extractCuToDuRrcInfoExt(ProtocolExtensionContainer_4624P16_t *protocolIe
  * @return void
  *
  * ****************************************************************/
-uint8_t procSrbListToSetup(SRBs_ToBeSetup_Item_t * srbItem, DuLcCfg *duMacLcToAdd, RlcBearerCfg *rlcLcToAdd)
+uint8_t procSrbListToSetup(SRBs_ToBeSetup_Item_t * srbItem, DuLcCfg *duMacLcToAdd, DuRlcBearerCfg *rlcLcToAdd)
 {
 
    /* Filling RLC INFO */
@@ -13004,7 +13258,7 @@ uint8_t extractSrbListToSetup(SRBs_ToBeSetup_List_t *srbCfg, DuUeCfg *ueCfgDb)
    uint8_t ret = ROK, srbIdx = 0, rlcLcIdx = 0;
    SRBs_ToBeSetup_Item_t *srbItem = NULLP;
    DuLcCfg *macLcCtxt = NULLP;
-   RlcBearerCfg *rlcLcCtxt = NULLP;
+   DuRlcBearerCfg *rlcLcCtxt = NULLP;
 
    if(srbCfg)
    {
@@ -13029,7 +13283,7 @@ uint8_t extractSrbListToSetup(SRBs_ToBeSetup_List_t *srbCfg, DuUeCfg *ueCfgDb)
 
          for(rlcLcIdx = 0; rlcLcIdx < ueCfgDb->numMacLcs; rlcLcIdx++)
          {
-            if(ueCfgDb->rlcLcCfg[rlcLcIdx].rbId == srbItem->sRBID && ueCfgDb->rlcLcCfg[rlcLcIdx].rbType == RB_TYPE_SRB)
+            if(ueCfgDb->rlcLcCfg[rlcLcIdx].rlcBearerCfg.rbId == srbItem->sRBID && ueCfgDb->rlcLcCfg[rlcLcIdx].rlcBearerCfg.rbType == RB_TYPE_SRB)
             {
                macLcCtxt = &ueCfgDb->macLcCfg[rlcLcIdx];
                rlcLcCtxt = &ueCfgDb->rlcLcCfg[rlcLcIdx];
@@ -13044,7 +13298,7 @@ uint8_t extractSrbListToSetup(SRBs_ToBeSetup_List_t *srbCfg, DuUeCfg *ueCfgDb)
          }
          if(!rlcLcCtxt)
          {
-            memset(&ueCfgDb->rlcLcCfg[ueCfgDb->numRlcLcs], 0, sizeof(RlcBearerCfg));
+            memset(&ueCfgDb->rlcLcCfg[ueCfgDb->numRlcLcs], 0, sizeof(DuRlcBearerCfg));
             rlcLcCtxt = &ueCfgDb->rlcLcCfg[ueCfgDb->numRlcLcs];
             ueCfgDb->numRlcLcs++;
          }
@@ -13079,13 +13333,13 @@ uint8_t extractSrbListToSetup(SRBs_ToBeSetup_List_t *srbCfg, DuUeCfg *ueCfgDb)
  *
  * @params[in] DRBs_ToBeSetup_Item_t , DRBs_ToBeSetupMod_Item_t,
  *             DRBs_ToBeModified_Item_t , lcId, DuLcCfg pointer,
- *             RlcBearerCfg , UpTnlCfg, RlcUeCfg
+ *             RlcBearerCfg , UpTnlCfg, DuRlcUeCfg
  * @return void
  *
  * ****************************************************************/
 
 uint8_t procDrbListToSetupMod(uint8_t lcId, DRBs_ToBeSetup_Item_t *drbItem,\
-DRBs_ToBeSetupMod_Item_t *drbSetupModItem, DRBs_ToBeModified_Item_t *drbModItem, DuLcCfg *macLcToAdd, RlcBearerCfg *rlcLcToAdd, UpTnlCfg *upTnlInfo, RlcUeCfg *storedRlcUeCfg)
+DRBs_ToBeSetupMod_Item_t *drbSetupModItem, DRBs_ToBeModified_Item_t *drbModItem, DuLcCfg *macLcToAdd, DuRlcBearerCfg *rlcLcToAdd, UpTnlCfg *upTnlInfo, DuRlcUeCfg *storedRlcUeCfg)
 {
    uint8_t cfgIdx = 0;
    RlcMode rlcModeInfo;
@@ -13122,9 +13376,9 @@ DRBs_ToBeSetupMod_Item_t *drbSetupModItem, DRBs_ToBeModified_Item_t *drbModItem,
       {
          for(cfgIdx = 0; cfgIdx < storedRlcUeCfg->numLcs; cfgIdx++)
          {
-            if(storedRlcUeCfg->rlcLcCfg[cfgIdx].lcId == lcId)
+            if(storedRlcUeCfg->rlcLcCfg[cfgIdx].rlcBearerCfg.lcId == lcId)
             {
-               rlcModeInfo = storedRlcUeCfg->rlcLcCfg[cfgIdx].rlcMode;
+               rlcModeInfo = storedRlcUeCfg->rlcLcCfg[cfgIdx].rlcBearerCfg.rlcMode;
                break;
             }
          }
@@ -13158,7 +13412,7 @@ DRBs_ToBeSetupMod_Item_t *drbSetupModItem, DRBs_ToBeModified_Item_t *drbModItem,
  * ****************************************************************/
 
 uint8_t extractDrbListToSetupMod(DRBs_ToBeSetup_List_t *drbCfg, DRBs_ToBeSetupMod_List_t *drbSetupModCfg,\
- DRBs_ToBeModified_List_t *drbModCfg, uint8_t drbCount, DuUeCfg *ueCfgDb, uint32_t *drbBitMap, RlcUeCfg *rlcUeCfg)
+ DRBs_ToBeModified_List_t *drbModCfg, uint8_t drbCount, DuUeCfg *ueCfgDb, uint32_t *drbBitMap, DuRlcUeCfg *rlcUeCfg)
 {
    uint8_t ret = ROK;
    uint8_t drbIdx = 0, rlcLcIdx = 0;
@@ -13167,7 +13421,7 @@ uint8_t extractDrbListToSetupMod(DRBs_ToBeSetup_List_t *drbCfg, DRBs_ToBeSetupMo
    DRBs_ToBeSetupMod_ItemIEs_t *drbSetupModItem = NULLP;
    DRBs_ToBeModified_ItemIEs_t *drbModItem = NULLP;
    DuLcCfg *macLcCtxt = NULLP;
-   RlcBearerCfg *rlcLcCtxt = NULLP;
+   DuRlcBearerCfg *rlcLcCtxt = NULLP;
 
    ret = ROK;
    if(drbCount > 0)
@@ -13205,7 +13459,8 @@ uint8_t extractDrbListToSetupMod(DRBs_ToBeSetup_List_t *drbCfg, DRBs_ToBeSetupMo
 
          for(rlcLcIdx = 0; rlcLcIdx < ueCfgDb->numRlcLcs; rlcLcIdx++)
          {
-            if(ueCfgDb->rlcLcCfg[rlcLcIdx].rbId == drbId && ueCfgDb->rlcLcCfg[rlcLcIdx].rbType == RB_TYPE_DRB)
+            if(ueCfgDb->rlcLcCfg[rlcLcIdx].rlcBearerCfg.rbId == drbId && \
+                   ueCfgDb->rlcLcCfg[rlcLcIdx].rlcBearerCfg.rbType == RB_TYPE_DRB)
             {
                macLcCtxt = &ueCfgDb->macLcCfg[rlcLcIdx];
                rlcLcCtxt = &ueCfgDb->rlcLcCfg[rlcLcIdx];
@@ -13307,14 +13562,14 @@ uint8_t extractDrbListToSetupMod(DRBs_ToBeSetup_List_t *drbCfg, DRBs_ToBeSetupMo
  *
  * ****************************************************************/
 
-uint8_t extractDrbListToRelease(uint8_t ueId, DRBs_ToBeReleased_List_t *drbToRel, uint8_t drbCount, DuUeCfg *ueCfgDb, RlcUeCfg *rlcUeCfg)
+uint8_t extractDrbListToRelease(uint8_t ueId, DRBs_ToBeReleased_List_t *drbToRel, uint8_t drbCount, DuUeCfg *ueCfgDb, DuRlcUeCfg *rlcUeCfg)
 {
    uint8_t ret = ROK, teIdx = 0;
    uint8_t drbIdx = 0, rlcLcIdx = 0;
    uint8_t drbId = 0, lcId = 0;
    DRBs_ToBeReleased_ItemIEs_t *drbRelItem = NULLP;
    DuLcCfg *macLcCtxt = NULLP;
-   RlcBearerCfg *rlcLcCtxt = NULLP;
+   DuRlcBearerCfg *rlcLcCtxt = NULLP;
 
    ret = ROK;
    if(drbCount > 0)
@@ -13337,7 +13592,7 @@ uint8_t extractDrbListToRelease(uint8_t ueId, DRBs_ToBeReleased_List_t *drbToRel
 
          for(rlcLcIdx = 0; rlcLcIdx < ueCfgDb->numRlcLcs; rlcLcIdx++)
          {
-            if(ueCfgDb->rlcLcCfg[rlcLcIdx].rbId == drbId && ueCfgDb->rlcLcCfg[rlcLcIdx].rbType == RB_TYPE_DRB)
+            if(ueCfgDb->rlcLcCfg[rlcLcIdx].rlcBearerCfg.rbId == drbId && ueCfgDb->rlcLcCfg[rlcLcIdx].rlcBearerCfg.rbType == RB_TYPE_DRB)
             {
                macLcCtxt = &ueCfgDb->macLcCfg[rlcLcIdx];
                rlcLcCtxt = &ueCfgDb->rlcLcCfg[rlcLcIdx];
@@ -13353,7 +13608,7 @@ uint8_t extractDrbListToRelease(uint8_t ueId, DRBs_ToBeReleased_List_t *drbToRel
          }
          if(!rlcLcCtxt)
          {
-            memset(&ueCfgDb->rlcLcCfg[ueCfgDb->numRlcLcs], 0, sizeof(RlcBearerCfg));
+            memset(&ueCfgDb->rlcLcCfg[ueCfgDb->numRlcLcs], 0, sizeof(DuRlcBearerCfg));
             rlcLcCtxt = &ueCfgDb->rlcLcCfg[ueCfgDb->numRlcLcs];
             ueCfgDb->numRlcLcs++;
          }
@@ -13365,7 +13620,7 @@ uint8_t extractDrbListToRelease(uint8_t ueId, DRBs_ToBeReleased_List_t *drbToRel
          } 
 
          /* Filling RLC INFO */
-         procRlcLcCfg(drbId, lcId, RB_TYPE_DRB, rlcLcCtxt->rlcMode, CONFIG_DEL, NULL, rlcLcCtxt, NULLP);
+         procRlcLcCfg(drbId, lcId, RB_TYPE_DRB, rlcLcCtxt->rlcBearerCfg.rlcMode, CONFIG_DEL, NULL, rlcLcCtxt, NULLP);
          /* Filling MAC INFO */
          if(procMacLcCfg(lcId, RB_TYPE_DRB, CONFIG_DEL, NULL, NULL, NULL, NULL, macLcCtxt, NULLP) != ROK)
          { 
@@ -15288,9 +15543,9 @@ uint8_t procF1SetupRsp(F1AP_PDU_t *f1apMsg, MsgLen recvBufLen, char *recvBuf)
            DU_LOG("\nERROR  -->  DU_APP : Invalid IE received in F1SetupRsp:%ld",
                  f1SetRspMsg->protocolIEs.list.array[idx]->id);
       }
-      duProcF1SetupRsp();
    }
    
+   duProcF1SetupRsp();
    freeAperDecodeF1SetupRsp(f1SetRspMsg);
 
    duCb.f1SetupReqAndRspMsg.f1MsgRspBufSize = recvBufLen;
@@ -15633,35 +15888,35 @@ uint8_t procF1DlRrcMsgTrans(F1AP_PDU_t *f1apMsg)
            {
               if(f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size > 0)
               {
-                 dlMsg.rrcMsgSize = f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size;
-                 DU_ALLOC_SHRABL_BUF(dlMsg.rrcMsgPdu, dlMsg.rrcMsgSize);
-                 if(dlMsg.rrcMsgPdu)
-                 {
-                    memcpy(dlMsg.rrcMsgPdu, f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.buf,\
-                       dlMsg.rrcMsgSize);
-                 }
-                 else
-                 {
-                    DU_LOG("\nERROR  -->  DU APP : Memory alloc Failed at RRC Container at procF1DlRrcMsgTrans()");
-                     return RFAILED;
-                 }
-              }
-              else
-              {
-                 DU_LOG("\nERROR  -->  DU_APP : RRC Container Size is invalid:%ld",\
-                 f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size);
-                 return RFAILED;
-              }
-              break;
-           }
-         case ProtocolIE_ID_id_RRCDeliveryStatusRequest:
-           {
-              dlMsg.deliveryStatRpt = true;
-              break;
-           }
-        default:
-           DU_LOG("\nERROR  -->  DU_APP : Invalid IE received in DL RRC Msg Transfer:%ld",
-                 f1DlRrcMsg->protocolIEs.list.array[idx]->id);
+             dlMsg.rrcMsgSize = f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size;
+             DU_ALLOC_SHRABL_BUF(dlMsg.rrcMsgPdu, dlMsg.rrcMsgSize);
+             if(dlMsg.rrcMsgPdu)
+             {
+                memcpy(dlMsg.rrcMsgPdu, f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.buf,\
+                      dlMsg.rrcMsgSize);
+             }
+             else
+             {
+                DU_LOG("\nERROR  -->  DU APP : Memory alloc Failed at RRC Container at procF1DlRrcMsgTrans()");
+                return RFAILED;
+             }
+          }
+          else
+          {
+             DU_LOG("\nERROR  -->  DU_APP : RRC Container Size is invalid:%ld",\
+                   f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size);
+             return RFAILED;
+          }
+          break;
+       }
+    case ProtocolIE_ID_id_RRCDeliveryStatusRequest:
+       {
+          dlMsg.deliveryStatRpt = true;
+          break;
+       }
+    default:
+       DU_LOG("\nERROR  -->  DU_APP : Invalid IE received in DL RRC Msg Transfer:%ld",
+             f1DlRrcMsg->protocolIEs.list.array[idx]->id);
       }
    }
 
@@ -15717,8 +15972,8 @@ uint8_t BuildSrbSetupModList(SRBs_SetupMod_List_t *srbList, DuUeCfg *ueCfg)
       srbItemIe->id = ProtocolIE_ID_id_SRBs_SetupMod_Item;
       srbItemIe->criticality = Criticality_reject;
       srbItemIe->value.present = SRBs_SetupMod_ItemIEs__value_PR_SRBs_SetupMod_Item;
-      srbItemIe->value.choice.SRBs_SetupMod_Item.sRBID = ueCfg->rlcLcCfg[srbIdx].rbId;
-      srbItemIe->value.choice.SRBs_SetupMod_Item.lCID = ueCfg->rlcLcCfg[srbIdx].lcId;
+      srbItemIe->value.choice.SRBs_SetupMod_Item.sRBID = ueCfg->rlcLcCfg[srbIdx].rlcBearerCfg.rbId;
+      srbItemIe->value.choice.SRBs_SetupMod_Item.lCID = ueCfg->rlcLcCfg[srbIdx].rlcBearerCfg.lcId;
    }
    return ROK;
 }
@@ -15960,6 +16215,13 @@ void FreeUeContextModResp(F1AP_PDU_t *f1apMsg)
                         break;
                      case ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID:
                         break;
+                     case ProtocolIE_ID_id_DUtoCURRCInformation:
+                        {
+                           DU_FREE(ueContextModifyRes->protocolIEs.list.array[ieIdx]->value.choice.DUtoCURRCInformation.\
+                              cellGroupConfig.buf, ueContextModifyRes->protocolIEs.list.array[ieIdx]->value.choice.\
+                              DUtoCURRCInformation.cellGroupConfig.size);
+                           break;
+                        }
                      case ProtocolIE_ID_id_DRBs_SetupMod_List:
                         {
                             FreeDrbSetupModList(&(ueContextModifyRes->protocolIEs.list.array[ieIdx]->\
@@ -16150,12 +16412,12 @@ uint8_t BuildAndSendUeContextModRsp(DuUeCb *ueCb)
          ueContextModifyRes->protocolIEs.list.array[ieIdx]->criticality = Criticality_reject;
          ueContextModifyRes->protocolIEs.list.array[ieIdx]->value.present = \
                                                                             UEContextModificationResponseIEs__value_PR_SRBs_SetupMod_List;
-         for(rbIdx = 0; rbIdx < ueCb->rlcUeCfg.numLcs; rbIdx++)
+         for(rbIdx = 0; rbIdx < ueCb->duRlcUeCfg.numLcs; rbIdx++)
          {
-            if(ueCb->rlcUeCfg.rlcLcCfg[rbIdx].rbType == RB_TYPE_SRB)
+            if(ueCb->duRlcUeCfg.rlcLcCfg[rbIdx].rlcBearerCfg.rbType == RB_TYPE_SRB)
             {
-               memcpy(&ueCb->f1UeDb->duUeCfg.rlcLcCfg[ueCb->f1UeDb->duUeCfg.numRlcLcs++], &ueCb->rlcUeCfg.rlcLcCfg[rbIdx],\
-                     sizeof(RlcBearerCfg));
+               memcpy(&ueCb->f1UeDb->duUeCfg.rlcLcCfg[ueCb->f1UeDb->duUeCfg.numRlcLcs++], &ueCb->duRlcUeCfg.rlcLcCfg[rbIdx],\
+                     sizeof(DuRlcBearerCfg));
             }
          }
          ret = BuildSrbSetupModList(&ueContextModifyRes->protocolIEs.list.array[ieIdx]->value.choice.SRBs_SetupMod_List, \
@@ -16207,6 +16469,7 @@ uint8_t BuildAndSendUeContextModRsp(DuUeCb *ueCb)
       ret = ROK;
       break;
    }
+
    FreeUeContextModResp(f1apMsg);
    return ret;
 }
@@ -16756,7 +17019,7 @@ uint8_t procF1UeContextModificationReq(F1AP_PDU_t *f1apMsg)
                      drbModifiedCfg = &ueContextModifyReq->protocolIEs.list.array[ieIdx]->value.\
                                       choice.DRBs_ToBeModified_List;
                      if(extractDrbListToSetupMod(NULL, NULL, drbModifiedCfg, drbModifiedCfg->list.count,\
-                              &duUeCb->f1UeDb->duUeCfg, &duUeCb->drbBitMap, &duUeCb->rlcUeCfg))
+                              &duUeCb->f1UeDb->duUeCfg, &duUeCb->drbBitMap, &duUeCb->duRlcUeCfg))
                      {
                         DU_LOG("\nERROR  -->  DU APP : Failed at extractDrbListToSetupMod() for DrbModifiedList");
                         ret = RFAILED;
@@ -16770,7 +17033,7 @@ uint8_t procF1UeContextModificationReq(F1AP_PDU_t *f1apMsg)
                      drbToRelease = &ueContextModifyReq->protocolIEs.list.array[ieIdx]->value.\
                                       choice.DRBs_ToBeReleased_List;
                      if(extractDrbListToRelease(gnbDuUeF1apId, drbToRelease, drbToRelease->list.count,\
-                              &duUeCb->f1UeDb->duUeCfg, &duUeCb->rlcUeCfg))
+                              &duUeCb->f1UeDb->duUeCfg, &duUeCb->duRlcUeCfg))
                      {
                         DU_LOG("\nERROR  -->  DU APP : Failed at extractDrbListToSetupMod() for DrbModifiedList");
                         ret = RFAILED;