From b5b72edf4ea89b4064284c63dfa936b1c24718d6 Mon Sep 17 00:00:00 2001 From: Priyanka Borla Date: Tue, 21 Nov 2023 12:50:02 +0000 Subject: [PATCH] Revert "[Epic-ID: ODUHIGH-516][Task-ID: ODUHIGH-530] RIC Subscription Delete Req" This reverts commit 0992b1493542e0771a54b66d595166ca30f5c881. Reason for revert: Incorrect commit message Change-Id: Ifa9dc312bd34cd3cd192cd1012505ed082e68cba Signed-off-by: pborla --- src/du_app/du_e2ap_msg_hdl.c | 278 ------------------ src/ric_stub/ric_e2ap_msg_hdl.c | 603 +--------------------------------------- src/ric_stub/ric_e2ap_msg_hdl.h | 11 +- src/ric_stub/ric_stub.h | 16 -- 4 files changed, 4 insertions(+), 904 deletions(-) diff --git a/src/du_app/du_e2ap_msg_hdl.c b/src/du_app/du_e2ap_msg_hdl.c index fe4462497..bddc73b81 100644 --- a/src/du_app/du_e2ap_msg_hdl.c +++ b/src/du_app/du_e2ap_msg_hdl.c @@ -9434,278 +9434,6 @@ void procE2ConnectionUpdate(E2AP_PDU_t *e2apMsg) freeAperDecodingOfE2ConnectionUpdate(connectionUpdate); } -/******************************************************************* - * - * @brief Free RIC Subscription action to be added list - * - * @details - * - * Function : freeAperDecodingOfRicSubsActionToBeAdded - * - * Functionality: Free the RIC Subscription action to be added list - * - * @params[in] RICactions_ToBeAddedForModification_List_t *subsDetails - * @return void - * - * ****************************************************************/ -void freeAperDecodingOfRicSubsActionToBeAdded(RICactions_ToBeAddedForModification_List_t *subsDetails) -{ - uint8_t elementIdx = 0; - RICaction_ToBeAddedForModification_ItemIEs_t *addedActionItemIe=NULLP; - - if(subsDetails->list.array) - { - for(elementIdx = 0; elementIdx < subsDetails->list.count; elementIdx++) - { - if(subsDetails->list.array[elementIdx]) - { - addedActionItemIe = (RICaction_ToBeAddedForModification_ItemIEs_t*)subsDetails->list.array[elementIdx]; - free(addedActionItemIe->value.choice.RICaction_ToBeAddedForModification_Item.ricActionDefinition.buf); - free(subsDetails->list.array[elementIdx]); - } - } - free(subsDetails->list.array); - } -} - -/******************************************************************* - * - * @brief Deallocation of memory allocated by aper decoder for - * RIC Subscription action to be removed list - * - * @details - * - * Function : freeAperDecodingOfRicSubsActionToBeRemoved - * - * Functionality: Free the RIC Subscription action to be removed list - * - * @params[in] RICactions_ToBeRemovedForModification_List_t *subsDetails - * @return void - * - * ****************************************************************/ -void freeAperDecodingOfRicSubsActionToBeRemoved(RICactions_ToBeRemovedForModification_List_t *subsDetails) -{ - uint8_t elementIdx = 0; - - if(subsDetails->list.array) - { - for(elementIdx = 0; elementIdx < subsDetails->list.count; elementIdx++) - { - if(subsDetails->list.array[elementIdx]) - { - free(subsDetails->list.array[elementIdx]); - } - } - free(subsDetails->list.array); - } -} - -/******************************************************************* - * - * @brief Deallocation of memory allocated by aper decoder for - * RIC Subscription action to be modify - * - * @details - * - * Function : freeAperDecodingOfRicSubsActionToBeModified - * - * Functionality: Free the RIC Subscription action to be modify - * - * @params[in] RICactions_ToBeModifiedForModification_List_t List - * @return void - * - * ****************************************************************/ -void freeAperDecodingOfRicSubsActionToBeModified(RICactions_ToBeModifiedForModification_List_t *subsDetails) -{ - uint8_t elementIdx = 0; - RICaction_ToBeModifiedForModification_ItemIEs_t *actionItem = NULLP; - - if(subsDetails->list.array) - { - for(elementIdx = 0; elementIdx < subsDetails->list.count; elementIdx++) - { - if(subsDetails->list.array[elementIdx]) - { - actionItem = (RICaction_ToBeModifiedForModification_ItemIEs_t *)subsDetails->list.array[elementIdx]; - if(actionItem->value.choice.RICaction_ToBeModifiedForModification_Item.ricActionDefinition) - { - free(actionItem->value.choice.RICaction_ToBeModifiedForModification_Item.ricActionDefinition->buf); - free(actionItem->value.choice.RICaction_ToBeModifiedForModification_Item.ricActionDefinition); - } - free(subsDetails->list.array[elementIdx]); - } - } - free(subsDetails->list.array); - } -} - -/******************************************************************* - * - * @brief Deallocation of memory allocated by aper decoder for - * RIC Subscription modification Request - * - * @details - * - * Function freeAperDecodingOfRicSubsModificationReq - * - * Functionality : Free RIC Subscription modification Request - * - * @params[in] E2AP_PDU - * @return void - * - ******************************************************************/ -void freeAperDecodingOfRicSubsModificationReq(E2AP_PDU_t *e2apRicMsg) -{ - uint8_t idx = 0; - RICsubscriptionModificationRequest_t *ricSubscriptionModReq; - RICsubscriptionModificationRequest_IEs_t *ricSubscriptionModReqIe; - - ricSubscriptionModReq = &e2apRicMsg->choice.initiatingMessage->value.choice.RICsubscriptionModificationRequest; - - if(ricSubscriptionModReq->protocolIEs.list.array) - { - for(idx=0; idx < ricSubscriptionModReq->protocolIEs.list.count; idx++) - { - if(ricSubscriptionModReq->protocolIEs.list.array[idx]) - { - ricSubscriptionModReqIe = ricSubscriptionModReq->protocolIEs.list.array[idx]; - - switch(ricSubscriptionModReq->protocolIEs.list.array[idx]->id) - { - case ProtocolIE_IDE2_id_RICrequestID: - break; - - case ProtocolIE_IDE2_id_RANfunctionID: - break; - - case ProtocolIE_IDE2_id_RICactionsToBeRemovedForModification_List: - { - freeAperDecodingOfRicSubsActionToBeRemoved(&(ricSubscriptionModReqIe->value.choice.RICactions_ToBeRemovedForModification_List)); - break; - } - case ProtocolIE_IDE2_id_RICactionsToBeModifiedForModification_List: - { - freeAperDecodingOfRicSubsActionToBeModified(&(ricSubscriptionModReqIe->value.choice.RICactions_ToBeModifiedForModification_List)); - break; - } - case ProtocolIE_IDE2_id_RICactionsToBeAddedForModification_List: - { - freeAperDecodingOfRicSubsActionToBeAdded(&(ricSubscriptionModReqIe->value.choice.RICactions_ToBeAddedForModification_List)); - break; - } - default: - { - DU_LOG("\nERROR --> E2AP : Received Invalid Ie [%ld]", ricSubscriptionModReq->protocolIEs.list.array[idx]->id); - break; - } - - } - - free(ricSubscriptionModReq->protocolIEs.list.array[idx]); - } - } - free(ricSubscriptionModReq->protocolIEs.list.array); - } -} - -/******************************************************************* - * - * @brief Process RIC Subscription modification request - * - * @details - * - * Function : procRicSubscriptionModificationRequest - * - * Functionality: Process RIC subscription modification request. - * - * @params[in] E2AP PDU - * @return void - * - ******************************************************************/ -void procRicSubscriptionModificationRequest(E2AP_PDU_t *e2apMsg) -{ - uint8_t ieIdx = 0; - uint16_t ranFuncId = 0; - bool procFailure = false; - RicRequestId ricReqId; - RanFunction *ranFuncDb = NULLP; - CmLList *ricSubsNode = NULLP; - RicSubscription *ricSubsDb = NULLP; - RICsubscriptionModificationRequest_t *ricSubsModifyReq = NULLP; - RICsubscriptionModificationRequest_IEs_t *ricSubsModifyReqIe = NULLP; - - DU_LOG("\nINFO --> E2AP : %s: Received RIC Subscription Modification Request", __func__); - - do{ - if(!e2apMsg) - { - DU_LOG("\nERROR --> E2AP : %s: E2AP Message is NULL", __func__); - break; - } - - if(!e2apMsg->choice.initiatingMessage) - { - DU_LOG("\nERROR --> E2AP : %s: Initiating Message in E2AP PDU is NULL", __func__); - break; - } - - ricSubsModifyReq = &e2apMsg->choice.initiatingMessage->value.choice.RICsubscriptionModificationRequest; - for(ieIdx = 0; ieIdx < ricSubsModifyReq->protocolIEs.list.count; ieIdx++) - { - if(!ricSubsModifyReq->protocolIEs.list.array[ieIdx]) - { - DU_LOG("\nERROR --> E2AP : %s: IE at index [%d] in E2AP message IEs list is null", __func__, ieIdx); - break; - } - - ricSubsModifyReqIe = ricSubsModifyReq->protocolIEs.list.array[ieIdx]; - switch(ricSubsModifyReqIe->id) - { - case ProtocolIE_IDE2_id_RICrequestID: - { - memset(&ricReqId, 0, sizeof(RicRequestId)); - ricReqId.requestorId = ricSubsModifyReqIe->value.choice.RICrequestID.ricRequestorID; - ricReqId.instanceId = ricSubsModifyReqIe->value.choice.RICrequestID.ricInstanceID; - break; - } - - case ProtocolIE_IDE2_id_RANfunctionID: - { - ranFuncId = ricSubsModifyReqIe->value.choice.RANfunctionID; - ranFuncDb = fetchRanFuncFromRanFuncId(ranFuncId); - if(!ranFuncDb) - { - DU_LOG("\nERROR --> E2AP : %s: RAN Function ID [%d] not found", __func__, ranFuncId); - procFailure = true; - break; - } - - ricSubsDb = fetchSubsInfoFromRicReqId(ricReqId, ranFuncDb, &ricSubsNode); - if(!ricSubsDb) - { - DU_LOG("\nERROR --> E2AP : %s: RIC Subscription not found for Requestor_ID [%d] Instance_ID [%d]",\ - __func__, ricReqId.requestorId, ricReqId.instanceId); - procFailure = true; - break; - } - - break; - } - - default: - break; - } /* End of switch for Protocol IE Id */ - - if(procFailure) - break; - } /* End of for loop for Protocol IE list */ - - break; - }while(true); - - freeAperDecodingOfRicSubsModificationReq(e2apMsg); -} - /******************************************************************* * * @brief Handles received E2AP message and sends back response @@ -9906,12 +9634,6 @@ void E2APMsgHdlr(Buffer *mBuf) procE2ConnectionUpdate(e2apMsg); break; } - case InitiatingMessageE2__value_PR_RICsubscriptionModificationRequest: - { - DU_LOG("\nINFO --> E2AP : RIC Subscription Modification Request received"); - procRicSubscriptionModificationRequest(e2apMsg); - break; - } default: { DU_LOG("\nERROR --> E2AP : Invalid type of E2AP_PDU_PR_initiatingMessage [%d]",\ diff --git a/src/ric_stub/ric_e2ap_msg_hdl.c b/src/ric_stub/ric_e2ap_msg_hdl.c index b73965834..f9540ce22 100644 --- a/src/ric_stub/ric_e2ap_msg_hdl.c +++ b/src/ric_stub/ric_e2ap_msg_hdl.c @@ -1784,7 +1784,7 @@ void FreeRicActionDefinition(E2SM_KPM_ActionDefinition_t actionDef) * RFAILED * * ****************************************************************/ -uint8_t fillRicActionDef(RICactionDefinition_t *ricActionDef, uint8_t ricActionId, ConfigType configType) +uint8_t fillRicActionDef(RICactionDefinition_t *ricActionDef) { uint8_t ret = RFAILED; asn_enc_rval_t encRetVal; @@ -1850,8 +1850,7 @@ uint8_t fillRicActionDef(RICactionDefinition_t *ricActionDef, uint8_t ricActionI break; /* Granularity Period */ - actionFormat1->granulPeriod = RIC_ACTION_GRANULARITY_PERIOD(configType, ricActionId); /* In ms */ - DU_LOG("\nPBORLA configType %d ricActionId %d, actionFormat1->granulPeriod %d", configType, ricActionId, actionFormat1->granulPeriod ); + actionFormat1->granulPeriod = RIC_ACTION_GRANULARITY_PERIOD; /* In ms */ /* Prints the Msg formed */ xer_fprint(stdout, &asn_DEF_E2SM_KPM_ActionDefinition, &actionDef); @@ -1933,7 +1932,7 @@ uint8_t fillActionToBeSetup(RICaction_ToBeSetup_ItemIEs_t *actionItem, RicSubscr DU_LOG("\nERROR --> E2AP : Memory allocation failed at [%s] : line [%d]", __func__, __LINE__); break; } - if(fillRicActionDef(actionItem->value.choice.RICaction_ToBeSetup_Item.ricActionDefinition, ricActionId, CONFIG_ADD) != ROK) + if(fillRicActionDef(actionItem->value.choice.RICaction_ToBeSetup_Item.ricActionDefinition) != ROK) { DU_LOG("\nERROR --> E2AP : Failed at [%s] : line [%d]", __func__, __LINE__); break; @@ -7221,602 +7220,6 @@ void ProcRicSubsDeleteRsp(uint32_t duId, RICsubscriptionDeleteResponse_t *ricSub } } -/******************************************************************* - * - * @brief Free RIC Subscription action to be added list - * - * @details - * - * Function : FreeRicSubsActionToBeAdded - * - * Functionality: Free the RIC Subscription action to be added list - * - * @params[in] RICactions_ToBeAddedForModification_List_t *subsDetails - * @return void - * - * ****************************************************************/ -void FreeRicSubsActionToBeAdded(RICactions_ToBeAddedForModification_List_t *subsDetails) -{ - uint8_t elementIdx = 0; - RICaction_ToBeAddedForModification_ItemIEs_t *addedActionItemIe=NULLP; - - if(subsDetails->list.array) - { - for(elementIdx = 0; elementIdx < subsDetails->list.count; elementIdx++) - { - if(subsDetails->list.array[elementIdx]) - { - addedActionItemIe = (RICaction_ToBeAddedForModification_ItemIEs_t*)subsDetails->list.array[elementIdx]; - RIC_FREE(addedActionItemIe->value.choice.RICaction_ToBeAddedForModification_Item.ricActionDefinition.buf, \ - addedActionItemIe->value.choice.RICaction_ToBeAddedForModification_Item.ricActionDefinition.size); - RIC_FREE(subsDetails->list.array[elementIdx], sizeof(RICaction_ToBeAddedForModification_ItemIEs_t)); - } - } - RIC_FREE(subsDetails->list.array, subsDetails->list.size); - } -} - -/******************************************************************* - * - * @brief Free RIC Subscription action to be removed list - * - * @details - * - * Function : FreeRicSubsActionToBeRemoved - * - * Functionality: Free the RIC Subscription action to be removed list - * - * @params[in] RICactions_ToBeRemovedForModification_List_t *subsDetails - * @return void - * - * ****************************************************************/ -void FreeRicSubsActionToBeRemoved(RICactions_ToBeRemovedForModification_List_t *subsDetails) -{ - uint8_t elementIdx = 0; - - if(subsDetails->list.array) - { - for(elementIdx = 0; elementIdx < subsDetails->list.count; elementIdx++) - { - RIC_FREE(subsDetails->list.array[elementIdx], sizeof(RICaction_ToBeRemovedForModification_ItemIEs_t)); - } - RIC_FREE(subsDetails->list.array, subsDetails->list.size); - } -} - -/******************************************************************* - * - * @brief Free RIC Subscription action to be modify - * - * @details - * - * Function : FreeRicSubsActionToBeModified - * - * Functionality: Free the RIC Subscription action to be modify - * - * @params[in] RICactions_ToBeModifiedForModification_List_t List - * @return void - * - * ****************************************************************/ -void FreeRicSubsActionToBeModified(RICactions_ToBeModifiedForModification_List_t *subsDetails) -{ - uint8_t elementIdx = 0; - RICaction_ToBeModifiedForModification_ItemIEs_t *actionItem = NULLP; - - if(subsDetails->list.array) - { - for(elementIdx = 0; elementIdx < subsDetails->list.count; elementIdx++) - { - if(subsDetails->list.array[elementIdx]) - { - actionItem = (RICaction_ToBeModifiedForModification_ItemIEs_t *)subsDetails->list.array[elementIdx]; - if(actionItem->value.choice.RICaction_ToBeModifiedForModification_Item.ricActionDefinition) - { - RIC_FREE(actionItem->value.choice.RICaction_ToBeModifiedForModification_Item.ricActionDefinition->buf, \ - actionItem->value.choice.RICaction_ToBeModifiedForModification_Item.ricActionDefinition->size); - RIC_FREE(actionItem->value.choice.RICaction_ToBeModifiedForModification_Item.ricActionDefinition, sizeof(RICactionDefinition_t)); - } - RIC_FREE(subsDetails->list.array[elementIdx], sizeof(RICaction_ToBeModifiedForModification_ItemIEs_t)) - } - } - RIC_FREE(subsDetails->list.array, subsDetails->list.size); - } -} - -/******************************************************************* - * - * @brief Free RIC Subscription modification Request - * - * @details - * - * Function :FreeRicSubscriptionModReq - * - * Functionality : Free RIC Subscription modification Request - * - * @params[in] E2AP_PDU - * @return void - * - ******************************************************************/ -void FreeRicSubscriptionModReq(E2AP_PDU_t *e2apRicMsg) -{ - uint8_t idx = 0; - RICsubscriptionModificationRequest_t *ricSubscriptionModReq =NULLP; - RICsubscriptionModificationRequest_IEs_t *ricSubscriptionModReqIe=NULLP; - - if(e2apRicMsg) - { - if(e2apRicMsg->choice.initiatingMessage) - { - ricSubscriptionModReq = &e2apRicMsg->choice.initiatingMessage->value.choice.RICsubscriptionModificationRequest; - if(ricSubscriptionModReq->protocolIEs.list.array) - { - for(idx=0; idx < ricSubscriptionModReq->protocolIEs.list.count; idx++) - { - if(ricSubscriptionModReq->protocolIEs.list.array[idx]) - { - ricSubscriptionModReqIe = ricSubscriptionModReq->protocolIEs.list.array[idx]; - switch(ricSubscriptionModReq->protocolIEs.list.array[idx]->id) - { - case ProtocolIE_IDE2_id_RICrequestID: - break; - case ProtocolIE_IDE2_id_RANfunctionID: - break; - case ProtocolIE_IDE2_id_RICactionsToBeRemovedForModification_List: - { - FreeRicSubsActionToBeRemoved(&(ricSubscriptionModReqIe->value.choice.RICactions_ToBeRemovedForModification_List)); - break; - } - case ProtocolIE_IDE2_id_RICactionsToBeModifiedForModification_List: - { - FreeRicSubsActionToBeModified(&(ricSubscriptionModReqIe->value.choice.RICactions_ToBeModifiedForModification_List)); - break; - } - case ProtocolIE_IDE2_id_RICactionsToBeAddedForModification_List: - { - FreeRicSubsActionToBeAdded(&(ricSubscriptionModReqIe->value.choice.RICactions_ToBeAddedForModification_List)); - break; - } - default: - { - DU_LOG("\nERROR --> E2AP : Received Invalid Ie [%ld]", ricSubscriptionModReq->protocolIEs.list.array[idx]->id); - break; - } - - } - - RIC_FREE(ricSubscriptionModReq->protocolIEs.list.array[idx], sizeof(RICsubscriptionModificationRequest_IEs_t)); - } - } - RIC_FREE(ricSubscriptionModReq->protocolIEs.list.array, ricSubscriptionModReq->protocolIEs.list.size); - } - RIC_FREE(e2apRicMsg->choice.initiatingMessage, sizeof(InitiatingMessageE2_t)); - } - RIC_FREE(e2apRicMsg, sizeof(E2AP_PDU_t)); - } -} - -/******************************************************************* -* -* @brief Build Ric subscription action to be modify list -* -* @details -* -* Function : BuildRicSubsActionToBeModify -* -* Functionality: Build Ric subscription action to be modify list -* -* @params[in] -* RICactions_ToBeModifiedForModification_List_t to be filled -* Num of action to be modify -* List of action to be modify -* -* @return ROK - success -* RFAILED - failure -* -******************************************************************/ - -uint8_t BuildRicSubsActionToBeModify(RICactions_ToBeModifiedForModification_List_t *modifyActionList, uint8_t numOfActionToBeModify, ActionInfo *actionToBeModify) -{ - uint8_t arrIdx=0; - RICaction_ToBeModifiedForModification_ItemIEs_t *modifiedActionItemIe=NULLP; - - modifyActionList->list.count = numOfActionToBeModify; - modifyActionList->list.size = modifyActionList->list.count * sizeof(RICaction_ToBeModifiedForModification_ItemIEs_t*); - RIC_ALLOC(modifyActionList->list.array, modifyActionList->list.size); - if(!modifyActionList->list.array) - { - DU_LOG("\nERROR --> E2AP : Memory allocation failed at [%s] : line [%d]", __func__, __LINE__); - return RFAILED; - } - - for(arrIdx = 0; arrIdx< modifyActionList->list.count; arrIdx++) - { - RIC_ALLOC(modifyActionList->list.array[arrIdx], sizeof(RICaction_ToBeModifiedForModification_ItemIEs_t)); - if(!modifyActionList->list.array[arrIdx]) - { - DU_LOG("\nERROR --> E2AP : Memory allocation failed at [%s] : line [%d]", __func__, __LINE__); - return RFAILED; - } - modifiedActionItemIe = (RICaction_ToBeModifiedForModification_ItemIEs_t*)modifyActionList->list.array[arrIdx]; - modifiedActionItemIe->id = ProtocolIE_IDE2_id_RICaction_ToBeModifiedForModification_Item; - modifiedActionItemIe->criticality = CriticalityE2_ignore; - modifiedActionItemIe->value.present = RICaction_ToBeModifiedForModification_ItemIEs__value_PR_RICaction_ToBeModifiedForModification_Item; - modifiedActionItemIe->value.choice.RICaction_ToBeModifiedForModification_Item.ricActionID = actionToBeModify[arrIdx].actionId; - - /* RIC Action Definition */ - RIC_ALLOC(modifiedActionItemIe->value.choice.RICaction_ToBeModifiedForModification_Item.ricActionDefinition, sizeof(RICactionDefinition_t)); - if(!modifiedActionItemIe->value.choice.RICaction_ToBeModifiedForModification_Item.ricActionDefinition) - { - DU_LOG("\nERROR --> E2AP : Memory allocation failed at [%s] : line [%d]", __func__, __LINE__); - break; - } - - if(fillRicActionDef(modifiedActionItemIe->value.choice.RICaction_ToBeModifiedForModification_Item.ricActionDefinition,\ - actionToBeModify[arrIdx].actionId, CONFIG_MOD) != ROK) - { - DU_LOG("\nERROR --> E2AP : Failed at [%s] : line [%d]", __func__, __LINE__); - break; - } - - } - return ROK; -} - -/******************************************************************* -* -* @brief Build Ric subscription action to be removed list -* -* @details -* -* Function : BuildRicSubsActionToBeRemoved -* -* Functionality: Build Ric subscription action to be removed list -* -* @params[in] -* RICactions_ToBeRemovedForModification_List_t to be filled -* Num Of Action To Be Remove -* Action remove list -* -* @return ROK - success -* RFAILED - failure -* -******************************************************************/ - -uint8_t BuildRicSubsActionToBeRemoved(RICactions_ToBeRemovedForModification_List_t *removeActionList, uint8_t numOfActionToBeRemove, ActionInfo *actionToBeRemove) -{ - uint8_t arrIdx=0; - RICaction_ToBeRemovedForModification_ItemIEs_t *removeActionItemIe=NULLP; - - removeActionList->list.count = numOfActionToBeRemove; - removeActionList->list.size = removeActionList->list.count * sizeof(RICaction_ToBeRemovedForModification_ItemIEs_t*); - RIC_ALLOC(removeActionList->list.array, removeActionList->list.size); - if(!removeActionList->list.array) - { - DU_LOG("\nERROR --> E2AP : Memory allocation failed at [%s] : line [%d]", __func__, __LINE__); - return RFAILED; - } - - for(arrIdx = 0; arrIdx< removeActionList->list.count; arrIdx++) - { - RIC_ALLOC(removeActionList->list.array[arrIdx], sizeof(RICaction_ToBeRemovedForModification_ItemIEs_t)); - if(!removeActionList->list.array[arrIdx]) - { - DU_LOG("\nERROR --> E2AP : Memory allocation failed at [%s] : line [%d]", __func__, __LINE__); - return RFAILED; - } - removeActionItemIe = (RICaction_ToBeRemovedForModification_ItemIEs_t*)removeActionList->list.array[arrIdx]; - removeActionItemIe->id = ProtocolIE_IDE2_id_RICaction_ToBeRemovedForModification_Item; - removeActionItemIe->criticality = CriticalityE2_ignore; - removeActionItemIe->value.present = RICaction_ToBeRemovedForModification_ItemIEs__value_PR_RICaction_ToBeRemovedForModification_Item; - removeActionItemIe->value.choice.RICaction_ToBeRemovedForModification_Item.ricActionID = actionToBeRemove[arrIdx].actionId; - } - return ROK; -} - -/******************************************************************* -* -* @brief Build Ric subscription action to be added list -* -* @details -* -* Function : BuildRicSubsActionToBeAdded -* -* Functionality: Build Ric subscription action to be added list -* -* @params[in] -* RICactions_ToBeAddedForModification_List_t to be filled -* Num Of Action To Be added -* Action add list -* -* @return ROK - success -* RFAILED - failure -* -******************************************************************/ - -uint8_t BuildRicSubsActionToBeAdded(RICactions_ToBeAddedForModification_List_t *addedActionList, RicSubscription **ricSubsInfo, uint8_t numOfActionToBeAdded, ActionInfo *actionToBeAdded) -{ - uint8_t arrIdx=0; - RICaction_ToBeAddedForModification_ItemIEs_t *addedActionItemIe; - - addedActionList->list.count = numOfActionToBeAdded; - addedActionList->list.size = addedActionList->list.count * sizeof(RICaction_ToBeAddedForModification_ItemIEs_t*); - RIC_ALLOC(addedActionList->list.array, addedActionList->list.size); - if(!addedActionList->list.array) - { - DU_LOG("\nERROR --> E2AP : Memory allocation failed at [%s] : line [%d]", __func__, __LINE__); - return RFAILED; - } - - for(arrIdx = 0; arrIdx< addedActionList->list.count; arrIdx++) - { - RIC_ALLOC(addedActionList->list.array[arrIdx], sizeof(RICaction_ToBeAddedForModification_ItemIEs_t)); - if(!addedActionList->list.array[arrIdx]) - { - DU_LOG("\nERROR --> E2AP : Memory allocation failed at [%s] : line [%d]", __func__, __LINE__); - return RFAILED; - } - addedActionItemIe = (RICaction_ToBeAddedForModification_ItemIEs_t*)addedActionList->list.array[arrIdx]; - addedActionItemIe->id = ProtocolIE_IDE2_id_RICaction_ToBeAddedForModification_Item; - addedActionItemIe->criticality = CriticalityE2_ignore; - addedActionItemIe->value.present = RICaction_ToBeAddedForModification_ItemIEs__value_PR_RICaction_ToBeAddedForModification_Item; - addedActionItemIe->value.choice.RICaction_ToBeAddedForModification_Item.ricActionID = actionToBeAdded[arrIdx].actionId; - - addedActionItemIe->value.choice.RICaction_ToBeAddedForModification_Item.ricActionType = RICactionType_report; - - if(fillRicActionDef(&addedActionItemIe->value.choice.RICaction_ToBeAddedForModification_Item.ricActionDefinition, \ - actionToBeAdded[arrIdx].actionId, CONFIG_ADD) != ROK) - { - DU_LOG("\nERROR --> E2AP : Failed at [%s] : line [%d]", __func__, __LINE__); - break; - } - (*ricSubsInfo)->actionSequence[(*ricSubsInfo)->numOfActions].actionId = (*ricSubsInfo)->numOfActions; - (*ricSubsInfo)->numOfActions++; - } - return ROK; -} - -/******************************************************************* - * - * @brief Builds and Send the RicSubscriptionModReq - * - * @details - * - * Function : BuildAndSendRicSubscriptionModReq - * - * Functionality:Builds and Send the RicSubscriptionModReq - * - * @params[in] - * Du databse - * Ric subs information - * List of ric subs action which needs to modify/add/remove - * @return ROK - success - * RFAILED - failure - * - ******************************************************************/ - -uint8_t BuildAndSendRicSubscriptionModReq(DuDb *duDb, RicSubscription **ricSubsInfo, RicSubsModReq ricSubsModReq) -{ - uint8_t ret = RFAILED; - uint8_t elementCnt = 0; - uint8_t idx = 0, cfgIdx=0; - asn_enc_rval_t encRetVal; /* Encoder return value */ - E2AP_PDU_t *e2apRicMsg = NULL; - RICsubscriptionModificationRequest_t *ricSubscriptionModReq; - RanFunction *ranFuncDb = &duDb->ranFunction[0]; - CmLList *subscriptionNode = NULLP; - - DU_LOG("\nINFO --> E2AP : Building RIC Subscription Request\n"); - - while(true) - { - RIC_ALLOC(e2apRicMsg, sizeof(E2AP_PDU_t)); - if(e2apRicMsg == NULLP) - { - DU_LOG("\nERROR --> E2AP : Memory allocation failed at [%s] : line [%d]", __func__, __LINE__); - break; - } - - e2apRicMsg->present = E2AP_PDU_PR_initiatingMessage; - RIC_ALLOC(e2apRicMsg->choice.initiatingMessage, sizeof(InitiatingMessageE2_t)); - if(e2apRicMsg->choice.initiatingMessage == NULLP) - { - DU_LOG("\nERROR --> E2AP : Memory allocation failed at [%s] : line [%d]", __func__, __LINE__); - break; - } - e2apRicMsg->choice.initiatingMessage->procedureCode = ProcedureCodeE2_id_RICsubscriptionModification; - e2apRicMsg->choice.initiatingMessage->criticality = CriticalityE2_reject; - e2apRicMsg->choice.initiatingMessage->value.present = InitiatingMessageE2__value_PR_RICsubscriptionModificationRequest; - - ricSubscriptionModReq = &e2apRicMsg->choice.initiatingMessage->value.choice.RICsubscriptionModificationRequest; - - /* Increasing the elment count based on the number of configured action to be add, mod, delete */ - elementCnt = 2; - if(ricSubsModReq.numOfActionToBeAdded) - elementCnt++; - if(ricSubsModReq.numOfActionToBeModify) - elementCnt++; - if(ricSubsModReq.numOfActionToBeRemove) - elementCnt++; - - ricSubscriptionModReq->protocolIEs.list.count = elementCnt; - ricSubscriptionModReq->protocolIEs.list.size = elementCnt * sizeof(RICsubscriptionModificationRequest_IEs_t); - - /* Initialize the subscription members */ - RIC_ALLOC(ricSubscriptionModReq->protocolIEs.list.array, ricSubscriptionModReq->protocolIEs.list.size); - if(ricSubscriptionModReq->protocolIEs.list.array == NULLP) - { - DU_LOG("\nERROR --> E2AP : Memory allocation failed at [%s] : line [%d]", __func__, __LINE__); - break; - } - - for(idx=0; idxprotocolIEs.list.array[idx], sizeof(RICsubscriptionModificationRequest_IEs_t)); - if(ricSubscriptionModReq->protocolIEs.list.array[idx] == NULLP) - { - DU_LOG("\nERROR --> E2AP : Memory allocation failed at [%s] : line [%d]", __func__, __LINE__); - break; - } - } - if(idx < elementCnt) - break; - - /* Filling RIC Request Id */ - idx = 0; - ricSubscriptionModReq->protocolIEs.list.array[idx]->id = ProtocolIE_IDE2_id_RICrequestID; - ricSubscriptionModReq->protocolIEs.list.array[idx]->criticality = CriticalityE2_reject; - ricSubscriptionModReq->protocolIEs.list.array[idx]->value.present =\ - RICsubscriptionModificationRequest_IEs__value_PR_RICrequestID; - ricSubscriptionModReq->protocolIEs.list.array[idx]->value.choice.RICrequestID.ricRequestorID = (*ricSubsInfo)->requestId.requestorId; - ricSubscriptionModReq->protocolIEs.list.array[idx]->value.choice.RICrequestID.ricInstanceID = (*ricSubsInfo)->requestId.instanceId; - - /* Filling RAN Function Id */ - idx++; - ricSubscriptionModReq->protocolIEs.list.array[idx]->id = ProtocolIE_IDE2_id_RANfunctionID; - ricSubscriptionModReq->protocolIEs.list.array[idx]->criticality = CriticalityE2_reject; - ricSubscriptionModReq->protocolIEs.list.array[idx]->value.present =\ - RICsubscriptionModificationRequest_IEs__value_PR_RANfunctionID; - ricSubscriptionModReq->protocolIEs.list.array[idx]->value.choice.RANfunctionID = (*ricSubsInfo)->ranFuncId; - - if(ricSubsModReq.numOfActionToBeRemove) - { - /* Filling RIC Subscription action to be removed */ - idx++; - ricSubscriptionModReq->protocolIEs.list.array[idx]->id = ProtocolIE_IDE2_id_RICactionsToBeRemovedForModification_List; - ricSubscriptionModReq->protocolIEs.list.array[idx]->criticality = CriticalityE2_ignore; - ricSubscriptionModReq->protocolIEs.list.array[idx]->value.present = RICsubscriptionModificationRequest_IEs__value_PR_RICactions_ToBeRemovedForModification_List; - if(BuildRicSubsActionToBeRemoved(&ricSubscriptionModReq->protocolIEs.list.array[idx]->value.choice.RICactions_ToBeRemovedForModification_List,\ - ricSubsModReq.numOfActionToBeRemove, ricSubsModReq.actionToBeRemove) != ROK) - { - DU_LOG("\nERROR --> E2AP : Failed at [%s] : line [%d]", __func__, __LINE__); - break; - } - } - if(ricSubsModReq.numOfActionToBeModify) - { - /* Filling RIC Subscription action to be modified */ - idx++; - ricSubscriptionModReq->protocolIEs.list.array[idx]->id = ProtocolIE_IDE2_id_RICactionsToBeModifiedForModification_List; - ricSubscriptionModReq->protocolIEs.list.array[idx]->criticality = CriticalityE2_ignore; - ricSubscriptionModReq->protocolIEs.list.array[idx]->value.present = RICsubscriptionModificationRequest_IEs__value_PR_RICactions_ToBeModifiedForModification_List; - if(BuildRicSubsActionToBeModify(&ricSubscriptionModReq->protocolIEs.list.array[idx]->value.choice.RICactions_ToBeModifiedForModification_List,\ - ricSubsModReq.numOfActionToBeModify, ricSubsModReq.actionToBeModify) != ROK) - { - DU_LOG("\nERROR --> E2AP : Failed at [%s] : line [%d]", __func__, __LINE__); - break; - } - } - - if(ricSubsModReq.numOfActionToBeAdded) - { - /* Filling RIC Subscription action to be added */ - idx++; - ricSubscriptionModReq->protocolIEs.list.array[idx]->id = ProtocolIE_IDE2_id_RICactionsToBeAddedForModification_List; - ricSubscriptionModReq->protocolIEs.list.array[idx]->criticality = CriticalityE2_ignore; - ricSubscriptionModReq->protocolIEs.list.array[idx]->value.present = RICsubscriptionModificationRequest_IEs__value_PR_RICactions_ToBeAddedForModification_List; - if(BuildRicSubsActionToBeAdded(&ricSubscriptionModReq->protocolIEs.list.array[idx]->value.choice.RICactions_ToBeAddedForModification_List,\ - ricSubsInfo, ricSubsModReq.numOfActionToBeAdded, ricSubsModReq.actionToBeAdded) != ROK) - { - DU_LOG("\nERROR --> E2AP : Failed at [%s] : line [%d]", __func__, __LINE__); - break; - } - } - - /* Prints the Msg formed */ - xer_fprint(stdout, &asn_DEF_E2AP_PDU, e2apRicMsg); - - memset(encBuf, 0, ENC_BUF_MAX_LEN); - encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_E2AP_PDU, 0, e2apRicMsg, PrepFinalEncBuf, encBuf); - if(encRetVal.encoded == ENCODE_FAIL) - { - DU_LOG("\nERROR --> E2AP : Could not encode RicSubscriptionModRequest structure (at %s)\n",\ - encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - break; - } - else - { - DU_LOG("\nDEBUG --> E2AP : Created APER encoded buffer for RicSubscriptionModRequest\n"); - for(int i=0; i< encBufSize; i++) - { - DU_LOG("%x",encBuf[i]); - } - } - - /* Sending msg */ - if(SendE2APMsg(RIC_APP_MEM_REG, RIC_POOL, duDb->duId) != ROK) - { - DU_LOG("\nERROR --> E2AP : Sending RIC subscription Request failed"); - break; - } - - ret = ROK; - break; - } - - FreeRicSubscriptionModReq(e2apRicMsg); - return ret; -} - -/******************************************************************* - * - * @brief Builds RicSubscriptionModReq - * - * @details - * - * Function : BuildRicSubscriptionModReq - * - * Functionality:Builds the RicSubscriptionModReq - * - * @params[in] - * Du databse - * @return void - * - * ****************************************************************/ - -void BuildRicSubsModificationReq(DuDb *duDb, RicSubscription *ricSubsInfo) -{ - uint8_t actionToBeAdded =0; - uint8_t actionIdx =0, tmpActionIdx=0; - RicSubsModReq ricSubsModReq; - - if(ricSubsInfo) - { - memset(&ricSubsModReq, 0, sizeof(RicSubsModReq)); - for(actionIdx=0; actionIdxnumOfActions; actionIdx++) - { - /* Change the condition based on the action required to be modiified or removed */ - if(actionIdx%2 == 0) - { - tmpActionIdx = ricSubsModReq.numOfActionToBeModify; - ricSubsModReq.actionToBeModify[tmpActionIdx].actionId = ricSubsInfo->actionSequence[actionIdx].actionId; - ricSubsModReq.numOfActionToBeModify++; - } - else - { - tmpActionIdx = ricSubsModReq.numOfActionToBeRemove; - ricSubsModReq.actionToBeRemove[tmpActionIdx].actionId = ricSubsInfo->actionSequence[actionIdx].actionId; - ricSubsModReq.numOfActionToBeRemove++; - } - } - /* Change the value of actionToBeAdded based on the number of action required to be added */ - actionToBeAdded =1; - tmpActionIdx = ricSubsInfo->numOfActions; - for(actionIdx=0; actionIdx E2AP : failed to build and send RIC Subscription Modification"); - return ; - } - } -} - /******************************************************************* * * @brief Handles received E2AP message and sends back response diff --git a/src/ric_stub/ric_e2ap_msg_hdl.h b/src/ric_stub/ric_e2ap_msg_hdl.h index 0d7ec7216..47ab8d75e 100644 --- a/src/ric_stub/ric_e2ap_msg_hdl.h +++ b/src/ric_stub/ric_e2ap_msg_hdl.h @@ -31,14 +31,7 @@ #define CELL_INDEX 0 #define RIC_STYLE_TYPE 1 - -/* if config type is CONFIG_ADD then - * for action Id = n, RIC_ACTION_GRANULARITY_PERIOD = 100+ n*100 - * else config type is CONFIG_MOD then - * for action Id = n, RIC_ACTION_GRANULARITY_PERIOD = 100 +50(n+1) */ -#define RIC_ACTION_GRANULARITY_PERIOD(_configType, _actionId) \ - ((_configType == CONFIG_ADD) ? (100 + 100 * _actionId ) : ( 100 + 50 *( _actionId +1))) - +#define RIC_ACTION_GRANULARITY_PERIOD 100 /* allocate and zero out a static buffer */ #define RIC_ALLOC(_datPtr, _size) \ { \ @@ -73,8 +66,6 @@ uint8_t BuildAndSendE2NodeConfigUpdateAck(DuDb *duDb, uint8_t transId, E2NodeCo uint8_t BuildAndSendConnectionUpdate(uint32_t duId); uint8_t BuildAndSendE2ConnectionUpdate(uint32_t duId, E2Connection connectionInfo); uint8_t BuildAndSendRicSubscriptionDeleteRequest(uint32_t duId, RicSubscription *ricSubsDb); -void BuildRicSubsModificationReq(DuDb *duDb, RicSubscription *ricSubsInfo); - /********************************************************************** End of file **********************************************************************/ diff --git a/src/ric_stub/ric_stub.h b/src/ric_stub/ric_stub.h index a2663def6..0b282de52 100644 --- a/src/ric_stub/ric_stub.h +++ b/src/ric_stub/ric_stub.h @@ -202,22 +202,6 @@ typedef struct e2NodeCfgList E2NodeConfigItem removedE2Node[MAX_E2_NODE_COMPONENT]; }E2NodeConfigList; -typedef struct ricSubsActionInfo -{ - ConfigType configType; - uint16_t actionId; -}RicSubsActionInfo; - -typedef struct ricSubsModReq -{ - uint16_t numOfActionToBeAdded; - ActionInfo actionToBeAdded[MAX_RIC_ACTION]; - uint16_t numOfActionToBeModify; - ActionInfo actionToBeModify[MAX_RIC_ACTION]; - uint16_t numOfActionToBeRemove; - ActionInfo actionToBeRemove[MAX_RIC_ACTION]; -}RicSubsModReq; - void readRicCfg(); void cuAppInmsgHdlr(Buffer *mBuf); void sctpNtfyInd(CmInetSctpNotification *ntfy); -- 2.16.6