X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fric_stub%2Fric_e2ap_msg_hdl.c;h=9d31df746cddeac733bedff09e659061f52b58c6;hb=5d74fef7c9fe6b65a965ceac6bfe812872dab323;hp=565d17f478e39d6737ed8345a6fd2ff06a81d79b;hpb=8660dd47a5ef27b62300fabf6b027852f1d5d026;p=o-du%2Fl2.git diff --git a/src/ric_stub/ric_e2ap_msg_hdl.c b/src/ric_stub/ric_e2ap_msg_hdl.c index 565d17f47..9d31df746 100644 --- a/src/ric_stub/ric_e2ap_msg_hdl.c +++ b/src/ric_stub/ric_e2ap_msg_hdl.c @@ -17,38 +17,19 @@ *******************************************************************************/ /* This file contains E2AP message handler functions */ - +#include "common_def.h" +#include "OCTET_STRING.h" +#include "BIT_STRING.h" +#include "odu_common_codec.h" +#include "ric_stub.h" #include "ric_stub_sctp.h" #include "ric_e2ap_msg_hdl.h" #include "GlobalE2node-gNB-ID.h" +#include "ProtocolIE-FieldE2.h" +#include "E2AP-PDU.h" +#include "du_log.h" -char encBuf[ENC_BUF_MAX_LEN]; Bool ricSubsStatus; -S16 SendE2APMsg(Region , Pool ); - -/******************************************************************* - * - * @brief Writes the encoded chunks into a buffer - * - * @details - * - * Function : PrepFinalEncBuf - * - * Functionality:Fills the encoded buffer - * - * @params[in] void *buffer,initial encoded data - * @params[in] size_t size,size of buffer - * @params[in] void *encodedBuf,final buffer - * @return ROK - success - * RFAILED - failure - * - * ****************************************************************/ -static int PrepFinalEncBuf(const void *buffer, size_t size, void *encodedBuf) -{ - memcpy(encodedBuf + encBufSize, buffer, size); - encBufSize += size; - return 0; -} /* PrepFinalEncBuf */ /******************************************************************* * @@ -71,115 +52,36 @@ S16 SendE2APMsg(Region region, Pool pool) { Buffer *mBuf; - if(SGetMsg(region, pool, &mBuf) == ROK) + if(ODU_GET_MSG_BUF(region, pool, &mBuf) == ROK) { - if(SAddPstMsgMult((Data *)encBuf, encBufSize, mBuf) == ROK) + if(ODU_ADD_POST_MSG_MULT((Data *)encBuf, encBufSize, mBuf) == ROK) { - SPrntMsg(mBuf, 0,0); + ODU_PRINT_MSG(mBuf, 0,0); if(sctpSend(mBuf) != ROK) { - DU_LOG("\nF1AP : SCTP Send for E2 failed"); - SPutMsg(mBuf); - RETVALUE(RFAILED); + DU_LOG("\nE2AP : SCTP Send for E2 failed"); + ODU_PUT_MSG_BUF(mBuf); + return RFAILED; } } else { - DU_LOG("\nF1AP : SAddPstMsgMult failed"); - SPutMsg(mBuf); - RETVALUE(RFAILED); + DU_LOG("\nE2AP : ODU_ADD_POST_MSG_MULT failed"); + ODU_PUT_MSG_BUF(mBuf); + return RFAILED; } - SPutMsg(mBuf); + ODU_PUT_MSG_BUF(mBuf); } else { - DU_LOG("\nF1AP : Failed to allocate memory"); - RETVALUE(RFAILED); + DU_LOG("\nE2AP : Failed to allocate memory"); + return RFAILED; } - RETVALUE(ROK); + return ROK; } /* SendE2APMsg */ -/******************************************************************* - * - * @brief Builds PLMN ID - * - * @details - * - * Function : plmnBuildRic - * - * Functionality: Building the PLMN ID - * - * @params[in] PLMNID plmn - * OCTET_STRING_t *octe - * @return ROK - success - * RFAILED - failure - * - * ****************************************************************/ - -void plmnBuildRic(Plmn plmn, OCTET_STRING_t *octe) -{ - U8 mncCnt; - octe->size = 3; - RIC_ALLOC(octe->buf, octe->size * sizeof(U8)); - if(octe->buf == NULLP) - { - RETVALUE(RFAILED); - } - mncCnt = 2; - octe->buf[0] = ((plmn.mcc[1] << 4) | (plmn.mcc[0])); - if(mncCnt == 2) - { - octe->buf[1] = ((0xf0) | (plmn.mcc[2])); - octe->buf[2] = ((plmn.mnc[1] << 4) | (plmn.mnc[0])); - } - else - { - octe->buf[1] = ((plmn.mnc[0] << 4) | (plmn.mcc[2])); - octe->buf[2] = ((plmn.mnc[2] << 4) | (plmn.mnc[1])); - } -} - -/******************************************************************* - * - * @brief Fills the RicId - * - * @details - * - * Function : FillRicId - * - * Functionality: Fills the RicId - * - * @params[in] BIT_STRING_t *nbid, - * U8 unusedBits - * U8 byteSize - * U8 val - * - * @return ROK - success - * RFAILED - failure - * - * ****************************************************************/ - -S16 FillRicId(BIT_STRING_t *id, U8 unusedBits, U8 byteSize, U8 val) -{ - U8 tmp; - id->size = byteSize; - RIC_ALLOC(id->buf, id->size * sizeof(U8)); - if(id->buf == NULLP) - { - RETVALUE(RFAILED); - } - - for (tmp = 0 ; tmp < (byteSize-1); tmp++) - { - id->buf[tmp] = tmp; - } - id->buf[byteSize-1] = val; //change this - id->bits_unused = unusedBits; - RETVALUE(ROK); -} - /******************************************************************* * * @brief Builds Global RIC Id Params @@ -203,46 +105,17 @@ S16 BuildGlobalRicId(GlobalRIC_ID_t *ricId) U8 val = 1; if(ricId != NULLP) { - plmnBuildRic(cuCfgParams.plmn , &ricId->pLMN_Identity); + ricId->pLMN_Identity.size = byteSize * sizeof(U8); + RIC_ALLOC(ricId->pLMN_Identity.buf, ricId->pLMN_Identity.size); + buildPlmnId(ricCfgParams.plmn , ricId->pLMN_Identity.buf); /* fill ric Id */ - FillRicId(&ricId->ric_ID, unused, byteSize, val); + ricId->ric_ID.size = byteSize * sizeof(U8); + RIC_ALLOC(ricId->ric_ID.buf, ricId->ric_ID.size); + fillBitString(&ricId->ric_ID, unused, byteSize, val); } - RETVALUE(ROK); -} -#if 0 -RANfunctionID_ItemIEs_t* FillRanFuncItems(RANfunctionID_ItemIEs_t *items) -{ - if(items != NULLP) - { - items->id = ProtocolIE_IDE2_id_RANfunction_Item; - items->criticality = CriticalityE2_reject; - items->value.present = RANfunctionID_ItemIEs__value_PR_RANfunctionID_Item; - items->value.choice.RANfunctionID_Item.ranFunctionID = 1; - items->value.choice.RANfunctionID_Item.ranFunctionRevision = 4; - } - RETVALUE(items); + return ROK; } -S16 BuildRANfuncIdList(RANfunctionsID_List_t *funcIdList) -{ - U8 elementCnt; - RANfunctionID_ItemIEs_t *funcIdItems; - - elementCnt = 1; - funcIdList->list.count = elementCnt; - funcIdList->list.size = elementCnt * sizeof(RANfunctionID_ItemIEs_t); - RIC_ALLOC(funcIdList->list.array, funcIdList->list.size); - if(funcIdList->list.array == NULLP) - { - DU_LOG("\nE2AP : Memory allocation for RAN Function List failed"); - RETVALUE(RFAILED); - } - RIC_ALLOC(funcIdList->list.array[0], sizeof(RANfunctionID_ItemIEs_t)); - FillRanFuncItems(funcIdList->list.array[0]); - RETVALUE(ROK); -} -#endif - /******************************************************************* * * @brief Builds and sends the E2SetupResponse @@ -276,7 +149,7 @@ S16 BuildAndSendE2SetupRsp() if(e2apMsg == NULLP) { DU_LOG("\nE2AP : Memory allocation for E2AP-PDU failed"); - RETVALUE(RFAILED); + return RFAILED; } e2apMsg->present = E2AP_PDU_PR_successfulOutcome; RIC_ALLOC(e2apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcomeE2_t)); @@ -284,7 +157,7 @@ S16 BuildAndSendE2SetupRsp() { DU_LOG("\nE2AP : Memory allocation for E2AP-PDU failed"); RIC_FREE(e2apMsg, sizeof(E2AP_PDU_t)); - RETVALUE(RFAILED); + return RFAILED; } e2apMsg->choice.successfulOutcome->procedureCode = ProcedureCodeE2_id_E2setup; @@ -304,7 +177,7 @@ S16 BuildAndSendE2SetupRsp() DU_LOG("\nE2AP : Memory allocation for E2ResponseIEs failed"); RIC_FREE(e2apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcomeE2_t)); RIC_FREE(e2apMsg, sizeof(E2AP_PDU_t)); - RETVALUE(RFAILED); + return RFAILED; } for(idx=0; idxchoice.successfulOutcome, \ sizeof(SuccessfulOutcomeE2_t)); RIC_FREE(e2apMsg, sizeof(E2AP_PDU_t)); - RETVALUE(RFAILED); + return RFAILED; } } /* Global RIC ID */ @@ -331,7 +204,7 @@ S16 BuildAndSendE2SetupRsp() BuildGlobalRicId(&(e2SetupRsp->protocolIEs.list.array[idx]->value.choice.GlobalRIC_ID)); xer_fprint(stdout, &asn_DEF_E2AP_PDU, e2apMsg); - cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); + memset(encBuf, 0, ENC_BUF_MAX_LEN); encBufSize = 0; encRetVal = aper_encode(&asn_DEF_E2AP_PDU, 0, e2apMsg, PrepFinalEncBuf, encBuf); @@ -340,7 +213,7 @@ S16 BuildAndSendE2SetupRsp() { DU_LOG("\nE2AP : Could not encode E2SetupResponse structure (at %s)\n",\ encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - RETVALUE(RFAILED); + return RFAILED; } else { @@ -354,11 +227,11 @@ S16 BuildAndSendE2SetupRsp() if(SendE2APMsg(RIC_APP_MEM_REG, RIC_POOL) != ROK) { - DU_LOG("\nF1AP : Sending E2 Setup Response failed"); - RETVALUE(RFAILED); + DU_LOG("\nE2AP : Sending E2 Setup Response failed"); + return RFAILED; } - RETVALUE(ROK); + return ROK; } /******************************************************************* @@ -385,7 +258,7 @@ S16 BuildRicRequestId(RICrequestID_t *ricReqId) ricReqId->ricRequestorID = 1; ricReqId->ricInstanceID = 1; } - RETVALUE(ROK); + return ROK; } /******************************************************************* @@ -411,7 +284,7 @@ RICaction_ToBeSetup_Item_t* fillSetupItems(RICaction_ToBeSetup_Item_t *setupItem setupItems->ricActionType = RICactionType_report; } - RETVALUE(setupItems); + return (setupItems); } /******************************************************************* @@ -439,7 +312,7 @@ S16 fillSubsDetails(RICaction_ToBeSetup_ItemIEs_t *items) items->value.present = RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item; fillSetupItems(&(items->value.choice.RICaction_ToBeSetup_Item)); } - RETVALUE(ROK); + return ROK; } /******************************************************************* @@ -465,8 +338,12 @@ S16 BuildRicSubsDetails(RICsubscriptionDetails_t *subsDetails) if(subsDetails != NULLP) { - /* Plmn is not called */ - plmnBuildRic(cuCfgParams.plmn, &subsDetails->ricEventTriggerDefinition); + /* Octet string to be build here */ + /* Sending PLMN as Octect string */ + U8 byteSize = 3; + subsDetails->ricEventTriggerDefinition.size = byteSize * sizeof(U8); + RIC_ALLOC(subsDetails->ricEventTriggerDefinition.buf, subsDetails->ricEventTriggerDefinition.size); + buildPlmnId(ricCfgParams.plmn, subsDetails->ricEventTriggerDefinition.buf); elementCnt = 1; subsDetails->ricAction_ToBeSetup_List.list.count = elementCnt; subsDetails->ricAction_ToBeSetup_List.list.size = \ @@ -476,13 +353,13 @@ S16 BuildRicSubsDetails(RICsubscriptionDetails_t *subsDetails) if(subsDetails->ricAction_ToBeSetup_List.list.array == NULLP) { DU_LOG("\nE2AP : Memory allocation for RICactionToBeSetup Items failed"); - RETVALUE(RFAILED); + return RFAILED; } RIC_ALLOC(subsDetails->ricAction_ToBeSetup_List.list.array[0],\ sizeof(RICaction_ToBeSetup_ItemIEs_t)); fillSubsDetails(subsDetails->ricAction_ToBeSetup_List.list.array[0]); } - RETVALUE(ROK); + return ROK; } /******************************************************************* @@ -518,7 +395,7 @@ S16 BuildAndSendRicSubscriptionReq() if(e2apRicMsg == NULLP) { DU_LOG("\nE2AP : Memory allocation for E2AP-PDU failed"); - RETVALUE(RFAILED); + return RFAILED; } e2apRicMsg->present = E2AP_PDU_PR_initiatingMessage; @@ -527,7 +404,7 @@ S16 BuildAndSendRicSubscriptionReq() { DU_LOG("\nE2AP : Memory allocation for E2AP-PDU failed"); RIC_FREE(e2apRicMsg, sizeof(E2AP_PDU_t)); - RETVALUE(RFAILED); + return RFAILED; } e2apRicMsg->choice.initiatingMessage->procedureCode = ProcedureCodeE2_id_RICsubscription; e2apRicMsg->choice.initiatingMessage->criticality = CriticalityE2_reject; @@ -548,7 +425,7 @@ S16 BuildAndSendRicSubscriptionReq() DU_LOG("\nE2AP : Memory allocation for RICSubscriptionRequestIEs failed"); RIC_FREE(e2apRicMsg->choice.initiatingMessage, sizeof(InitiatingMessageE2_t)); RIC_FREE(e2apRicMsg, (Size)sizeof(E2AP_PDU_t)); - RETVALUE(RFAILED); + return RFAILED; } for(idx=0; idxchoice.initiatingMessage, \ sizeof(InitiatingMessageE2_t)); RIC_FREE(e2apRicMsg, sizeof(E2AP_PDU_t)); - RETVALUE(RFAILED); + return RFAILED; } } @@ -603,7 +480,7 @@ S16 BuildAndSendRicSubscriptionReq() /* Prints the Msg formed */ xer_fprint(stdout, &asn_DEF_E2AP_PDU, e2apRicMsg); - cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); + memset(encBuf, 0, ENC_BUF_MAX_LEN); encBufSize = 0; encRetVal = aper_encode(&asn_DEF_E2AP_PDU, 0, e2apRicMsg, PrepFinalEncBuf,\ encBuf); @@ -611,7 +488,7 @@ S16 BuildAndSendRicSubscriptionReq() { DU_LOG("\nE2AP : Could not encode RicSubscriptionRequest structure (at %s)\n",\ encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - RETVALUE(RFAILED); + return RFAILED; } else { @@ -627,10 +504,10 @@ S16 BuildAndSendRicSubscriptionReq() if(SendE2APMsg(RIC_APP_MEM_REG, RIC_POOL) != ROK) { DU_LOG("\nE2AP : Sending RIC subscription Request failed"); - RETVALUE(RFAILED); + return RFAILED; } - RETVALUE(ROK); + return ROK; } @@ -662,16 +539,18 @@ void E2APMsgHdlr(Buffer *mBuf) E2AP_PDU_t e2apasnmsg ; DU_LOG("\nE2AP : Received E2AP message buffer"); - SPrntMsg(mBuf, 0,0); + ODU_PRINT_MSG(mBuf, 0,0); /* Copy mBuf into char array to decode it */ - SFndLenMsg(mBuf, &recvBufLen); - if(SGetSBuf(DFLT_REGION, DFLT_POOL, (Data **)&recvBuf, (Size)recvBufLen) != ROK) + ODU_GET_MSG_LEN(mBuf, &recvBufLen); + RIC_ALLOC(recvBuf, (Size)recvBufLen); + + if(recvBuf == NULLP) { DU_LOG("\nE2AP : Memory allocation failed"); return; } - if(SCpyMsgFix(mBuf, 0, recvBufLen, (Data *)recvBuf, ©Cnt) != ROK) + if(ODU_COPY_MSG_TO_FIX_BUF(mBuf, 0, recvBufLen, (Data *)recvBuf, ©Cnt) != ROK) { DU_LOG("\nE2AP : Failed while copying %d", copyCnt); return; @@ -683,12 +562,13 @@ void E2APMsgHdlr(Buffer *mBuf) printf("%x",recvBuf[i]); } - /* Decoding flat buffer into F1AP messsage */ + /* Decoding flat buffer into E2AP messsage */ e2apMsg = &e2apasnmsg; memset(e2apMsg, 0, sizeof(E2AP_PDU_t)); rval = aper_decode(0, &asn_DEF_E2AP_PDU, (void **)&e2apMsg, recvBuf, recvBufLen, 0, 0); - SPutSBuf(DFLT_REGION, DFLT_POOL, (Data *)recvBuf, (Size)recvBufLen); + RIC_FREE(recvBuf, (Size)recvBufLen); + if(rval.code == RC_FAIL || rval.code == RC_WMORE) { DU_LOG("\nE2AP : ASN decode failed");