X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_f1ap_msg_hdl.c;h=381ddca5d69f988db2cf63c121a9562e110979a8;hb=261d72913c4a54d7e9a387821412ec28b30b813a;hp=878a6dd775f90d60a0f300eb5feb2a59dd21bf2b;hpb=8c5cacd79baa6c19e371e2090b6639e13395f178;p=o-du%2Fl2.git diff --git a/src/du_app/du_f1ap_msg_hdl.c b/src/du_app/du_f1ap_msg_hdl.c index 878a6dd77..381ddca5d 100644 --- a/src/du_app/du_f1ap_msg_hdl.c +++ b/src/du_app/du_f1ap_msg_hdl.c @@ -23,7 +23,7 @@ #include "du_cell_mgr.h" #include "du_f1ap_msg_hdl.h" #include "GNB-DU-System-Information.h" - +static S16 BuildULTnlInforet=RFAILED; extern char encBuf[ENC_BUF_MAX_LEN]; extern DuCfgParams duCfgParam; S16 sctpSend(Buffer *mBuf, U8 itfType); @@ -135,9 +135,13 @@ S16 BuildNrcgi(NRCGI_t *nrcgi) /* Allocate Buffer Memory */ nrcgi->pLMN_Identity.size = PLMN_SIZE * sizeof(U8); DU_ALLOC(nrcgi->pLMN_Identity.buf, nrcgi->pLMN_Identity.size); - ret = buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ - &nrcgi->pLMN_Identity); // Building PLMN function - if(ret != ROK) + if(nrcgi->pLMN_Identity.buf == NULLP) + { + return RFAILED; + } + ret = buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ + &nrcgi->pLMN_Identity); // Building PLMN function + if(ret != ROK) { return RFAILED; } @@ -1121,1415 +1125,685 @@ S16 BuildAndSendF1SetupReq() * ****************************************************************/ S16 BuildAndSendDUConfigUpdate() { - U8 idx,idy; - U8 elementCnt,modifyCnt,servPlmnCnt,extensionCnt; + U8 idx; + U8 idy; + U8 idx1; + U8 idy1; + U8 idy2; + U8 elementCnt; + U8 modifyCnt; + U8 servPlmnCnt; + U8 extensionCnt; asn_enc_rval_t encRetVal; /* Encoder return value */ F1AP_PDU_t *f1apDuCfg = NULL; GNBDUConfigurationUpdate_t *duCfgUpdate; Served_Cells_To_Modify_List_t *cellsToModify; Served_Cells_To_Modify_Item_t *modifyItem; - DU_LOG("\nF1AP : Building DU config update\n"); - - /* Allocate the memory for F1DuCfg */ - DU_ALLOC(f1apDuCfg, (Size)sizeof(F1AP_PDU_t)); - if(f1apDuCfg == NULLP) - { - DU_LOG("\nF1AP : Memory allocation for F1AP-PDU failed"); - return RFAILED; - } - - f1apDuCfg->present = F1AP_PDU_PR_initiatingMessage; - DU_ALLOC(f1apDuCfg->choice.initiatingMessage, sizeof(InitiatingMessage_t)); - if(f1apDuCfg->choice.initiatingMessage == NULLP) - { - DU_LOG("\nF1AP : Memory allocation for F1AP-PDU failed"); - DU_FREE(f1apDuCfg, (Size)sizeof(F1AP_PDU_t)); - return RFAILED; - } - - f1apDuCfg->choice.initiatingMessage->procedureCode = \ - ProcedureCode_id_gNBDUConfigurationUpdate; - f1apDuCfg->choice.initiatingMessage->criticality = Criticality_reject; - f1apDuCfg->choice.initiatingMessage->value.present = \ - InitiatingMessage__value_PR_GNBDUConfigurationUpdate; - duCfgUpdate = &f1apDuCfg->choice.initiatingMessage->value.\ - choice.GNBDUConfigurationUpdate; - - elementCnt = 3; - duCfgUpdate->protocolIEs.list.count = elementCnt; - duCfgUpdate->protocolIEs.list.size = \ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *); - - /* Initialize the F1Setup members */ - DU_ALLOC(duCfgUpdate->protocolIEs.list.array,\ - elementCnt*sizeof(GNBDUConfigurationUpdateIEs_t *)); - if(duCfgUpdate->protocolIEs.list.array == NULLP) - { - DU_LOG("F1AP : Memory allocation for F1RequestIEs failed"); - DU_FREE(f1apDuCfg->choice.initiatingMessage, sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - - for(idx=0;idxprotocolIEs.list.array[idx], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - if(duCfgUpdate->protocolIEs.list.array[idx] == NULLP) - { - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - } - - /*TransactionID*/ - idx = 0; - duCfgUpdate->protocolIEs.list.array[idx]->id = \ - ProtocolIE_ID_id_TransactionID; - duCfgUpdate->protocolIEs.list.array[idx]->criticality = Criticality_reject; - duCfgUpdate->protocolIEs.list.array[idx]->value.present = \ - GNBDUConfigurationUpdateIEs__value_PR_TransactionID; - duCfgUpdate->protocolIEs.list.array[idx]->value.choice.TransactionID = \ - TRANS_ID; -#if 1 - /*Served Cell to Modify */ - idx++; - duCfgUpdate->protocolIEs.list.array[idx]->id = \ - ProtocolIE_ID_id_Served_Cells_To_Modify_List; - duCfgUpdate->protocolIEs.list.array[idx]->criticality = Criticality_reject; - duCfgUpdate->protocolIEs.list.array[idx]->value.present = \ - GNBDUConfigurationUpdateIEs__value_PR_Served_Cells_To_Modify_List; - cellsToModify = &duCfgUpdate->protocolIEs.list.array[1]->value.choice.\ - Served_Cells_To_Modify_List; - modifyCnt = 1; - cellsToModify->list.count = modifyCnt; - cellsToModify->list.size = \ - modifyCnt*sizeof(Served_Cells_To_Modify_ItemIEs_t *); - DU_ALLOC(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - if(cellsToModify->list.array == NULLP) - { - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - - } - for(idy=0; idylist.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - if(cellsToModify->list.array[idy] == NULLP) - { - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - } - cellsToModify->list.array[0]->id = \ - ProtocolIE_ID_id_Served_Cells_To_Modify_Item; - cellsToModify->list.array[0]->criticality = Criticality_reject; - cellsToModify->list.array[0]->value.present = \ - Served_Cells_To_Modify_ItemIEs__value_PR_Served_Cells_To_Modify_Item; - modifyItem=&cellsToModify->list.array[0]->value.choice.\ - Served_Cells_To_Modify_Item; - - /*pLMN_Identity*/ - modifyItem->oldNRCGI.pLMN_Identity.size = 3; - DU_ALLOC(modifyItem->oldNRCGI.pLMN_Identity.buf, 3*sizeof(uint8_t)); - if(modifyItem->oldNRCGI.pLMN_Identity.buf == NULLP) - { - for(idy=0; idylist.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - } - buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ - &modifyItem->oldNRCGI.pLMN_Identity); - /*nRCellIdentity*/ - modifyItem->oldNRCGI.nRCellIdentity.size = 5; - DU_ALLOC(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - if(modifyItem->oldNRCGI.nRCellIdentity.buf == NULLP) - { - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - for (int tmp = 0 ; tmp < modifyItem->oldNRCGI.nRCellIdentity.size-1 ; tmp++) - { - modifyItem->oldNRCGI.nRCellIdentity.buf[tmp] = 0; - } - modifyItem->oldNRCGI.nRCellIdentity.buf[4] = 16; - modifyItem->oldNRCGI.nRCellIdentity.bits_unused = 4; - /*pLMN_Identity*/ - /*nRCGI*/ - modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.size = 3; - DU_ALLOC(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - if(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf == NULLP) - { - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ - &modifyItem->served_Cell_Information.nRCGI.pLMN_Identity); - modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.size = 5; - DU_ALLOC(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - if(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - for (int tmp = 0 ; tmp < modifyItem->served_Cell_Information.\ - nRCGI.nRCellIdentity.size-1 ; tmp++) - { - modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf[tmp] = 0; - } - modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf[4] = 16; - modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.bits_unused = 4; - - /*nRPCI*/ - modifyItem->served_Cell_Information.nRPCI = \ - duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrPci; - - /*servedPLMNs*/ - servPlmnCnt = 1; - modifyItem->served_Cell_Information.servedPLMNs.list.count = servPlmnCnt; - modifyItem->served_Cell_Information.servedPLMNs.list.size = \ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *); - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idy] == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - } - modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.size = 3; - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf == NULLP) - { - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.plmn[0],\ - &modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->pLMN_Identity); - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - extensionCnt=1; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.count = extensionCnt; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.size = extensionCnt * \ - sizeof(ServedPLMNs_ItemExtIEs_t *); - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy] == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - } - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->id = ProtocolIE_ID_id_TAISliceSupportList; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->criticality = Criticality_ignore; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.present = \ - ServedPLMNs_ItemExtIEs__extensionValue_PR_SliceSupportList; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.count = 1; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.size = sizeof(SliceSupportItem_t *); - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array,sizeof( SliceSupportItem_t *)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array == NULLP) - { - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0],sizeof( SliceSupportItem_t)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0] == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array,sizeof( SliceSupportItem_t *)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.size = sizeof(uint8_t); - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf,sizeof(uint8_t)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0],sizeof( SliceSupportItem_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array,sizeof( SliceSupportItem_t *)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue. choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf[0] = 3; - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf,sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0],sizeof( SliceSupportItem_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array,sizeof( SliceSupportItem_t *)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->size = 3*sizeof(uint8_t); - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf,3*sizeof(uint8_t)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf,sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0],sizeof( SliceSupportItem_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array,sizeof( SliceSupportItem_t *)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf[0] = 3; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf[1] = 6; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf[2] = 9; + bool checkvar=false; + U8 i; - /*nR Mode Info with FDD*/ - modifyItem->served_Cell_Information.nR_Mode_Info.present = \ - NR_Mode_Info_PR_fDD; - DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD,\ - sizeof(FDD_Info_t)); - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf,3*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf,sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0],sizeof( SliceSupportItem_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array,sizeof( SliceSupportItem_t *)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.ulNrFreqInfo.nrArfcn; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.count = 1; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.size = \ - sizeof(FreqBandNrItem_t *); - DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.\ - array,sizeof(FreqBandNrItem_t *)); - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.array == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD,\ - sizeof(FDD_Info_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf,3*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf,sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0],sizeof( SliceSupportItem_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array,sizeof( SliceSupportItem_t *)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,\ - sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.\ - array[0],sizeof(FreqBandNrItem_t)); - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.\ - array[0] == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.\ - array,sizeof(FreqBandNrItem_t *)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD,\ - sizeof(FDD_Info_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf,3*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf,sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0],sizeof( SliceSupportItem_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array,sizeof( SliceSupportItem_t *)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,\ - sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ - freqBandListNr.list.array[0]->freqBandIndicatorNr = \ - duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.\ - freqBand[0].nrFreqBand; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ - freqBandListNr.list.array[0]->supportedSULBandList.list.count=0; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.\ - dlNrFreqInfo.nrArfcn; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.count = 1; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.size = sizeof(FreqBandNrItem_t *); - DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_NRFreqInfo.freqBandListNr.list.array,\ - sizeof(FreqBandNrItem_t *)); - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + while(1) + { + DU_LOG("\nF1AP : Building DU config update\n"); + /* Allocate the memory for F1DuCfg */ + DU_ALLOC(f1apDuCfg, sizeof(F1AP_PDU_t)); + if(f1apDuCfg == NULLP) + { + DU_LOG("\nF1AP : Memory allocation for F1AP-PDU failed"); + break; + } + + f1apDuCfg->present = F1AP_PDU_PR_initiatingMessage; + DU_ALLOC(f1apDuCfg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); + if(f1apDuCfg->choice.initiatingMessage == NULLP) + { + DU_LOG("\nF1AP : Memory allocation for F1AP-PDU failed"); + break; + } + + f1apDuCfg->choice.initiatingMessage->procedureCode = \ + ProcedureCode_id_gNBDUConfigurationUpdate; + f1apDuCfg->choice.initiatingMessage->criticality = Criticality_reject; + f1apDuCfg->choice.initiatingMessage->value.present = \ + InitiatingMessage__value_PR_GNBDUConfigurationUpdate; + duCfgUpdate = &f1apDuCfg->choice.initiatingMessage->value.\ + choice.GNBDUConfigurationUpdate; + elementCnt = 3; + duCfgUpdate->protocolIEs.list.count = elementCnt; + duCfgUpdate->protocolIEs.list.size = \ + elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t*); + + /* Initialize the F1Setup members */ + DU_ALLOC(duCfgUpdate->protocolIEs.list.array,duCfgUpdate->protocolIEs.list.size); + if(duCfgUpdate->protocolIEs.list.array == NULLP) + { + DU_LOG("F1AP : Memory allocation for F1RequestIEs failed"); + break; + } + for(idx=0;idxprotocolIEs.list.array[idx],sizeof(GNBDUConfigurationUpdateIEs_t)); + if(duCfgUpdate->protocolIEs.list.array[idx] == NULLP) + { + break; + } + } + + /*TransactionID*/ + idx1 = 0; + duCfgUpdate->protocolIEs.list.array[idx1]->id=ProtocolIE_ID_id_TransactionID; + duCfgUpdate->protocolIEs.list.array[idx1]->criticality= Criticality_reject; + duCfgUpdate->protocolIEs.list.array[idx1]->value.present = \ + GNBDUConfigurationUpdateIEs__value_PR_TransactionID; + duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.TransactionID = \ + TRANS_ID; + + /*Served Cell to Modify */ + idx1++; + duCfgUpdate->protocolIEs.list.array[idx1]->id = \ + ProtocolIE_ID_id_Served_Cells_To_Modify_List; + duCfgUpdate->protocolIEs.list.array[idx1]->criticality =Criticality_reject; + duCfgUpdate->protocolIEs.list.array[idx1]->value.present = \ + GNBDUConfigurationUpdateIEs__value_PR_Served_Cells_To_Modify_List; + cellsToModify = &duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.\ + Served_Cells_To_Modify_List; + modifyCnt = 1; + cellsToModify->list.count = modifyCnt; + cellsToModify->list.size = \ + modifyCnt*sizeof(Served_Cells_To_Modify_ItemIEs_t *); + DU_ALLOC(cellsToModify->list.array,cellsToModify->list.size); + if(cellsToModify->list.array == NULLP) + { + break; + } + for(idy=0; idylist.array[idy],sizeof(\ + Served_Cells_To_Modify_ItemIEs_t)); + if(cellsToModify->list.array[idy] == NULLP) + { + break; + } + } + cellsToModify->list.array[0]->id = \ + ProtocolIE_ID_id_Served_Cells_To_Modify_Item; + cellsToModify->list.array[0]->criticality = Criticality_reject; + cellsToModify->list.array[0]->value.present =\ + Served_Cells_To_Modify_ItemIEs__value_PR_Served_Cells_To_Modify_Item; + modifyItem=&cellsToModify->list.array[0]->value.choice.\ + Served_Cells_To_Modify_Item; + + /*pLMN_Identity*/ + modifyItem->oldNRCGI.pLMN_Identity.size = 3*sizeof(uint8_t); + DU_ALLOC(modifyItem->oldNRCGI.pLMN_Identity.buf,modifyItem->oldNRCGI.pLMN_Identity.size); + if(modifyItem->oldNRCGI.pLMN_Identity.buf == NULLP) + { + break; + } + buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ + &modifyItem->oldNRCGI.pLMN_Identity); + + /*nRCellIdentity*/ + modifyItem->oldNRCGI.nRCellIdentity.size = 5*sizeof(uint8_t); + DU_ALLOC(modifyItem->oldNRCGI.nRCellIdentity.buf,\ + modifyItem->oldNRCGI.nRCellIdentity.size); + if(modifyItem->oldNRCGI.nRCellIdentity.buf == NULLP) + { + break; + } + for (int tmp = 0;tmp < modifyItem->oldNRCGI.nRCellIdentity.size-1;tmp++) + { + modifyItem->oldNRCGI.nRCellIdentity.buf[tmp] = 0; + } + modifyItem->oldNRCGI.nRCellIdentity.buf[4] = 16; + modifyItem->oldNRCGI.nRCellIdentity.bits_unused = 4; + /*pLMN_Identity*/ + /*nRCGI*/ + modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.size =3*sizeof(uint8_t); + DU_ALLOC(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ + modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.size); + if(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf == NULLP) + { + break; + } + buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ + &modifyItem->served_Cell_Information.nRCGI.pLMN_Identity); + modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.size =5*sizeof(uint8_t); + DU_ALLOC(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ + modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.size); + if(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf == NULLP) + { + break; + } + for (int tmp = 0 ; tmp < modifyItem->served_Cell_Information.\ + nRCGI.nRCellIdentity.size-1 ; tmp++) + { + modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf[tmp] = 0; + } + modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf[4] = 16; + modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.bits_unused =4; + /*nRPCI*/ + modifyItem->served_Cell_Information.nRPCI = \ + duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrPci; + /*servedPLMNs*/ + servPlmnCnt = 1; + modifyItem->served_Cell_Information.servedPLMNs.list.count = servPlmnCnt; + modifyItem->served_Cell_Information.servedPLMNs.list.size = \ + servPlmnCnt*sizeof(ServedPLMNs_Item_t *); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ + modifyItem->served_Cell_Information.servedPLMNs.list.size); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array == NULLP) + { + break; + } + for(idy1=0;idy1served_Cell_Information.servedPLMNs.list.array[idy1],\ + sizeof(ServedPLMNs_Item_t)); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idy1]== NULLP) + { + break; + } + } + modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->pLMN_Identity.size = 3*sizeof(uint8_t); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->pLMN_Identity.buf,modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->pLMN_Identity.size); + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->pLMN_Identity.buf == NULLP) + { + break; + } + buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.plmn[0],\ + &modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->pLMN_Identity); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions == NULLP) + { + break; + } + extensionCnt=1; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.count = extensionCnt; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.size = extensionCnt *sizeof(ServedPLMNs_ItemExtIEs_t *); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions->list.array,modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.size); + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions->list.array == NULLP) + { + break; + } + for(idy2=0;idy2served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions->list.array[idy2],\ + sizeof(ServedPLMNs_ItemExtIEs_t)); + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions->list.array[idy2] == NULLP) + { + break; + } + } + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->id =ProtocolIE_ID_id_TAISliceSupportList; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->criticality = Criticality_ignore; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.present = \ + ServedPLMNs_ItemExtIEs__extensionValue_PR_SliceSupportList; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.count = 1; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.size = sizeof(SliceSupportItem_t *); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array,modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.list.size); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array == NULLP) + { + break; + } + + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0],sizeof( SliceSupportItem_t)); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0] == NULLP) + { + break; + } + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sST.size = sizeof(uint8_t); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sST.buf,modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.list.array[0]->sNSSAI.sST.size); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sST.buf == NULLP) + { + break; + } + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sST.buf[0] = 3; + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD,sizeof(OCTET_STRING_t)); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD == NULLP) + { + break; + } + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->size = 3*sizeof(uint8_t); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->buf,modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->size); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->buf == NULLP) + { + break; + } + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->buf[0] = 3; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->buf[1] = 6; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->buf[2] = 9; + + /*nR Mode Info with FDD*/ + modifyItem->served_Cell_Information.nR_Mode_Info.present = \ + NR_Mode_Info_PR_fDD; + DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD,\ + sizeof(FDD_Info_t)); + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD == NULLP) + { + break; + } + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_NRFreqInfo.nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.ulNrFreqInfo.nrArfcn; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_NRFreqInfo.freqBandListNr.list.count = 1; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_NRFreqInfo.freqBandListNr.list.size = sizeof(FreqBandNrItem_t*); + DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD->uL_NRFreqInfo.freqBandListNr.list.\ + array, modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_NRFreqInfo.freqBandListNr.list.size); + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD->uL_NRFreqInfo.freqBandListNr.list.array == NULLP) + { + break; + } + DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_NRFreqInfo.freqBandListNr.list.array[0],sizeof(FreqBandNrItem_t)); + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD-> + uL_NRFreqInfo.freqBandListNr.list.array[0] == NULLP) + { + break; + } + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ + freqBandListNr.list.array[0]->freqBandIndicatorNr = \ + duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.\ + freqBand[0].nrFreqBand; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ + freqBandListNr.list.array[0]->supportedSULBandList.list.count=0; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.\ + dlNrFreqInfo.nrArfcn; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.count = 1; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.size = sizeof(FreqBandNrItem_t *); + DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + dL_NRFreqInfo.freqBandListNr.list.array,modifyItem->served_Cell_Information.nR_Mode_Info.\ + choice.fDD->dL_NRFreqInfo.freqBandListNr.list.size); + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ dL_NRFreqInfo.freqBandListNr.list.array == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.\ - array[0],sizeof(FreqBandNrItem_t)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.\ - array,sizeof(FreqBandNrItem_t *)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD,\ - sizeof(FDD_Info_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf,3*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf,sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0],sizeof( SliceSupportItem_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array,sizeof( SliceSupportItem_t *)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,\ - sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + { + break; + } + DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ dL_NRFreqInfo.freqBandListNr.list.array[0],\ sizeof(FreqBandNrItem_t)); - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ dL_NRFreqInfo.freqBandListNr.list.array[0] == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_NRFreqInfo.freqBandListNr.list.array,\ - sizeof(FreqBandNrItem_t *)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.\ - array[0],sizeof(FreqBandNrItem_t)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.\ - array,sizeof(FreqBandNrItem_t *)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD,\ - sizeof(FDD_Info_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf,3*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf,sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0],sizeof( SliceSupportItem_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array,sizeof( SliceSupportItem_t *)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,\ - sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array[0]->freqBandIndicatorNr = \ - duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.dlNrFreqInfo.\ - freqBand[0].nrFreqBand; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array[0]->supportedSULBandList.list.count=0; - - /*Transmission Bandwidth*/ - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_Transmission_Bandwidth.nRSCS = duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.ulTxBw.nrScs; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_Transmission_Bandwidth.nRNRB = duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.ulTxBw.nrb; - - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_Transmission_Bandwidth.nRSCS = duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.dlTxBw.nrScs; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_Transmission_Bandwidth.nRNRB = duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.dlTxBw.nrb; - - /*Measurement timing Config*/ - modifyItem->served_Cell_Information.measurementTimingConfiguration.size = \ + { + break; + } + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.array[0]->freqBandIndicatorNr = \ + duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.dlNrFreqInfo.\ + freqBand[0].nrFreqBand; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.array[0]->supportedSULBandList.list.count=0; + + /*Transmission Bandwidth*/ + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_Transmission_Bandwidth.nRSCS = duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.ulTxBw.nrScs; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_Transmission_Bandwidth.nRNRB = duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.ulTxBw.nrb; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + dL_Transmission_Bandwidth.nRSCS = duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.dlTxBw.nrScs; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + dL_Transmission_Bandwidth.nRNRB = duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.dlTxBw.nrb; + /*Measurement timing Config*/ + modifyItem->served_Cell_Information.measurementTimingConfiguration.size = \ sizeof(uint8_t); - DU_ALLOC(modifyItem->served_Cell_Information.measurementTimingConfiguration.\ - buf,sizeof(uint8_t)); - if(modifyItem->served_Cell_Information.measurementTimingConfiguration.buf == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_NRFreqInfo.freqBandListNr.list.array[0],\ - sizeof(FreqBandNrItem_t)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_NRFreqInfo.freqBandListNr.list.array,\ - sizeof(FreqBandNrItem_t *)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.\ - array[0],sizeof(FreqBandNrItem_t)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.\ - array,sizeof(FreqBandNrItem_t *)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD,\ - sizeof(FDD_Info_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf,3*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf,sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0],sizeof( SliceSupportItem_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array,sizeof( SliceSupportItem_t *)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,\ - sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - modifyItem->served_Cell_Information.measurementTimingConfiguration.\ - buf[0] = duCfgParam.srvdCellLst[0].duCellInfo.measTimeCfg; - + DU_ALLOC(modifyItem->served_Cell_Information.measurementTimingConfiguration.\ + buf,modifyItem->served_Cell_Information.measurementTimingConfiguration.size); + if(modifyItem->served_Cell_Information.measurementTimingConfiguration.buf == NULLP) + { + break; + } + modifyItem->served_Cell_Information.measurementTimingConfiguration.\ + buf[0] = duCfgParam.srvdCellLst[0].duCellInfo.measTimeCfg; - // NOTE :GNB DU SYS INFO:MIB AND SIB1 INFORMATION TO BE BUILT AND FILLED HERE - /*GNB DU ID */ - duCfgUpdate->protocolIEs.list.array[2]->id = ProtocolIE_ID_id_gNB_DU_ID; - duCfgUpdate->protocolIEs.list.array[2]->criticality = Criticality_reject; - duCfgUpdate->protocolIEs.list.array[2]->value.present = \ + // NOTE :GNB DU SYS INFO:MIB AND SIB1 INFORMATION TO BE BUILT AND FILLED HERE + /*GNB DU ID */ + idx1++; + duCfgUpdate->protocolIEs.list.array[idx1]->id = ProtocolIE_ID_id_gNB_DU_ID; + duCfgUpdate->protocolIEs.list.array[idx1]->criticality = Criticality_reject; + duCfgUpdate->protocolIEs.list.array[idx1]->value.present = \ GNBDUConfigurationUpdateIEs__value_PR_GNB_DU_ID; - duCfgUpdate->protocolIEs.list.array[2]->value.choice.GNB_DU_ID.size = \ + duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.size = \ sizeof(uint8_t); - DU_ALLOC(duCfgUpdate->protocolIEs.list.array[2]->value.choice.GNB_DU_ID.buf,\ - sizeof(uint8_t)); - if(duCfgUpdate->protocolIEs.list.array[2]->value.choice.GNB_DU_ID.buf == NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.measurementTimingConfiguration.\ - buf,sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_NRFreqInfo.freqBandListNr.list.array[0],\ - sizeof(FreqBandNrItem_t)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_NRFreqInfo.freqBandListNr.list.array,\ - sizeof(FreqBandNrItem_t *)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.\ - array[0],sizeof(FreqBandNrItem_t)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.\ - array,sizeof(FreqBandNrItem_t *)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD,\ - sizeof(FDD_Info_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf,3*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf,sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0],sizeof( SliceSupportItem_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array,sizeof( SliceSupportItem_t *)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,extensionCnt*\ - sizeof(ServedPLMNs_ItemExtIEs_t *)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,\ - sizeof(ProtocolExtensionContainer_4624P3_t)); - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,3*sizeof(uint8_t)); - for(idy=0;idyserved_Cell_Information.servedPLMNs.list.array[idy],\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(U8)); - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size*sizeof(uint8_t)); - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t)); - DU_FREE(cellsToModify->list.array[idy],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - DU_FREE(cellsToModify->list.array,modifyCnt*\ - sizeof(Served_Cells_To_Modify_ItemIEs_t *)); - for(idy=0;idyprotocolIEs.list.array[idy], \ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,\ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage,\ - (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); - return RFAILED; - } - duCfgUpdate->protocolIEs.list.array[2]->value.choice.GNB_DU_ID.buf[0] = \ + DU_ALLOC(duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.buf,\ + duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.size); + if(duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.buf == NULLP) + { + break; + } + duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.buf[0] = \ duCfgParam.duId; - - -#endif - xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apDuCfg); + xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apDuCfg); - /* Encode the DU Config Update type as APER */ - cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); - encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apDuCfg, PrepFinalEncBuf, encBuf); - - /* Clean up */ - for(idx=0;idxprotocolIEs.list.array[idx], sizeof(GNBDUConfigurationUpdateIEs_t)); - } - DU_FREE(duCfgUpdate->protocolIEs.list.array, elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t *)); - DU_FREE(f1apDuCfg->choice.initiatingMessage, (Size)sizeof(InitiatingMessage_t)); - DU_FREE(f1apDuCfg, sizeof(F1AP_PDU_t)); + /* Encode the DU Config Update type as APER */ + cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apDuCfg, PrepFinalEncBuf, encBuf); - /* Checking encode results */ - if(encRetVal.encoded == ENCODE_FAIL) - { - DU_LOG("F1AP : Could not encode DUConfigUpdate structure (at %s)\n",encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - return RFAILED; - } - else - { - DU_LOG("\nF1AP : Created APER encoded buffer for DUConfigUpdate\n"); - for(int i=0; i< encBufSize; i++) - { - printf("%x",encBuf[i]); - } - } - - /* Sending msg */ - if(SendF1APMsg(DU_APP_MEM_REGION, DU_POOL) != ROK) - { - DU_LOG("\nF1AP : Sending GND-DU Config Update failed"); - return RFAILED; - } - return ROK; + /* Checking encode results */ + if(encRetVal.encoded == ENCODE_FAIL) + { + DU_LOG("F1AP : Could not encode DUConfigUpdate structure (at %s)\n",encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); + break; + } + else + { + DU_LOG("\nF1AP : Created APER encoded buffer for DUConfigUpdate\n"); + for(i=0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } + } + /* Sending msg */ + if(SendF1APMsg(DU_APP_MEM_REGION, DU_POOL) != ROK) + { + DU_LOG("\nF1AP : Sending GND-DU Config Update failed"); + break; + } + checkvar=true; + break; + } + if(f1apDuCfg != NULLP) + { + if(f1apDuCfg->choice.initiatingMessage != NULLP) + { + if(duCfgUpdate->protocolIEs.list.array != NULLP) + { + if(idx==elementCnt) + { + if(cellsToModify->list.array != NULLP) + { + if(idy==modifyCnt) + { + if(modifyItem->oldNRCGI.pLMN_Identity.buf != NULLP) + { + if(modifyItem->oldNRCGI.nRCellIdentity.buf != NULLP) + { + if(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf != NULLP) + { + if(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf + != NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.array\ + != NULLP) + { + if(idy1==servPlmnCnt) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->pLMN_Identity.buf != NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions!= NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions->list.array != NULLP) + { + if(idy2==extensionCnt) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array !=NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]!=NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sST.buf!=NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD != NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->buf!=NULLP) + { + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD + !=NULLP) + { + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD->uL_NRFreqInfo.freqBandListNr.list.array!=NULLP) + { + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD->uL_NRFreqInfo.freqBandListNr.list.array[0]!=NULLP) + { + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD->dL_NRFreqInfo.freqBandListNr.list.array !=NULLP) + { + if(modifyItem->served_Cell_Information.nR_Mode_Info.\ + choice.fDD->dL_NRFreqInfo.freqBandListNr.list.\ + array[0]!= NULLP) + { + if(modifyItem->served_Cell_Information.\ + measurementTimingConfiguration.buf !=NULLP) + { + if(duCfgUpdate->protocolIEs.list.array[2]->value.\ + choice.GNB_DU_ID.buf!=NULLP) + { + DU_FREE(duCfgUpdate->protocolIEs.list.\ + array[2]->value.choice.GNB_DU_ID.buf,\ + duCfgUpdate->protocolIEs.list.array[2]->\ + value.choice.GNB_DU_ID.size); + } + DU_FREE(modifyItem->served_Cell_Information.\ + measurementTimingConfiguration.\ + buf,modifyItem->served_Cell_Information.\ + measurementTimingConfiguration.size); + } + DU_FREE(modifyItem->served_Cell_Information.\ + nR_Mode_Info.choice.fDD->dL_NRFreqInfo.freqBandListNr.\ + list.array[0],sizeof(FreqBandNrItem_t)); + } + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info\ + .choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array,\ + modifyItem->served_Cell_Information.nR_Mode_Info.\ + choice.fDD->dL_NRFreqInfo.freqBandListNr.list.size); + } + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.\ + choice.fDD->uL_NRFreqInfo.freqBandListNr.list.\ + array[0],sizeof(FreqBandNrItem_t)); + } + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD->uL_NRFreqInfo.freqBandListNr.list.\ + array,modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD->uL_NRFreqInfo.freqBandListNr.list.size); + } + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD,sizeof(FDD_Info_t)); + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->buf,modifyItem->served_Cell_Information.\ + servedPLMNs.list.array[0]->iE_Extensions->list.array[0]->\ + extensionValue.choice.SliceSupportList.list.array[0]->sNSSAI.sD->size); + + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD,sizeof(OCTET_STRING_t)); + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sST.buf,modifyItem->served_Cell_Information.servedPLMNs.\ + list.array[0]->iE_Extensions->list.array[0]->extensionValue.choice.\ + SliceSupportList.list.array[0]->sNSSAI.sST.size); + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0],sizeof(SliceSupportItem_t)); + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array,\ + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.list.size); + } + for(i=0;iserved_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions->list.array[i],\ + sizeof(ServedPLMNs_ItemExtIEs_t )); + } + } + else + { + for(i=0;iserved_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions->list.array[i],\ + sizeof(ServedPLMNs_ItemExtIEs_t)); + } + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions->list.array,modifyItem->served_Cell_Information.servedPLMNs. + list.array[0]->iE_Extensions->list.size); + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->pLMN_Identity.buf, + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->pLMN_Identity.size); + } + for(i=0;iserved_Cell_Information.servedPLMNs.list.array[i],\ + sizeof(ServedPLMNs_Item_t)); + } + } + else + { + for(i=0;iserved_Cell_Information.servedPLMNs.list.array[i],\ + sizeof(ServedPLMNs_Item_t)); + } + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ + modifyItem->served_Cell_Information.servedPLMNs.list.size); + } + DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ + modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.size); + } + DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ + modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.size); + } + DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ + modifyItem->oldNRCGI.nRCellIdentity.size); + } + DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,\ + modifyItem->oldNRCGI.pLMN_Identity.size); + } + for(int iy=0; iylist.array[iy],\ + sizeof(Served_Cells_To_Modify_ItemIEs_t)); + } + } + else + { + for(int iy=0; iylist.array[iy],\ + sizeof(Served_Cells_To_Modify_ItemIEs_t)); + } + } + DU_FREE(cellsToModify->list.array,cellsToModify->list.size); + } + for(i=0;iprotocolIEs.list.array[i],\ + sizeof(GNBDUConfigurationUpdateIEs_t)); + } + } + else + { + for(i=0;iprotocolIEs.list.array[i],\ + sizeof(GNBDUConfigurationUpdateIEs_t)); + } + } + DU_FREE(duCfgUpdate->protocolIEs.list.array,duCfgUpdate->protocolIEs.list.size); + } + DU_FREE(f1apDuCfg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); + } + DU_FREE(f1apDuCfg, (Size)sizeof(F1AP_PDU_t)); + } + if(checkvar==true) + return ROK; + else + return RFAILED; }/* End of BuildAndSendDUConfigUpdate */ /******************************************************************* @@ -2552,136 +1826,146 @@ S16 BuildAndSendDUConfigUpdate() S16 BuildAndSendULRRCMessageTransfer() { U8 elementCnt; - U8 ieId; + U8 idx1; U8 idx; F1AP_PDU_t *f1apMsg = NULL; ULRRCMessageTransfer_t *ulRRCMsg; asn_enc_rval_t encRetVal; /* Encoder return value */ - - DU_LOG("\n F1AP : Building UL RRC Message Transfer Message\n"); - - DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); - if(f1apMsg == NULLP) + bool checkvar=false; + while(1) { - DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); - return RFAILED; - } + DU_LOG("\n F1AP : Building UL RRC Message Transfer Message\n"); - f1apMsg->present = F1AP_PDU_PR_initiatingMessage; - DU_ALLOC(f1apMsg->choice.initiatingMessage, - sizeof(InitiatingMessage_t)); - if(f1apMsg->choice.initiatingMessage == NULLP) - { - DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); - DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; - } + DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); + if(f1apMsg == NULLP) + { + DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); + break; + } - f1apMsg->choice.initiatingMessage->procedureCode = \ + f1apMsg->present = F1AP_PDU_PR_initiatingMessage; + DU_ALLOC(f1apMsg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); + if(f1apMsg->choice.initiatingMessage == NULLP) + { + DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); + break; + } + f1apMsg->choice.initiatingMessage->procedureCode = \ ProcedureCode_id_ULRRCMessageTransfer; - f1apMsg->choice.initiatingMessage->criticality = Criticality_ignore; - f1apMsg->choice.initiatingMessage->value.present = \ + f1apMsg->choice.initiatingMessage->criticality = Criticality_ignore; + f1apMsg->choice.initiatingMessage->value.present = \ InitiatingMessage__value_PR_ULRRCMessageTransfer; - ulRRCMsg = - &f1apMsg->choice.initiatingMessage->value.choice.ULRRCMessageTransfer; - elementCnt = 3; - ulRRCMsg->protocolIEs.list.count = elementCnt; - ulRRCMsg->protocolIEs.list.size = \ + ulRRCMsg = + &f1apMsg->choice.initiatingMessage->value.choice.ULRRCMessageTransfer; + elementCnt = 3; + ulRRCMsg->protocolIEs.list.count = elementCnt; + ulRRCMsg->protocolIEs.list.size = \ elementCnt * sizeof(ULRRCMessageTransferIEs_t *); - /* Initialize the F1Setup members */ - DU_ALLOC(ulRRCMsg->protocolIEs.list.array, \ - elementCnt * sizeof(ULRRCMessageTransferIEs_t *)); - if(ulRRCMsg->protocolIEs.list.array == NULLP) - { - DU_LOG(" F1AP : Memory allocation for UL RRC MessageTransferIEs failed"); - DU_FREE(f1apMsg->choice.initiatingMessage, - sizeof(InitiatingMessage_t)); - DU_FREE(f1apMsg,(Size)sizeof(F1AP_PDU_t)); - return RFAILED; - } - - for(idx=0; idxprotocolIEs.list.array[idx],\ - sizeof(ULRRCMessageTransferIEs_t)); - if(ulRRCMsg->protocolIEs.list.array[idx] == NULLP) - { - for(ieId=0; ieIdprotocolIEs.list.array[ieId],\ - sizeof(ULRRCMessageTransferIEs_t)); - } - DU_FREE(ulRRCMsg->protocolIEs.list.array,\ - elementCnt * sizeof(ULRRCMessageTransferIEs_t *)); - DU_FREE(f1apMsg->choice.initiatingMessage,\ - sizeof(InitiatingMessage_t)); - DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; - } - } + /* Initialize the F1Setup members */ + DU_ALLOC(ulRRCMsg->protocolIEs.list.array, ulRRCMsg->protocolIEs.list.size); + if(ulRRCMsg->protocolIEs.list.array == NULLP) + { + DU_LOG(" F1AP : Memory allocation for UL RRC MessageTransferIEs failed"); + break; + } + for(idx=0; idxprotocolIEs.list.array[idx],sizeof(ULRRCMessageTransferIEs_t)); + if(ulRRCMsg->protocolIEs.list.array[idx] == NULLP) + { + break; + } + } - idx = 0; + idx1 = 0; - /*GNB CU UE F1AP ID*/ - ulRRCMsg->protocolIEs.list.array[idx]->id = \ + /*GNB CU UE F1AP ID*/ + ulRRCMsg->protocolIEs.list.array[idx1]->id = \ ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID; - ulRRCMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; - ulRRCMsg->protocolIEs.list.array[idx]->value.present = \ + ulRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; + ulRRCMsg->protocolIEs.list.array[idx1]->value.present = \ ULRRCMessageTransferIEs__value_PR_GNB_CU_UE_F1AP_ID; - ulRRCMsg->protocolIEs.list.array[idx]->value.choice.GNB_CU_UE_F1AP_ID = CU_ID; + ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.GNB_CU_UE_F1AP_ID = CU_ID; - /*GNB DU UE F1AP ID*/ - idx++; - ulRRCMsg->protocolIEs.list.array[idx]->id = \ + /*GNB DU UE F1AP ID*/ + idx1++; + ulRRCMsg->protocolIEs.list.array[idx1]->id = \ ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID; - ulRRCMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; - ulRRCMsg->protocolIEs.list.array[idx]->value.present = \ + ulRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; + ulRRCMsg->protocolIEs.list.array[idx1]->value.present = \ ULRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID; - ulRRCMsg->protocolIEs.list.array[idx]->value.choice.GNB_DU_UE_F1AP_ID = DU_ID; + ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.GNB_DU_UE_F1AP_ID = DU_ID; - /*SRBID*/ - idx++; - ulRRCMsg->protocolIEs.list.array[idx]->id = \ + /*SRBID*/ + idx1++; + ulRRCMsg->protocolIEs.list.array[idx1]->id = \ ProtocolIE_ID_id_SRBID; - ulRRCMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; - ulRRCMsg->protocolIEs.list.array[idx]->value.present = \ + ulRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; + ulRRCMsg->protocolIEs.list.array[idx1]->value.present = \ ULRRCMessageTransferIEs__value_PR_SRBID; - ulRRCMsg->protocolIEs.list.array[idx]->value.choice.SRBID = UL_SRBID; + ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.SRBID = UL_SRBID; - /*RRCContainer*/ - //YET TO FILL + /*RRCContainer*/ + //YET TO FILL - xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); + xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); - /* Encode the F1SetupRequest type as APER */ - cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); - encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf,\ + /* Encode the F1SetupRequest type as APER */ + cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf,\ encBuf); - /* Encode results */ - if(encRetVal.encoded == ENCODE_FAIL) - { - DU_LOG( "\n F1AP : Could not encode ULRRCMessageTransfer structure (at %s)\n",\ + /* Encode results */ + if(encRetVal.encoded == ENCODE_FAIL) + { + DU_LOG( "\n F1AP : Could not encode ULRRCMessageTransfer structure (at %s)\n",\ encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - return RFAILED; - } - else - { - DU_LOG("\n F1AP : Created APER encoded buffer for ULRRCMessageTransfer\n"); - for(int i=0; i< encBufSize; i++) - { - printf("%x",encBuf[i]); + break; + } + else + { + DU_LOG("\n F1AP : Created APER encoded buffer for ULRRCMessageTransfer\n"); + for(int i=0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } + } + + /* Sending msg */ + if(SendF1APMsg(DU_APP_MEM_REGION,DU_POOL) != ROK) + { + DU_LOG("\n F1AP : Sending UL RRC Message Transfer Failed"); + break; } + checkvar=true; + break; } - /* Sending msg */ - if(SendF1APMsg(DU_APP_MEM_REGION,DU_POOL) != ROK) + if(f1apMsg != NULLP) { - DU_LOG("\n F1AP : Sending UL RRC Message Transfer Failed"); - return RFAILED; + if(f1apMsg->choice.initiatingMessage != NULLP) + { + if(ulRRCMsg->protocolIEs.list.array != NULLP) + { + for(idx1=0;idx1protocolIEs.list.array[idx1] != NULLP) + { + DU_FREE(ulRRCMsg->protocolIEs.list.array[idx1],sizeof(ULRRCMessageTransferIEs_t)); + } + } + DU_FREE(ulRRCMsg->protocolIEs.list.array,ulRRCMsg->protocolIEs.list.size ); + } + DU_FREE(f1apMsg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); + } + DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); } - return ROK; + + if(checkvar==true) + return ROK; + else + return RFAILED; }/* End of BuildAndSendULRRCMessageTransfer*/ /******************************************************************* @@ -2703,163 +1987,166 @@ S16 BuildAndSendULRRCMessageTransfer() * ****************************************************************/ S16 BuildAndSendRRCSetupReq() { - S16 ret; + S16 ret; U8 elementCnt; - U8 ieId; + U8 ieId; U8 idx; - F1AP_PDU_t *f1apMsg = NULL; - InitialULRRCMessageTransfer_t *initULRRCMsg; - asn_enc_rval_t encRetVal; /* Encoder return value */ - - DU_LOG("\n F1AP : Building RRC Setup Request\n"); - - DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); - if(f1apMsg == NULLP) + U8 idx1; + F1AP_PDU_t *f1apMsg = NULLP; + InitialULRRCMessageTransfer_t *initULRRCMsg=NULLP; + asn_enc_rval_t encRetVal; + bool checkvar=false; + while(1) { - DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); - return RFAILED; - } - - f1apMsg->present = F1AP_PDU_PR_initiatingMessage; - DU_ALLOC(f1apMsg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); - if(f1apMsg->choice.initiatingMessage == NULLP) - { - DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); - DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; - } - - f1apMsg->choice.initiatingMessage->procedureCode = \ - ProcedureCode_id_InitialULRRCMessageTransfer; - f1apMsg->choice.initiatingMessage->criticality = Criticality_ignore; - f1apMsg->choice.initiatingMessage->value.present = \ - InitiatingMessage__value_PR_InitialULRRCMessageTransfer; - initULRRCMsg = - &f1apMsg->choice.initiatingMessage->value.choice.InitialULRRCMessageTransfer; - elementCnt = 3; - initULRRCMsg->protocolIEs.list.count = elementCnt; - initULRRCMsg->protocolIEs.list.size = \ - elementCnt * sizeof(InitialULRRCMessageTransferIEs_t *); - - /* Initialize the F1Setup members */ - DU_ALLOC(initULRRCMsg->protocolIEs.list.array, \ - elementCnt * sizeof(InitialULRRCMessageTransferIEs_t *)); - if(initULRRCMsg->protocolIEs.list.array == NULLP) - { - DU_LOG(" F1AP : Memory allocation for RRCSetupRequestMessageTransferIEs failed"); - DU_FREE(f1apMsg->choice.initiatingMessage, - sizeof(InitiatingMessage_t)); - DU_FREE(f1apMsg,(Size)sizeof(F1AP_PDU_t)); - return RFAILED; - } - - for(idx=0; idxprotocolIEs.list.array[idx],\ - sizeof(InitialULRRCMessageTransferIEs_t)); - if(initULRRCMsg->protocolIEs.list.array[idx] == NULLP) - { - for(ieId=0; ieIdpresent = F1AP_PDU_PR_initiatingMessage; + DU_ALLOC(f1apMsg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); + if(f1apMsg->choice.initiatingMessage == NULLP) + { + DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); + break; + } + f1apMsg->choice.initiatingMessage->procedureCode =\ + ProcedureCode_id_InitialULRRCMessageTransfer; + f1apMsg->choice.initiatingMessage->criticality = Criticality_ignore; + f1apMsg->choice.initiatingMessage->value.present = \ + InitiatingMessage__value_PR_InitialULRRCMessageTransfer; + initULRRCMsg =\ + &f1apMsg->choice.initiatingMessage->value.choice.InitialULRRCMessageTransfer; + elementCnt = 3; + initULRRCMsg->protocolIEs.list.count = elementCnt; + initULRRCMsg->protocolIEs.list.size = \ + elementCnt * sizeof(InitialULRRCMessageTransferIEs_t *); + /* Initialize the F1Setup members */ + DU_ALLOC(initULRRCMsg->protocolIEs.list.array,initULRRCMsg->protocolIEs.list.size); + if(initULRRCMsg->protocolIEs.list.array == NULLP) + { + DU_LOG(" F1AP : Memory allocation for\ + RRCSetupRequestMessageTransferIEs failed"); + break; + } + for(idx=0; idxprotocolIEs.list.array[idx],\ + sizeof(InitialULRRCMessageTransferIEs_t)); + if(initULRRCMsg->protocolIEs.list.array[idx] == NULLP) + { + break; + } + } + idx1 = 0; + /*GNB DU UE F1AP ID*/ + initULRRCMsg->protocolIEs.list.array[idx1]->id = \ + ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID; + initULRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; + initULRRCMsg->protocolIEs.list.array[idx1]->value.present = \ + InitialULRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID; + initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.GNB_DU_UE_F1AP_ID= DU_ID; + /*NRCGI*/ + idx1++; + initULRRCMsg->protocolIEs.list.array[idx1]->id = \ + ProtocolIE_ID_id_NRCGI; + initULRRCMsg->protocolIEs.list.array[idx1]->criticality =Criticality_reject; + initULRRCMsg->protocolIEs.list.array[idx1]->value.present = \ + InitialULRRCMessageTransferIEs__value_PR_NRCGI; + + ret =\ + BuildNrcgi(&initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI); + if(ret!=ROK) { - DU_FREE(initULRRCMsg->protocolIEs.list.array[ieId],\ - sizeof(InitialULRRCMessageTransferIEs_t)); + break; } - DU_FREE(initULRRCMsg->protocolIEs.list.array,\ - elementCnt * sizeof(InitialULRRCMessageTransferIEs_t *)); - DU_FREE(f1apMsg->choice.initiatingMessage,\ - sizeof(InitiatingMessage_t)); - DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; - } - } - - idx = 0; - - /*GNB DU UE F1AP ID*/ - initULRRCMsg->protocolIEs.list.array[idx]->id = \ - ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID; - initULRRCMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; - initULRRCMsg->protocolIEs.list.array[idx]->value.present = \ - InitialULRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID; - initULRRCMsg->protocolIEs.list.array[idx]->value.choice.GNB_DU_UE_F1AP_ID = DU_ID; - - /*NRCGI*/ - idx++; - initULRRCMsg->protocolIEs.list.array[idx]->id = \ - ProtocolIE_ID_id_NRCGI; - initULRRCMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; - initULRRCMsg->protocolIEs.list.array[idx]->value.present = \ - InitialULRRCMessageTransferIEs__value_PR_NRCGI; - ret = \ - BuildNrcgi(&initULRRCMsg->protocolIEs.list.array[idx]->value.choice.NRCGI); - if(ret != ROK) - { - DU_FREE(initULRRCMsg->protocolIEs.list.array[idx]->value.choice.NRCGI.\ - nRCellIdentity.buf,initULRRCMsg->protocolIEs.list.array[idx]->\ - value.choice.NRCGI.nRCellIdentity.size); - DU_FREE(initULRRCMsg->protocolIEs.list.array[idx]->value.choice.NRCGI.\ - pLMN_Identity.buf,initULRRCMsg->protocolIEs.list.array[idx]->\ - value.choice.NRCGI.pLMN_Identity.size); - for(idx=0; idxprotocolIEs.list.array[idx],\ - sizeof(InitialULRRCMessageTransferIEs_t)); - } - DU_FREE(initULRRCMsg->protocolIEs.list.array,\ - elementCnt * sizeof(InitialULRRCMessageTransferIEs_t *)); - DU_FREE(f1apMsg->choice.initiatingMessage,\ - sizeof(InitiatingMessage_t)); - DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; - + initULRRCMsg->protocolIEs.list.array[idx1]->id = \ + ProtocolIE_ID_id_C_RNTI; + initULRRCMsg->protocolIEs.list.array[idx1]->criticality =Criticality_reject; + initULRRCMsg->protocolIEs.list.array[idx1]->value.present =\ + InitialULRRCMessageTransferIEs__value_PR_C_RNTI; + initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.C_RNTI =CRNTI; + /*RRCContainer*/ + // Need to fill this. + + /*DUtoCURRCContainer*/ + //Need to fill this too. + xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); + /* Encode the F1SetupRequest type as APER */ + cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg,\ + PrepFinalEncBuf,encBuf); + /* Encode results */ + if(encRetVal.encoded == ENCODE_FAIL) + { + DU_LOG( "\n F1AP : Could not encode Initial UL RRC Message Transfer\ + structure (at %s)\n",encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); + break; + } + else + { + + DU_LOG("\n F1AP : Created APER encoded buffer for Initial UL RRC\ + Message transfer\n"); + for(int i=0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } + } + /* Sending msg */ + if(SendF1APMsg(DU_APP_MEM_REGION,DU_POOL) != ROK) + { + DU_LOG("\n F1AP : Sending Initial UL RRC Message Transfer Failed"); + break; + } + checkvar=true; + break; } - - /*Cell RNTI*/ - idx++; - initULRRCMsg->protocolIEs.list.array[idx]->id = \ - ProtocolIE_ID_id_C_RNTI; - initULRRCMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; - initULRRCMsg->protocolIEs.list.array[idx]->value.present = \ - InitialULRRCMessageTransferIEs__value_PR_C_RNTI; - initULRRCMsg->protocolIEs.list.array[idx]->value.choice.C_RNTI = CRNTI; - - /*RRCContainer*/ - // Need to fill this. - - /*DUtoCURRCContainer*/ - //Need to fill this too. - - - xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); - - /* Encode the F1SetupRequest type as APER */ - cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); - encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf,\ - encBuf); - /* Encode results */ - if(encRetVal.encoded == ENCODE_FAIL) - { - DU_LOG( "\n F1AP : Could not encode Initial UL RRC Message Transfer structure (at %s)\n",\ - encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - return RFAILED; + + if(f1apMsg != NULLP) + { + if(f1apMsg->choice.initiatingMessage != NULLP) + { + if(initULRRCMsg->protocolIEs.list.array != NULLP) + { + if(idx == elementCnt) + { + idx1=1; + if(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.pLMN_Identity.buf!=NULLP) + { + if(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.nRCellIdentity.buf!=NULLP) + { + DU_FREE(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.nRCellIdentity.buf, + initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.nRCellIdentity.size); + } + DU_FREE(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.pLMN_Identity.buf,\ + initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.pLMN_Identity.size); + } + for(ieId=0; ieIdprotocolIEs.list.array[ieId],sizeof(InitialULRRCMessageTransferIEs_t)); + } + } + else + { + for(ieId=0; ieIdprotocolIEs.list.array[ieId],sizeof(InitialULRRCMessageTransferIEs_t)); + } + } + DU_FREE(initULRRCMsg->protocolIEs.list.array,initULRRCMsg->protocolIEs.list.size); + } + DU_FREE(f1apMsg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); + } + DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); } + if(checkvar==true) + return ROK; else - { - DU_LOG("\n F1AP : Created APER encoded buffer for Initial UL RRC Message transfer\n"); - for(int i=0; i< encBufSize; i++) - { - printf("%x",encBuf[i]); - } - } - - /* Sending msg */ - if(SendF1APMsg(DU_APP_MEM_REGION,DU_POOL) != ROK) - { - DU_LOG("\n F1AP : Sending Initial UL RRC Message Transfer Failed"); - return RFAILED; - } - return ROK; + return RFAILED; }/* End of BuildAndSendRRCSetupReq*/ /******************************************************************* @@ -2882,7 +2169,6 @@ S16 BuildSplCellList(SCell_ToBeSetup_List_t *spCellLst) { U8 cellCnt; U8 idx; - U8 cellidx; S16 ret; cellCnt = 1; spCellLst->list.count = cellCnt; @@ -2897,11 +2183,6 @@ S16 BuildSplCellList(SCell_ToBeSetup_List_t *spCellLst) DU_ALLOC(spCellLst->list.array[idx],sizeof(SCell_ToBeSetup_ItemIEs_t)); if(spCellLst->list.array[idx] == NULLP) { - for(cellidx=0; cellidxlist.array[cellidx],sizeof(SCell_ToBeSetup_ItemIEs_t)); - } - DU_FREE(spCellLst->list.array,spCellLst->list.size); return RFAILED; } } @@ -2914,12 +2195,6 @@ S16 BuildSplCellList(SCell_ToBeSetup_List_t *spCellLst) ret = BuildNrcgi(&spCellLst->list.array[idx]->value.choice.SCell_ToBeSetup_Item.sCell_ID); if(ret != ROK) { - for(cellidx=0; cellidxlist.array[cellidx],sizeof( - SCell_ToBeSetup_ItemIEs_t)); - } - DU_FREE(spCellLst->list.array,spCellLst->list.size); return RFAILED; } /*Special Cell Index*/ @@ -2946,7 +2221,6 @@ S16 BuildSplCellList(SCell_ToBeSetup_List_t *spCellLst) S16 BuildSRBSetup(SRBs_ToBeSetup_List_t *srbSet) { U8 idx; - U8 srbidx; U8 srbCnt; srbCnt = 1; srbSet->list.count = srbCnt; @@ -2960,12 +2234,8 @@ S16 BuildSRBSetup(SRBs_ToBeSetup_List_t *srbSet) { DU_ALLOC(srbSet->list.array[idx],sizeof(SRBs_ToBeSetup_ItemIEs_t)); if(srbSet->list.array[idx] == NULLP) - { - for(srbidx=0; srbidxlist.array[srbidx],sizeof(SRBs_ToBeSetup_ItemIEs_t)); - } - DU_FREE(srbSet->list.array,srbSet->list.size); + { + return RFAILED; } } idx = 0; @@ -3010,8 +2280,6 @@ S16 BuildQOSInfo(QoSFlowLevelQoSParameters_t *drbQos) if(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow == \ NULLP) { - DU_FREE(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI,\ - sizeof(NonDynamic5QIDescriptor_t)); return RFAILED; } *(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow) = 0; @@ -3021,10 +2289,6 @@ S16 BuildQOSInfo(QoSFlowLevelQoSParameters_t *drbQos) if(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume == \ NULLP) { - DU_FREE(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow,\ - sizeof(AveragingWindow_t)); - DU_FREE(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI,\ - sizeof(NonDynamic5QIDescriptor_t)); return RFAILED; } *(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume) = 0; @@ -3072,15 +2336,12 @@ S16 BuildSNSSAI(SNSSAI_t *snssai) DU_ALLOC(snssai->sD,sizeof(OCTET_STRING_t)); if(snssai->sD == NULLP) { - DU_FREE(snssai->sST.buf,snssai->sST.size); return RFAILED; } snssai->sD->size = 3*sizeof(U8); DU_ALLOC(snssai->sD->buf,snssai->sD->size); if(snssai->sD->buf == NULLP) { - DU_FREE(snssai->sD,sizeof(OCTET_STRING_t)); - DU_FREE(snssai->sST.buf,snssai->sST.size); return RFAILED; } snssai->sD->buf[0] = 3; @@ -3109,7 +2370,6 @@ S16 BuildFlowsMap(Flows_Mapped_To_DRB_List_t *flowMap) { S16 ret; U8 idx; - U8 flowidx; U8 flowCnt; flowCnt = 1; flowMap->list.count = flowCnt; @@ -3124,13 +2384,7 @@ S16 BuildFlowsMap(Flows_Mapped_To_DRB_List_t *flowMap) DU_ALLOC(flowMap->list.array[idx],sizeof(Flows_Mapped_To_DRB_Item_t)); if(flowMap->list.array[idx] == NULLP) { - for(flowidx=0; flowidxlist.array[flowidx],sizeof( \ - Flows_Mapped_To_DRB_Item_t)); - } - - DU_FREE(flowMap->list.array,flowMap->list.size); + return RFAILED; } } idx = 0; @@ -3138,20 +2392,6 @@ S16 BuildFlowsMap(Flows_Mapped_To_DRB_List_t *flowMap) ret = BuildQOSInfo(&flowMap->list.array[idx]->qoSFlowLevelQoSParameters); if(ret != ROK) { - DU_FREE(flowMap->list.array[idx]->qoSFlowLevelQoSParameters.\ - qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume,\ - sizeof(MaxDataBurstVolume_t)); - DU_FREE(flowMap->list.array[idx]->qoSFlowLevelQoSParameters.\ - qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow,\ - sizeof(AveragingWindow_t)); - DU_FREE(flowMap->list.array[idx]->qoSFlowLevelQoSParameters.\ - qoS_Characteristics.choice.non_Dynamic_5QI,\ - sizeof(NonDynamic5QIDescriptor_t)); - for(idx=0; idxlist.array[idx],sizeof(Flows_Mapped_To_DRB_Item_t)); - } - DU_FREE(flowMap->list.array,flowMap->list.size); return RFAILED; } return ROK; @@ -3176,7 +2416,6 @@ S16 BuildFlowsMap(Flows_Mapped_To_DRB_List_t *flowMap) S16 BuildULTnlInfo(ULUPTNLInformation_ToBeSetup_List_t *ulInfo) { U8 idx; - U8 ulidx; U8 ulCnt; ulCnt = 1; ulInfo->list.count = ulCnt; @@ -3191,11 +2430,6 @@ S16 BuildULTnlInfo(ULUPTNLInformation_ToBeSetup_List_t *ulInfo) DU_ALLOC(ulInfo->list.array[idx],sizeof(ULUPTNLInformation_ToBeSetup_Item_t)); if(ulInfo->list.array[idx] == NULLP) { - for(ulidx=0; ulidxlist.array[ulidx],sizeof(ULUPTNLInformation_ToBeSetup_Item_t)); - } - DU_FREE(ulInfo->list.array,ulInfo->list.size); return RFAILED; } } @@ -3207,11 +2441,6 @@ S16 BuildULTnlInfo(ULUPTNLInformation_ToBeSetup_List_t *ulInfo) sizeof(GTPTunnel_t)); if(ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel == NULLP) { - for(idx=0; idxlist.array[idx],sizeof(ULUPTNLInformation_ToBeSetup_Item_t)); - } - DU_FREE(ulInfo->list.array,ulInfo->list.size); return RFAILED; } ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ @@ -3222,13 +2451,6 @@ S16 BuildULTnlInfo(ULUPTNLInformation_ToBeSetup_List_t *ulInfo) if(ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ transportLayerAddress.buf == NULLP) { - DU_FREE(ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel,\ - sizeof(GTPTunnel_t)); - for(idx=0; idxlist.array[idx],sizeof(ULUPTNLInformation_ToBeSetup_Item_t)); - } - DU_FREE(ulInfo->list.array,ulInfo->list.size); return RFAILED; } ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ @@ -3250,16 +2472,6 @@ S16 BuildULTnlInfo(ULUPTNLInformation_ToBeSetup_List_t *ulInfo) if(ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->gTP_TEID.buf\ == NULLP) { - DU_FREE(ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ - transportLayerAddress.buf,ulInfo->list.array[idx]->\ - uLUPTNLInformation.choice.gTPTunnel->transportLayerAddress.size); - DU_FREE(ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel,\ - sizeof(GTPTunnel_t)); - for(idx=0; idxlist.array[idx],sizeof(ULUPTNLInformation_ToBeSetup_Item_t)); - } - DU_FREE(ulInfo->list.array,ulInfo->list.size); return RFAILED; } ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ @@ -3292,14 +2504,11 @@ S16 BuildULTnlInfo(ULUPTNLInformation_ToBeSetup_List_t *ulInfo) * ****************************************************************/ S16 BuildDRBSetup(DRBs_ToBeSetup_List_t *drbSet) { - S16 ret; + S16 BuildQOSInforet; + S16 BuildSNSSAIret; + S16 BuildFlowsMapret; U8 idx; - U8 drbidx; U8 drbCnt; - U8 flowidx; - U8 flowCnt; - U8 ulidx; - U8 ulCnt; DRBs_ToBeSetup_Item_t *drbSetItem; drbCnt = 1; drbSet->list.count = drbCnt; @@ -3314,11 +2523,6 @@ S16 BuildDRBSetup(DRBs_ToBeSetup_List_t *drbSet) DU_ALLOC(drbSet->list.array[idx],sizeof(DRBs_ToBeSetup_ItemIEs_t)); if(drbSet->list.array[idx] == NULLP) { - for(drbidx=0; drbidxlist.array[drbidx],sizeof(DRBs_ToBeSetup_ItemIEs_t)); - } - DU_FREE(drbSet->list.array,drbSet->list.size); return RFAILED; } } @@ -3335,11 +2539,6 @@ S16 BuildDRBSetup(DRBs_ToBeSetup_List_t *drbSet) DU_ALLOC(drbSetItem->qoSInformation.choice.choice_extension,sizeof(QoSInformation_ExtIEs_t)); if(drbSetItem->qoSInformation.choice.choice_extension == NULLP) { - for(idx=0; idxlist.array[idx],sizeof(DRBs_ToBeSetup_ItemIEs_t)); - } - DU_FREE(drbSet->list.array,drbSet->list.size); return RFAILED; } drbSetItem->qoSInformation.choice.choice_extension->id = \ @@ -3348,198 +2547,346 @@ S16 BuildDRBSetup(DRBs_ToBeSetup_List_t *drbSet) Criticality_ignore; drbSetItem->qoSInformation.choice.choice_extension->value.present = \ QoSInformation_ExtIEs__value_PR_DRB_Information; - ret = BuildQOSInfo(&drbSetItem->qoSInformation.choice.\ + BuildQOSInforet = BuildQOSInfo(&drbSetItem->qoSInformation.choice.\ choice_extension->value.choice.DRB_Information.dRB_QoS); - if(ret != ROK) + if(BuildQOSInforet != ROK) { - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension,sizeof(QoSInformation_ExtIEs_t)); - for(drbidx=0; drbidxlist.array[drbidx],sizeof(DRBs_ToBeSetup_ItemIEs_t)); - } - DU_FREE(drbSet->list.array,drbSet->list.size); return RFAILED; } /*SNSSAI*/ - ret = BuildSNSSAI(&drbSetItem->qoSInformation.choice.\ + BuildSNSSAIret = BuildSNSSAI(&drbSetItem->qoSInformation.choice.\ choice_extension->value.choice.DRB_Information.sNSSAI); - if(ret != ROK) + if(BuildSNSSAIret != ROK) { - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.dRB_QoS.qoS_Characteristics.choice.\ - non_Dynamic_5QI->averagingWindow,sizeof(AveragingWindow_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.dRB_QoS.qoS_Characteristics.choice.\ - non_Dynamic_5QI->maxDataBurstVolume,sizeof(MaxDataBurstVolume_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension,sizeof(QoSInformation_ExtIEs_t)); - for(drbidx=0; drbidxlist.array[drbidx],sizeof(DRBs_ToBeSetup_ItemIEs_t)); - } - DU_FREE(drbSet->list.array,drbSet->list.size); return RFAILED; } /*Flows mapped to DRB List*/ - ret = BuildFlowsMap(&drbSetItem->qoSInformation.choice.\ + BuildFlowsMapret = BuildFlowsMap(&drbSetItem->qoSInformation.choice.\ choice_extension->value.choice.DRB_Information.flows_Mapped_To_DRB_List); - if(ret != ROK) + if(BuildFlowsMapret != ROK) { - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.sNSSAI.sD,sizeof(OCTET_STRING_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.sNSSAI.sD->buf,drbSetItem->qoSInformation.\ - choice.choice_extension->value.choice.DRB_Information.\ - sNSSAI.sD->size); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.sNSSAI.sST.buf,drbSetItem->qoSInformation.\ - choice.choice_extension->value.choice.DRB_Information.\ - sNSSAI.sST.size); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.dRB_QoS.qoS_Characteristics.choice.\ - non_Dynamic_5QI->averagingWindow,sizeof(AveragingWindow_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.dRB_QoS.qoS_Characteristics.choice.\ - non_Dynamic_5QI->maxDataBurstVolume,sizeof(MaxDataBurstVolume_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension,sizeof(QoSInformation_ExtIEs_t)); - for(drbidx=0; drbidxlist.array[drbidx],sizeof(DRBs_ToBeSetup_ItemIEs_t)); - } - DU_FREE(drbSet->list.array,drbSet->list.size); return RFAILED; } /*ULUPTNLInformation To Be Setup List*/ - ret = BuildULTnlInfo(&drbSetItem->uLUPTNLInformation_ToBeSetup_List); - if(ret != ROK) + BuildULTnlInforet = BuildULTnlInfo(&drbSetItem->uLUPTNLInformation_ToBeSetup_List); + if(BuildULTnlInforet != ROK) { - flowidx=0; - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.flows_Mapped_To_DRB_List.list.\ - array[flowidx]->qoSFlowLevelQoSParameters.qoS_Characteristics.\ - choice.non_Dynamic_5QI->maxDataBurstVolume,\ - sizeof(MaxDataBurstVolume_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.flows_Mapped_To_DRB_List.list.\ - array[flowidx]->qoSFlowLevelQoSParameters.qoS_Characteristics.\ - choice.non_Dynamic_5QI->averagingWindow,sizeof(AveragingWindow_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.flows_Mapped_To_DRB_List.list.\ - array[flowidx]->qoSFlowLevelQoSParameters.qoS_Characteristics.\ - choice.non_Dynamic_5QI,sizeof(NonDynamic5QIDescriptor_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.flows_Mapped_To_DRB_List.list.\ - array,drbSetItem->qoSInformation.choice.choice_extension->\ - value.choice.DRB_Information.flows_Mapped_To_DRB_List.list.size); - flowCnt = 1; - for(flowidx=0; flowidxqoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.flows_Mapped_To_DRB_List.list.\ - array[flowidx],sizeof(Flows_Mapped_To_DRB_Item_t)); - } - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.sNSSAI.sD,sizeof(OCTET_STRING_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.sNSSAI.sD->buf,drbSetItem->qoSInformation.\ - choice.choice_extension->value.choice.DRB_Information.\ - sNSSAI.sD->size); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.sNSSAI.sST.buf,drbSetItem->qoSInformation.\ - choice.choice_extension->value.choice.DRB_Information.\ - sNSSAI.sST.size); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.dRB_QoS.qoS_Characteristics.choice.\ - non_Dynamic_5QI->averagingWindow,sizeof(AveragingWindow_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.dRB_QoS.qoS_Characteristics.choice.\ - non_Dynamic_5QI->maxDataBurstVolume,sizeof(MaxDataBurstVolume_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension,sizeof(QoSInformation_ExtIEs_t)); - for(drbidx=0; drbidxlist.array[drbidx],sizeof(DRBs_ToBeSetup_ItemIEs_t)); - } - DU_FREE(drbSet->list.array,drbSet->list.size); return RFAILED; } /*RLCMode*/ drbSetItem->rLCMode = RLCMode_rlc_um_bidirectional; /*UL Configuration*/ - ulCnt = 1; DU_ALLOC(drbSetItem->uLConfiguration,sizeof(ULConfiguration_t)); if(drbSetItem->uLConfiguration == NULLP) { - ulidx=0; - DU_FREE(drbSetItem->uLUPTNLInformation_ToBeSetup_List.list.array[ulidx]->\ - uLUPTNLInformation.choice.gTPTunnel->gTP_TEID.buf,\ - drbSetItem->uLUPTNLInformation_ToBeSetup_List.list.array[ulidx]->\ - uLUPTNLInformation.choice.gTPTunnel->gTP_TEID.size); - DU_FREE(drbSetItem->uLUPTNLInformation_ToBeSetup_List.list.array[ulidx]->\ - uLUPTNLInformation.choice.gTPTunnel->transportLayerAddress.buf,\ - drbSetItem->uLUPTNLInformation_ToBeSetup_List.list.array[ulidx]->\ - uLUPTNLInformation.choice.gTPTunnel->transportLayerAddress.size); - DU_FREE(drbSetItem->uLUPTNLInformation_ToBeSetup_List.list.array[ulidx]->\ - uLUPTNLInformation.choice.gTPTunnel,sizeof(GTPTunnel_t)); - DU_FREE(drbSetItem->uLUPTNLInformation_ToBeSetup_List.list.array,\ - drbSetItem->uLUPTNLInformation_ToBeSetup_List.list.size); - for(ulidx=0; ulidxuLUPTNLInformation_ToBeSetup_List.list.array[ulidx],\ - sizeof(ULUPTNLInformation_ToBeSetup_Item_t)); - } - flowidx=0; - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.flows_Mapped_To_DRB_List.list.\ - array[flowidx]->qoSFlowLevelQoSParameters.qoS_Characteristics.\ - choice.non_Dynamic_5QI->maxDataBurstVolume,\ - sizeof(MaxDataBurstVolume_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.flows_Mapped_To_DRB_List.list.\ - array[flowidx]->qoSFlowLevelQoSParameters.qoS_Characteristics.\ - choice.non_Dynamic_5QI->averagingWindow,sizeof(AveragingWindow_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.flows_Mapped_To_DRB_List.list.\ - array[flowidx]->qoSFlowLevelQoSParameters.qoS_Characteristics.\ - choice.non_Dynamic_5QI,sizeof(NonDynamic5QIDescriptor_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.flows_Mapped_To_DRB_List.list.\ - array,drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.flows_Mapped_To_DRB_List.list.size); - flowCnt = 1; - for(flowidx=0; flowidxqoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.flows_Mapped_To_DRB_List.list.\ - array[flowidx],sizeof(Flows_Mapped_To_DRB_Item_t)); - } - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.sNSSAI.sD,sizeof(OCTET_STRING_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.sNSSAI.sD->buf,drbSetItem->qoSInformation.\ - choice.choice_extension->value.choice.DRB_Information.\ - sNSSAI.sD->size); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.sNSSAI.sST.buf,drbSetItem->qoSInformation.\ - choice.choice_extension->value.choice.DRB_Information.\ - sNSSAI.sST.size); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.dRB_QoS.qoS_Characteristics.choice.\ - non_Dynamic_5QI->averagingWindow,sizeof(AveragingWindow_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.\ - choice.DRB_Information.dRB_QoS.qoS_Characteristics.choice.\ - non_Dynamic_5QI->maxDataBurstVolume,sizeof(MaxDataBurstVolume_t)); - DU_FREE(drbSetItem->qoSInformation.choice.choice_extension,sizeof(QoSInformation_ExtIEs_t)); - for(drbidx=0; drbidxlist.array[drbidx],sizeof(DRBs_ToBeSetup_ItemIEs_t)); - } - DU_FREE(drbSet->list.array,drbSet->list.size); - return RFAILED; + return RFAILED; } drbSetItem->uLConfiguration->uLUEConfiguration = ULUEConfiguration_no_data; return ROK; }/* End of BuildDRBSetup*/ - +/******************************************************************* +* +* @brief Deallocating memory of function BuildAndSendUESetReq +* +* @details +* +* Function : FreeNrcgi +* +* Functionality: Deallocating memory for function BuildNrcgi +* +* @params[in] NRCGI_t *nrcgi +* +* @return void +* +*******************************************************************/ +void FreeNrcgi(NRCGI_t *nrcgi) +{ + if(nrcgi->pLMN_Identity.buf != NULLP) + { + if(nrcgi->nRCellIdentity.buf != NULLP) + { + DU_FREE(nrcgi->nRCellIdentity.buf, nrcgi->nRCellIdentity.size); + } + DU_FREE(nrcgi->pLMN_Identity.buf, nrcgi->pLMN_Identity.size); + } +} +/******************************************************************* +* +* @brief Deallocating memory of function BuildAndSendUESetReq +* +* @details +* +* Function : FreeSplCellList +* +* Functionality: Deallocating memory for function BuildSplCellList +* +* @params[in] SCell_ToBeSetup_List_t *spCellLst +* +* @return void +* +* +* *****************************************************************/ +void FreeSplCellList(SCell_ToBeSetup_List_t *spCellLst) +{ + U8 cellidx; + if(spCellLst->list.array != NULLP) + { + for(cellidx=0; cellidxlist.count; cellidx++) + { + if(cellidx==0&&spCellLst->list.array[cellidx]!=NULLP) + { + FreeNrcgi(&spCellLst->list.array[cellidx]->value.choice.SCell_ToBeSetup_Item.sCell_ID); + } + if(spCellLst->list.array[cellidx]!=NULLP) + { + DU_FREE(spCellLst->list.array[cellidx],sizeof(SCell_ToBeSetup_ItemIEs_t)); + } + } + DU_FREE(spCellLst->list.array,spCellLst->list.size); + } +} + /******************************************************************* + * + * @brief Deallocating memory of function BuildAndSendUESetReq + * + * @details + * + * Function : FreeSRBSetup + * + * Functionality: Deallocating memory for function BuildSRBSetup + * + * @params[in] SRBs_ToBeSetup_List_t *srbSet + * + * @return void + * + * + * ******************************************************************/ +void FreeSRBSetup(SRBs_ToBeSetup_List_t *srbSet) +{ + U8 srbidx; + if(srbSet->list.array != NULLP) + { + for(srbidx=0; srbidxlist.count; srbidx++) + { + if(srbSet->list.array[srbidx]!=NULLP) + { + DU_FREE(srbSet->list.array[srbidx],sizeof(SRBs_ToBeSetup_ItemIEs_t)); + } + } + DU_FREE(srbSet->list.array,srbSet->list.size); + } +} + /******************************************************************* + * + * @brief Deallocating memory of function BuildAndSendUESetReq + * + * @details + * + * Function : FreeQOSInfo + * + * Functionality: Deallocating memory for function BuildQOSInfo + * + * @params[in] QoSFlowLevelQoSParameters_t *drbQos + * + * @return void + * + * ****************************************************************/ +void FreeQOSInfo(QoSFlowLevelQoSParameters_t *drbQos) +{ + if(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI != NULLP) + { + if(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow!=NULLP) + { + if(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume!=NULLP) + { + DU_FREE(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume,\ + sizeof(MaxDataBurstVolume_t)); + } + DU_FREE(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow,\ + sizeof(AveragingWindow_t)); + } + DU_FREE(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI,\ + sizeof(NonDynamic5QIDescriptor_t)); + } +} + /******************************************************************* + * + * @brief Deallocating memory of function BuildAndSendUESetReq + * + * @details + * + * Function : FreeULTnlInfo + * + * Functionality: Deallocating memory for function BuildULTnlInfo + * + * @params[in] ULUPTNLInformation_ToBeSetup_List_t *ulInfo + * + * @return void + * + + * ****************************************************************/ +void FreeULTnlInfo(ULUPTNLInformation_ToBeSetup_List_t *ulInfo) +{ + U8 ulidx=0; + if(ulInfo->list.array != NULLP) + { + for(ulidx=0; ulidxlist.count; ulidx++) + { + if(ulidx==0&&ulInfo->list.array[ulidx]!=NULLP) + { + if(ulInfo->list.array[ulidx]->uLUPTNLInformation.choice.gTPTunnel!=NULLP) + { + if(ulInfo->list.array[ulidx]->uLUPTNLInformation.choice.gTPTunnel->\ + transportLayerAddress.buf != NULLP) + { + if(ulInfo->list.array[ulidx]->uLUPTNLInformation.choice.gTPTunnel->gTP_TEID.buf\ + !=NULLP) + { + DU_ALLOC(ulInfo->list.array[ulidx]->uLUPTNLInformation.choice.gTPTunnel->\ + gTP_TEID.buf,ulInfo->list.array[ulidx]->uLUPTNLInformation.choice.\ + gTPTunnel->gTP_TEID.size); + } + DU_FREE(ulInfo->list.array[ulidx]->uLUPTNLInformation.choice.gTPTunnel->\ + transportLayerAddress.buf,ulInfo->list.array[ulidx]->\ + uLUPTNLInformation.choice.gTPTunnel->transportLayerAddress.size); + } + DU_FREE(ulInfo->list.array[ulidx]->uLUPTNLInformation.choice.gTPTunnel,\ + sizeof(GTPTunnel_t)); + } + } + if(ulInfo->list.array[ulidx]!=NULLP) + { + DU_FREE(ulInfo->list.array[ulidx],sizeof(ULUPTNLInformation_ToBeSetup_Item_t)); + } + } + DU_FREE(ulInfo->list.array,ulInfo->list.size); + } +} +/******************************************************************* + * + * @brief Deallocating memory for BuildAndSendUESetReq + * + * @details + * + * Function : FreeDRBSetup + * + * Functionality: Deallocating memory for BuildDRBSetup + * + * @params[in] DRBs_ToBeSetup_List_t *drbSet + * + * @return void + * + * ****************************************************************/ +void FreeDRBSetup(DRBs_ToBeSetup_List_t *drbSet) +{ + DRBs_ToBeSetup_Item_t *drbSetItem; + U8 flowidx; + U8 drbidx; + if(drbSet->list.array == NULLP) + { + for(drbidx=0; drbidxlist.count; drbidx++) + { + if(drbidx==0&&drbSet->list.array[drbidx] != NULLP) + { + drbSetItem =&drbSet->list.array[drbidx]->value.choice.DRBs_ToBeSetup_Item; + if(drbSetItem->qoSInformation.choice.choice_extension != NULLP) + { + if(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.dRB_QoS.\ + qoS_Characteristics.choice.non_Dynamic_5QI !=NULLP) + { + if(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.dRB_QoS.\ + qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow!=NULLP) + { + if(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.dRB_QoS.\ + qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume!=NULLP) + { + if(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.sNSSAI.sST.buf!=NULLP) + { + if(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.sNSSAI.sD!=NULLP) + { + if(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.sNSSAI.sD->buf!=NULLP) + { + if(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.\ + flows_Mapped_To_DRB_List.list.array != NULLP) + { + for(flowidx=0;flowidxqoSInformation.choice.choice_extension->value.choice.DRB_Information.\ + flows_Mapped_To_DRB_List.list.count; flowidx++) + { + if(flowidx==0&&drbSetItem->qoSInformation.choice.choice_extension->value.choice.\ + DRB_Information.flows_Mapped_To_DRB_List.list.array[flowidx]!=NULLP) + { + if(drbSetItem->qoSInformation.choice.choice_extension->value.choice.\ + DRB_Information.flows_Mapped_To_DRB_List.list.array[flowidx]->qoSFlowLevelQoSParameters.\ + qoS_Characteristics.choice.non_Dynamic_5QI!=NULLP) + { + if(drbSetItem->qoSInformation.choice.choice_extension->value.choice.\ + DRB_Information.flows_Mapped_To_DRB_List.list.array[flowidx]->qoSFlowLevelQoSParameters.\ + qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow!=NULLP) + { + if(drbSetItem->qoSInformation.choice.choice_extension->value.choice.\ + DRB_Information.flows_Mapped_To_DRB_List.list.array[flowidx]->qoSFlowLevelQoSParameters.\ + qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume!=NULLP) + { + if((BuildULTnlInforet==ROK)&&(drbSetItem->uLConfiguration!=NULLP)) + { + DU_FREE(drbSetItem->uLConfiguration,sizeof(ULConfiguration_t)); + } + FreeULTnlInfo(&drbSetItem->uLUPTNLInformation_ToBeSetup_List); + DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.choice.\ + DRB_Information.flows_Mapped_To_DRB_List.list.array[flowidx]->qoSFlowLevelQoSParameters.\ + qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume,\ + sizeof(MaxDataBurstVolume_t)); + } + DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.choice.\ + DRB_Information.flows_Mapped_To_DRB_List.list.array[flowidx]->qoSFlowLevelQoSParameters.\ + qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow,sizeof(AveragingWindow_t)); + } + DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.choice.\ + DRB_Information.flows_Mapped_To_DRB_List.list.array[flowidx]->qoSFlowLevelQoSParameters.\ + qoS_Characteristics.choice.non_Dynamic_5QI,sizeof(NonDynamic5QIDescriptor_t)); + } + } + if(drbSetItem->qoSInformation.choice.choice_extension->value.choice.\ + DRB_Information.flows_Mapped_To_DRB_List.list.array[flowidx]!=NULLP) + { + DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.choice.\ + DRB_Information.flows_Mapped_To_DRB_List.list.array[flowidx],sizeof(Flows_Mapped_To_DRB_Item_t)); + } + } + DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.\ + flows_Mapped_To_DRB_List.list.array,drbSetItem->qoSInformation.choice.choice_extension->value.\ + choice.DRB_Information.flows_Mapped_To_DRB_List.list.size); + } + DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.sNSSAI.sD->buf,\ + drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.sNSSAI.sD->size); + } + DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.sNSSAI.sD,\ + sizeof(OCTET_STRING_t)); + } + DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.sNSSAI.sST.buf,\ + drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.sNSSAI.sST.size); + } + DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.dRB_QoS.\ + qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume,sizeof(MaxDataBurstVolume_t)); + } + DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.dRB_QoS.\ + qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow,sizeof(AveragingWindow_t)); + } + DU_FREE(drbSetItem->qoSInformation.choice.choice_extension->value.choice.DRB_Information.dRB_QoS.\ + qoS_Characteristics.choice.non_Dynamic_5QI, sizeof(NonDynamic5QIDescriptor_t)); + } + DU_FREE(drbSetItem->qoSInformation.choice.choice_extension,sizeof(QoSInformation_ExtIEs_t)); + } + } + if(drbSet->list.array[drbidx]!=NULLP) + { + DU_FREE(drbSet->list.array[drbidx],sizeof(DRBs_ToBeSetup_ItemIEs_t)); + } + } + DU_FREE(drbSet->list.array,drbSet->list.size); + } +} /******************************************************************* * * @brief Builds and sends the UE Setup Request @@ -3561,488 +2908,242 @@ S16 BuildAndSendUESetReq() { S16 ret; U8 elementCnt; - U8 cellCnt; - U8 ieId; + S16 BuildNrcgiret; + S16 BuildSplCellListret; + S16 BuildSRBSetupret; U8 idx; - U8 spId; - U8 srbCnt; - U8 srbId; - U8 drbCnt; - U8 drbId; - U8 flowidx; - U8 flowCnt; - U8 ulidx; - U8 ulCnt; + U8 idx1; + U8 ieId; F1AP_PDU_t *f1apMsg = NULL; UEContextSetupRequest_t *ueSetReq; asn_enc_rval_t encRetVal; /* Encoder return value */ - - DU_LOG("\n F1AP : Building UE Context Setup Request\n"); - - DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); - if(f1apMsg == NULLP) - { - DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); - return RFAILED; - } - - f1apMsg->present = F1AP_PDU_PR_initiatingMessage; - DU_ALLOC(f1apMsg->choice.initiatingMessage, - sizeof(InitiatingMessage_t)); - if(f1apMsg->choice.initiatingMessage == NULLP) + bool checkvar=false; + while(1) { - DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); - DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; - } + DU_LOG("\n F1AP : Building UE Context Setup Request\n"); + + DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); + if(f1apMsg == NULLP) + { + DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); + break; + } + + f1apMsg->present = F1AP_PDU_PR_initiatingMessage; + DU_ALLOC(f1apMsg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); + if(f1apMsg->choice.initiatingMessage == NULLP) + { + DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); + break; + } - f1apMsg->choice.initiatingMessage->procedureCode = \ + f1apMsg->choice.initiatingMessage->procedureCode = \ ProcedureCode_id_UEContextSetup; - f1apMsg->choice.initiatingMessage->criticality = Criticality_reject; - f1apMsg->choice.initiatingMessage->value.present = \ + f1apMsg->choice.initiatingMessage->criticality = Criticality_reject; + f1apMsg->choice.initiatingMessage->value.present = \ InitiatingMessage__value_PR_UEContextSetupRequest; - ueSetReq = - &f1apMsg->choice.initiatingMessage->value.choice.UEContextSetupRequest; - elementCnt = 9; - ueSetReq->protocolIEs.list.count = elementCnt; - ueSetReq->protocolIEs.list.size = \ + ueSetReq = + &f1apMsg->choice.initiatingMessage->value.choice.UEContextSetupRequest; + elementCnt = 9; + ueSetReq->protocolIEs.list.count = elementCnt; + ueSetReq->protocolIEs.list.size = \ elementCnt * sizeof(UEContextSetupRequestIEs_t *); - /* Initialize the UESetup members */ - DU_ALLOC(ueSetReq->protocolIEs.list.array, \ - elementCnt * sizeof(UEContextSetupRequestIEs_t *)); - if(ueSetReq->protocolIEs.list.array == NULLP) - { - DU_LOG(" F1AP : Memory allocation for UE Context SetupRequest failed"); - DU_FREE(f1apMsg->choice.initiatingMessage, - sizeof(InitiatingMessage_t)); - DU_FREE(f1apMsg,(Size)sizeof(F1AP_PDU_t)); - return RFAILED; - } + /* Initialize the UESetup members */ + DU_ALLOC(ueSetReq->protocolIEs.list.array,ueSetReq->protocolIEs.list.size); + + if(ueSetReq->protocolIEs.list.array == NULLP) + { + DU_LOG(" F1AP : Memory allocation for UE Context SetupRequest failed"); + break; + } - for(idx=0; idxprotocolIEs.list.array[idx],\ - sizeof(UEContextSetupRequestIEs_t)); - if(ueSetReq->protocolIEs.list.array[idx] == NULLP) - { - for(ieId=0; ieIdprotocolIEs.list.array[ieId],\ - sizeof(UEContextSetupRequestIEs_t)); - } - DU_FREE(ueSetReq->protocolIEs.list.array,\ - elementCnt * sizeof(UEContextSetupRequestIEs_t *)); - DU_FREE(f1apMsg->choice.initiatingMessage,\ - sizeof(InitiatingMessage_t)); - DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; - } - } + for(idx1=0; idx1protocolIEs.list.array[idx1],sizeof(UEContextSetupRequestIEs_t)); + if(ueSetReq->protocolIEs.list.array[idx1] == NULLP) + { + break; + } + } - idx = 0; + idx = 0; - /*GNB CU UE F1AP ID*/ - ueSetReq->protocolIEs.list.array[idx]->id = \ + /*GNB CU UE F1AP ID*/ + ueSetReq->protocolIEs.list.array[idx]->id = \ ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID; - ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_reject; - ueSetReq->protocolIEs.list.array[idx]->value.present = \ + ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_reject; + ueSetReq->protocolIEs.list.array[idx]->value.present = \ UEContextSetupRequestIEs__value_PR_GNB_CU_UE_F1AP_ID; - ueSetReq->protocolIEs.list.array[idx]->value.choice.GNB_CU_UE_F1AP_ID = CU_ID; + ueSetReq->protocolIEs.list.array[idx]->value.choice.GNB_CU_UE_F1AP_ID = CU_ID; - /*GNB DU UE F1AP ID*/ - idx++; - ueSetReq->protocolIEs.list.array[idx]->id = \ + /*GNB DU UE F1AP ID*/ + idx++; + ueSetReq->protocolIEs.list.array[idx]->id = \ ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID; - ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_ignore; - ueSetReq->protocolIEs.list.array[idx]->value.present = \ + ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_ignore; + ueSetReq->protocolIEs.list.array[idx]->value.present = \ UEContextSetupRequestIEs__value_PR_GNB_DU_UE_F1AP_ID; - ueSetReq->protocolIEs.list.array[idx]->value.choice.GNB_DU_UE_F1AP_ID = DU_ID; + ueSetReq->protocolIEs.list.array[idx]->value.choice.GNB_DU_UE_F1AP_ID = DU_ID; - /*Special Cell ID*/ - idx++; - ueSetReq->protocolIEs.list.array[idx]->id = \ + /*Special Cell ID*/ + idx++; + ueSetReq->protocolIEs.list.array[idx]->id = \ ProtocolIE_ID_id_SpCell_ID; - ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_reject; - ueSetReq->protocolIEs.list.array[idx]->value.present = \ + ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_reject; + ueSetReq->protocolIEs.list.array[idx]->value.present = \ UEContextSetupRequestIEs__value_PR_NRCGI; - ret = \ - BuildNrcgi(&ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI); - if(ret != ROK) - { - idx =2; - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\ - nRCellIdentity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\ - choice.NRCGI.nRCellIdentity.size)); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\ - pLMN_Identity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\ - choice.NRCGI.pLMN_Identity.size)); - for(idx=0; idxprotocolIEs.list.array[idx],\ - sizeof(InitialULRRCMessageTransferIEs_t)); - } - DU_FREE(ueSetReq->protocolIEs.list.array,\ - elementCnt * sizeof(InitialULRRCMessageTransferIEs_t *)); - DU_FREE(f1apMsg->choice.initiatingMessage,\ - sizeof(InitiatingMessage_t)); - DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; - - } - - /*Served Cell Index*/ - idx++; - ueSetReq->protocolIEs.list.array[idx]->id = \ + BuildNrcgiret = BuildNrcgi(&ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI); + if(BuildNrcgiret != ROK) + { + break; + } + + /*Served Cell Index*/ + idx++; + ueSetReq->protocolIEs.list.array[idx]->id = \ ProtocolIE_ID_id_ServCellIndex; - ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_reject; - ueSetReq->protocolIEs.list.array[idx]->value.present = \ + ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_reject; + ueSetReq->protocolIEs.list.array[idx]->value.present = \ UEContextSetupRequestIEs__value_PR_ServCellIndex; - ueSetReq->protocolIEs.list.array[idx]->value.choice.ServCellIndex = \ - CELL_INDEX; + ueSetReq->protocolIEs.list.array[idx]->value.choice.ServCellIndex = \ + CELL_INDEX; - /*CellULConfigured*/ - idx++; - ueSetReq->protocolIEs.list.array[idx]->id = \ + /*CellULConfigured*/ + idx++; + ueSetReq->protocolIEs.list.array[idx]->id = \ ProtocolIE_ID_id_SpCellULConfigured; - ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_ignore; - ueSetReq->protocolIEs.list.array[idx]->value.present = \ + ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_ignore; + ueSetReq->protocolIEs.list.array[idx]->value.present = \ UEContextSetupRequestIEs__value_PR_CellULConfigured; - ueSetReq->protocolIEs.list.array[idx]->value.choice.CellULConfigured = \ + ueSetReq->protocolIEs.list.array[idx]->value.choice.CellULConfigured = \ CellULConfigured_none; - /*CUtoDURRCContainer*/ - idx++; - ueSetReq->protocolIEs.list.array[idx]->id = \ + /*CUtoDURRCContainer*/ + idx++; + ueSetReq->protocolIEs.list.array[idx]->id = \ ProtocolIE_ID_id_CUtoDURRCInformation; - ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_reject; - ueSetReq->protocolIEs.list.array[idx]->value.present = \ + ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_reject; + ueSetReq->protocolIEs.list.array[idx]->value.present = \ UEContextSetupRequestIEs__value_PR_CUtoDURRCInformation; - /*Special Cells to be SetupList*/ - idx++; - ueSetReq->protocolIEs.list.array[idx]->id = \ + /*Special Cells to be SetupList*/ + idx++; + ueSetReq->protocolIEs.list.array[idx]->id = \ ProtocolIE_ID_id_SCell_ToBeSetup_List; - ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_ignore; - ueSetReq->protocolIEs.list.array[idx]->value.present = \ + ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_ignore; + ueSetReq->protocolIEs.list.array[idx]->value.present = \ UEContextSetupRequestIEs__value_PR_SCell_ToBeSetup_List; - cellCnt = 1; - ret = BuildSplCellList(&ueSetReq->protocolIEs.\ - list.array[idx]->value.choice.SCell_ToBeSetup_List); - if(ret != ROK) - { idx=6; - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[0]->value.choice.\ - SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.buf,\ - ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[0]->value.choice.\ - SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.size); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[0]->value.choice.\ - SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.buf,\ - ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[0]->value.choice.\ - SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.size); - for(spId=0; spIdprotocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[spId],sizeof( - SCell_ToBeSetup_ItemIEs_t)); - } - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\ - array[idx]->value.choice.SCell_ToBeSetup_List.list.size); - idx =2; - idx=idx-4; - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\ - nRCellIdentity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\ - choice.NRCGI.nRCellIdentity.size)); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\ - pLMN_Identity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\ - choice.NRCGI.pLMN_Identity.size)); - for(idx=0; idxprotocolIEs.list.array[idx],\ - sizeof(UEContextSetupRequestIEs_t)); - } - DU_FREE(ueSetReq->protocolIEs.list.array,\ - elementCnt * sizeof(UEContextSetupRequestIEs_t *)); - DU_FREE(f1apMsg->choice.initiatingMessage,\ - sizeof(InitiatingMessage_t)); - DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; - } - /*SRBs To Be Setup List*/ - idx++; - ueSetReq->protocolIEs.list.array[idx]->id = \ + BuildSplCellListret = BuildSplCellList(&ueSetReq->protocolIEs.list.array[idx]->value.choice.SCell_ToBeSetup_List); + if(BuildSplCellListret != ROK) + { + break; + } + /*SRBs To Be Setup List*/ + idx++; + ueSetReq->protocolIEs.list.array[idx]->id = \ ProtocolIE_ID_id_SRBs_ToBeSetup_List; - ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_reject; - ueSetReq->protocolIEs.list.array[idx]->value.present = \ + ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_reject; + ueSetReq->protocolIEs.list.array[idx]->value.present = \ UEContextSetupRequestIEs__value_PR_SRBs_ToBeSetup_List; - srbCnt = 1; - ret = BuildSRBSetup(&ueSetReq->protocolIEs.list.array[idx]->value.\ - choice.SRBs_ToBeSetup_List); - if(ret != ROK) - { - idx =7; - for(srbId=0; srbIdprotocolIEs.list.array[idx]->value.choice.\ - SRBs_ToBeSetup_List.list.array[srbId],\ - sizeof(SRBs_ToBeSetup_ItemIEs_t)); - } - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SRBs_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\ - array[idx]->value.choice.SRBs_ToBeSetup_List.list.size); - idx=6; - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[0]->value.choice.\ - SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.buf,\ - ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[0]->value.choice.\ - SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.size); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[0]->value.choice.\ - SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.buf,\ - ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[0]->value.choice.\ - SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.size); - for(spId=0; spIdprotocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[spId],sizeof(\ - SCell_ToBeSetup_ItemIEs_t)); - } - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\ - array[idx]->value.choice.SCell_ToBeSetup_List.list.size); - idx=2; - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\ - nRCellIdentity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\ - choice.NRCGI.nRCellIdentity.size)); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\ - pLMN_Identity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\ - choice.NRCGI.pLMN_Identity.size)); - for(idx=0; idxprotocolIEs.list.array[idx],\ - sizeof(UEContextSetupRequestIEs_t)); - } - DU_FREE(ueSetReq->protocolIEs.list.array,\ - elementCnt * sizeof(UEContextSetupRequestIEs_t *)); - DU_FREE(f1apMsg->choice.initiatingMessage,\ - sizeof(InitiatingMessage_t)); - DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; - } - /*DRBs to Be Setup List*/ - idx++; - ueSetReq->protocolIEs.list.array[idx]->id = \ + BuildSRBSetupret = BuildSRBSetup(&ueSetReq->protocolIEs.list.array[idx]->value.choice.SRBs_ToBeSetup_List); + if(BuildSRBSetupret != ROK) + { + break; + } + /*DRBs to Be Setup List*/ + idx++; + ueSetReq->protocolIEs.list.array[idx]->id = \ ProtocolIE_ID_id_DRBs_ToBeSetup_List; - ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_reject; - ueSetReq->protocolIEs.list.array[idx]->value.present = \ + ueSetReq->protocolIEs.list.array[idx]->criticality = Criticality_reject; + ueSetReq->protocolIEs.list.array[idx]->value.present = \ UEContextSetupRequestIEs__value_PR_DRBs_ToBeSetup_List; - drbCnt = 1; - flowCnt = 1; - ulCnt = 1; - ret = BuildDRBSetup(&ueSetReq->protocolIEs.list.array[idx]->value.\ - choice.DRBs_ToBeSetup_List); - if(ret != ROK) - { idx=8; - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.uLConfiguration,\ - sizeof(ULConfiguration_t)); - ulidx=0; - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.uLUPTNLInformation_ToBeSetup_List.list.\ - array[ulidx]->uLUPTNLInformation.choice.gTPTunnel,\ - sizeof(GTPTunnel_t)); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.uLUPTNLInformation_ToBeSetup_List.list.\ - array,ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.uLUPTNLInformation_ToBeSetup_List.list.size); - for(ulidx=0; ulidxprotocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.uLUPTNLInformation_ToBeSetup_List.list.\ - array[ulidx],sizeof(ULUPTNLInformation_ToBeSetup_Item_t)); - } - flowidx = 0; - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension->value.choice.DRB_Information.\ - flows_Mapped_To_DRB_List.list.array[idx]->qoSFlowLevelQoSParameters.\ - qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow,\ - sizeof(AveragingWindow_t)); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension->value.choice.DRB_Information.\ - flows_Mapped_To_DRB_List.list.array[idx]->qoSFlowLevelQoSParameters.\ - qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume,\ - sizeof(MaxDataBurstVolume_t)); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension->value.choice.DRB_Information.\ - flows_Mapped_To_DRB_List.list.array,ueSetReq->protocolIEs.list.\ - array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension->value.choice.DRB_Information.\ - flows_Mapped_To_DRB_List.list.size); - for(flowidx=0;flowidxprotocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension->value.choice.DRB_Information.\ - flows_Mapped_To_DRB_List.list.array[flowidx],sizeof( - Flows_Mapped_To_DRB_Item_t)); - } - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension->value.choice.DRB_Information.sNSSAI.\ - sD->buf,ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension->value.choice.DRB_Information.sNSSAI.\ - sD->size); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension->value.choice.DRB_Information.sNSSAI.\ - sD,sizeof(OCTET_STRING_t)); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension->value.choice.DRB_Information.sNSSAI.\ - sST.buf,ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension->value.choice.DRB_Information.sNSSAI.\ - sST.size); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension->value.choice.DRB_Information.dRB_QoS.\ - qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume,\ - sizeof(MaxDataBurstVolume_t)); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension->value.choice.DRB_Information.dRB_QoS.\ - qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow,\ - sizeof(AveragingWindow_t)); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension->value.choice.DRB_Information.dRB_QoS.\ - qoS_Characteristics.choice.non_Dynamic_5QI,\ - sizeof(NonDynamic5QIDescriptor_t)); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[0]->value.choice.\ - DRBs_ToBeSetup_Item.qoSInformation.choice.\ - choice_extension,sizeof(QoSInformation_ExtIEs_t)); - for(drbId=0; drbIdprotocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array[drbId],\ - sizeof(DRBs_ToBeSetup_ItemIEs_t)); - } - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - DRBs_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\ - array[idx]->value.choice.DRBs_ToBeSetup_List.list.size); - idx=7; - for(srbId=0; srbIdprotocolIEs.list.array[idx]->value.choice.\ - SRBs_ToBeSetup_List.list.array[srbId],\ - sizeof(SRBs_ToBeSetup_ItemIEs_t)); - } - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SRBs_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\ - array[idx]->value.choice.SRBs_ToBeSetup_List.list.size); - idx=6; - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[0]->value.choice.\ - SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.buf,\ - ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[0]->value.choice.\ - SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.size); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[0]->value.choice.\ - SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.buf,\ - ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[0]->value.choice.\ - SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.size); - for(spId=0; spIdprotocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array[spId],sizeof(\ - SCell_ToBeSetup_ItemIEs_t)); - } - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\ - SCell_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\ - array[idx]->value.choice.SCell_ToBeSetup_List.list.size); - idx =2; - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\ - nRCellIdentity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\ - choice.NRCGI.nRCellIdentity.size)); - DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\ - pLMN_Identity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\ - choice.NRCGI.pLMN_Identity.size)); - for(idx=0; idxprotocolIEs.list.array[idx],\ - sizeof(UEContextSetupRequestIEs_t)); - } - DU_FREE(ueSetReq->protocolIEs.list.array,\ - elementCnt * sizeof(UEContextSetupRequestIEs_t *)); - DU_FREE(f1apMsg->choice.initiatingMessage,\ - sizeof(InitiatingMessage_t)); - DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; - } - - xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); - - /* Encode the F1SetupRequest type as APER */ - cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); - encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf,\ + ret = BuildDRBSetup(&ueSetReq->protocolIEs.list.array[idx]->value.choice.DRBs_ToBeSetup_List); + if(ret != ROK) + { + break; + } + + xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); + + /* Encode the F1SetupRequest type as APER */ + cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf,\ encBuf); - /* Encode results */ - if(encRetVal.encoded == ENCODE_FAIL) - { - DU_LOG( "\n F1AP : Could not encode UE Context Setup Request structure (at %s)\n",\ + /* Encode results */ + if(encRetVal.encoded == ENCODE_FAIL) + { + DU_LOG( "\n F1AP : Could not encode UE Context Setup Request structure (at %s)\n",\ encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - return RFAILED; - } - else - { - DU_LOG("\n F1AP : Created APER encoded buffer for UE Context Setup Request\n"); - for(int i=0; i< encBufSize; i++) - { - printf("%x",encBuf[i]); - } - } - - /* Sending msg */ - if(SendF1APMsg(DU_APP_MEM_REGION,DU_POOL) != ROK) + break; + } + else + { + DU_LOG("\n F1AP : Created APER encoded buffer for UE Context Setup Request\n"); + for(int i=0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } + } + + /* Sending msg */ + if(SendF1APMsg(DU_APP_MEM_REGION,DU_POOL) != ROK) + { + DU_LOG("\n F1AP : Sending UE Context Setup Request Failed"); + break; + } + checkvar=true; + break; + } + if(f1apMsg != NULLP) { - DU_LOG("\n F1AP : Sending UE Context Setup Request Failed"); - return RFAILED; + if(f1apMsg->choice.initiatingMessage != NULLP) + { + if(ueSetReq->protocolIEs.list.array != NULLP) + { + if(idx1==elementCnt) + { + if(BuildNrcgiret==ROK) + { + if(BuildSplCellListret==ROK) + { + if(BuildSRBSetupret == ROK) + { + FreeDRBSetup(&ueSetReq->protocolIEs.list.array[idx--]->value.choice.DRBs_ToBeSetup_List); + } + FreeSRBSetup(&ueSetReq->protocolIEs.list.array[idx--]->value.choice.SRBs_ToBeSetup_List); + } + FreeSplCellList(&ueSetReq->protocolIEs.list.array[idx]->value.choice.SCell_ToBeSetup_List); + } + idx=2; + FreeNrcgi(&ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI); + for(ieId=0; ieIdprotocolIEs.list.array[ieId],sizeof(UEContextSetupRequestIEs_t)); + } + } + else + { + for(ieId=0; ieIdprotocolIEs.list.array[ieId] != NULLP) + { + DU_FREE(ueSetReq->protocolIEs.list.array[ieId],sizeof(UEContextSetupRequestIEs_t)); + } + } + } + DU_FREE(ueSetReq->protocolIEs.list.array,ueSetReq->protocolIEs.list.size); + } + DU_FREE(f1apMsg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); + } + DU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); } + if(checkvar==true) return ROK; + else + return RFAILED; }/* End of BuildAndSendUESetReq*/ /*******************************************************************