[Epic-ID: ODUHIGH-516][Task-ID: ODUHIGH-553] Transid fixes in E2AP procedures
[o-du/l2.git] / src / du_app / du_e2ap_msg_hdl.c
index 4f04aca..bfd29e8 100644 (file)
@@ -646,7 +646,7 @@ void FreeErrorIndication(E2AP_PDU_t  *e2apMsg)
  *
  ******************************************************************/
 
-uint8_t BuildAndSendErrorIndication(int8_t transId, RicRequestId requestId, uint16_t ranFuncId,  E2FailureCause failureCause)
+uint8_t BuildAndSendErrorIndication(uint16_t transId, RicRequestId requestId, uint16_t ranFuncId,  E2FailureCause failureCause)
 {
    uint8_t elementCnt =0, arrIdx=0, ret = RFAILED;
    E2AP_PDU_t         *e2apMsg = NULLP;
@@ -835,7 +835,8 @@ void freeAperDecodingOfE2NodeConfigUpdateFailure(E2nodeConfigurationUpdateFailur
 
 void procE2NodeConfigUpdateFailure(E2AP_PDU_t *e2apMsg)
 {
-   uint8_t arrIdx =0, transId =0, timerValue=0;
+   uint8_t arrIdx =0, timerValue=0;
+   uint16_t transId =0;
    E2nodeConfigurationUpdateFailure_t *e2NodeCfgUpdFail=NULL;
 
    DU_LOG("\nINFO   -->  E2AP : E2 Node Config Update failure received");
@@ -1993,8 +1994,8 @@ void FreeE2SetupReq(E2AP_PDU_t *e2apMsg)
 
 uint8_t BuildAndSendE2SetupReq()
 {
-   uint8_t arrIdx = 0, elementCnt=0;
-   uint8_t transId = 0, ret = RFAILED;
+   uint16_t transId = 0;
+   uint8_t arrIdx = 0, elementCnt=0, ret =RFAILED;
    bool memAllocFailed = false;
    E2AP_PDU_t        *e2apMsg = NULLP;
    E2setupRequest_t  *e2SetupReq = NULLP;
@@ -2704,9 +2705,14 @@ void handleE2NodeConfigUpdateAckIes(PTR e2NodeCfg, uint8_t procedureCode)
 void procE2SetupRsp(E2AP_PDU_t *e2apMsg)
 {
    bool invalidTransId = false;
-   uint8_t arrIdx =0, transId=0, idx=0; 
+   uint8_t arrIdx =0, idx=0;
+   uint16_t transId=0;
    uint32_t recvBufLen;             
    E2setupResponse_t *e2SetRspMsg=NULL;
+   RANfunctionsID_List_t *ranFuncAcceptedList=NULL;
+   RANfunctionID_ItemIEs_t *ranFuncAcceptedItemIe=NULL;
+   RANfunctionsIDcause_List_t *ranFuncRejectedList=NULL;
+   RANfunctionIDcause_ItemIEs_t *ranFuncRejectedItemIe=NULL;
    E2nodeComponentConfigAdditionAck_List_t *e2NodeCfgAckList=NULL;
    E2nodeComponentConfigAdditionAck_ItemIEs_t *e2NodeAddAckItem=NULL;
 
@@ -2753,11 +2759,31 @@ void procE2SetupRsp(E2AP_PDU_t *e2apMsg)
                {
                   e2NodeAddAckItem = (E2nodeComponentConfigAdditionAck_ItemIEs_t*) e2NodeCfgAckList->list.array[idx];
                   handleE2NodeConfigUpdateAckIes((PTR)&e2NodeAddAckItem->value.choice.E2nodeComponentConfigAdditionAck_Item,\
-                  ProtocolIE_IDE2_id_E2nodeComponentConfigAdditionAck);
+                        ProtocolIE_IDE2_id_E2nodeComponentConfigAdditionAck);
+               }
+               break;
+            }
+         case ProtocolIE_IDE2_id_RANfunctionsAccepted:
+            {
+               ranFuncAcceptedList = &e2SetRspMsg->protocolIEs.list.array[arrIdx]->value.choice.RANfunctionsID_List;
+               for(idx =0; idx <ranFuncAcceptedList->list.count; idx++)
+               {
+                  ranFuncAcceptedItemIe = (RANfunctionID_ItemIEs_t*)ranFuncAcceptedList->list.array[idx];
+                  DU_LOG("\nINFO  --> E2AP : Ran function id [%ld] accepted",ranFuncAcceptedItemIe->value.choice.RANfunctionID_Item.ranFunctionID);
                }
                break;
             }
 
+         case ProtocolIE_IDE2_id_RANfunctionsRejected:
+            {
+               ranFuncRejectedList = &e2SetRspMsg->protocolIEs.list.array[arrIdx]->value.choice.RANfunctionsIDcause_List;
+               for(idx =0; idx <ranFuncRejectedList->list.count; idx++)
+               {
+                  ranFuncRejectedItemIe = (RANfunctionIDcause_ItemIEs_t*)ranFuncRejectedList->list.array[idx];
+                  DU_LOG("\nINFO  --> E2AP : Ran function id [%ld] rejected",ranFuncRejectedItemIe->value.choice.RANfunctionIDcause_Item.ranFunctionID);
+               }
+               break;
+            }
          default:
             {
                DU_LOG("\nERROR  -->  E2AP : Invalid IE received in E2SetupRsp:%ld",
@@ -3566,10 +3592,8 @@ uint8_t procRicSubscriptionRequest(E2AP_PDU_t *e2apMsg)
 
       ranFuncDb->numPendingSubsRsp++;
 
-#ifdef KPI_CALCULATION
       /* Send statistics request to other DU entities */
       BuildAndSendStatsReq(ricSubscriptionInfo);
-#endif      
    }
    else
    {
@@ -4873,7 +4897,8 @@ void FreeE2NodeConfigUpdate(E2AP_PDU_t *e2apMsg)
 uint8_t BuildAndSendE2NodeConfigUpdate(E2NodeConfigList *e2NodeList)
 {
    uint8_t ret = RFAILED;
-   uint8_t arrIdx = 0,elementCnt = 0, transId=0;
+   uint8_t arrIdx = 0,elementCnt = 0;
+   uint16_t transId=0;
    E2AP_PDU_t  *e2apMsg = NULLP;
    asn_enc_rval_t     encRetVal;       /* Encoder return value */
    E2nodeConfigurationUpdate_t *e2NodeConfigUpdate = NULLP;
@@ -5081,7 +5106,8 @@ void FreeE2ResetRequest(E2AP_PDU_t *e2apMsg)
  * ****************************************************************/
 uint8_t BuildAndSendE2ResetRequest(E2FailureCause resetCause)
 {
-   uint8_t ieIdx = 0, elementCnt = 0, transId = 0;
+   uint8_t ieIdx = 0, elementCnt = 0;
+   uint16_t transId = 0;
    uint8_t ret = RFAILED;
    E2AP_PDU_t        *e2apMsg = NULLP;
    ResetRequestE2_t  *resetReq = NULLP;
@@ -5254,7 +5280,8 @@ void freeAperDecodingOfE2ResetRsp(ResetResponseE2_t *resetResponse)
 void procResetResponse(E2AP_PDU_t *e2apMsg)
 {
    bool invalidTransId=false;
-   uint8_t ieIdx =0, transId =0;
+   uint8_t ieIdx =0;
+   uint16_t transId =0;
    uint16_t ranFuncIdx=0;
    ResetResponseE2_t *resetResponse =NULLP;
 
@@ -5360,7 +5387,8 @@ void freeAperDecodingOfE2SetupFailure(E2setupFailure_t *e2SetupFailure)
  * ****************************************************************/
 void procE2SetupFailure(E2AP_PDU_t *e2apMsg)
 {
-   uint8_t arrIdx =0, transId =0, timerValue=0; 
+   uint16_t  transId =0;
+   uint8_t arrIdx =0, timerValue=0; 
    E2setupFailure_t *e2SetupFailure;
 
    DU_LOG("\nINFO   -->  E2AP : E2 Setup failure received"); 
@@ -5622,9 +5650,9 @@ void FreeRicServiceUpdate(E2AP_PDU_t *e2apMsg)
 
 uint8_t BuildAndSendRicServiceUpdate(RicServiceUpdate serviceUpdate)
 {
-   uint8_t arrIdx = 0, elementCnt=0;
-   uint8_t transId = 0, ret = RFAILED;
+   uint16_t transId = 0;
    bool memAllocFailed =false;
+   uint8_t arrIdx = 0, elementCnt=0,ret = RFAILED;
    E2AP_PDU_t        *e2apMsg = NULLP;
    RICserviceUpdate_t  *ricServiceUpdate = NULLP;
    asn_enc_rval_t     encRetVal;       /* Encoder return value */
@@ -5970,7 +5998,8 @@ void freeAperDecodingOfRicServiceUpdateAck(RICserviceUpdateAcknowledge_t *ricSer
 
 void procRicServiceUpdateAck(E2AP_PDU_t *e2apMsg)
 {
-   uint8_t arrIdx =0, transId =0; 
+   uint8_t arrIdx =0;
+   uint16_t transId =0; 
    uint16_t id =0, tmpIdx=0, ranFuncIdx=0;
    RicServiceUpdate serviceUpdate;
    RANfunctionsIDcause_List_t *rejectedList=NULL;
@@ -7017,7 +7046,7 @@ void FreeE2ResetResponse(E2AP_PDU_t *e2apMsg)
  *         RFAILED - failure
  *
  * ****************************************************************/
-uint8_t BuildAndSendResetResponse(uint8_t transId)
+uint8_t BuildAndSendResetResponse(uint16_t transId)
 {
    uint8_t           ieIdx = 0, elementCnt = 0;
    uint8_t           ret = RFAILED;
@@ -7163,8 +7192,9 @@ void freeAperDecodingOfE2ResetReq(ResetRequestE2_t *resetReq)
 
 void procE2ResetRequest(E2AP_PDU_t  *e2apMsg)
 {
+   uint8_t arrIdx =0;
+   uint16_t transId =0;
    uint16_t ranFuncIdx=0;
-   uint8_t arrIdx =0, transId =0;
    ResetRequestE2_t *resetReq;
 
    DU_LOG("\nINFO   -->  E2AP : E2 Reset request received");
@@ -8373,8 +8403,9 @@ void FreeRemovalRequest(E2AP_PDU_t *e2apMsg)
 
 uint8_t BuildAndSendRemovalRequest()
 {
-   uint8_t ieIdx = 0, elementCnt = 0, transId = 0;
+   uint16_t transId = 0;
    uint8_t ret = RFAILED;
+   uint8_t ieIdx = 0, elementCnt = 0;
    E2AP_PDU_t        *e2apMsg = NULLP;
    E2RemovalRequest_t  *removalReq = NULLP;
    asn_enc_rval_t     encRetVal;       /* Encoder return value */
@@ -8531,7 +8562,8 @@ void freeAperDecodingOfE2RemovalFailure(E2RemovalFailure_t *removalFailure)
  * ****************************************************************/
 void ProcE2RemovalFailure(E2AP_PDU_t *e2apMsg) 
 {
-   uint8_t ieIdx = 0, transId=0;
+   uint8_t ieIdx = 0;
+   uint16_t transId=0;
    CauseE2_t *cause = NULLP;
    E2RemovalFailure_t *e2RemovalFailure=NULLP;
 
@@ -8634,7 +8666,8 @@ void ProcE2RemovalFailure(E2AP_PDU_t *e2apMsg)
 
 void ProcE2RemovalResponse(E2AP_PDU_t *e2apMsg)
 {
-   uint8_t ieIdx = 0, transId=0;
+   uint8_t ieIdx = 0;
+   uint16_t transId=0;
    E2RemovalResponse_t *removalRsp = NULLP;
    
    removalRsp = &e2apMsg->choice.successfulOutcome->value.choice.E2RemovalResponse;
@@ -9457,7 +9490,8 @@ void handleE2ConnectionRemoval(E2connectionUpdateRemove_List_t *connectionRemova
 
 void procE2ConnectionUpdate(E2AP_PDU_t  *e2apMsg)
 {
-   uint8_t arrIdx =0, transId =0;
+   uint8_t arrIdx =0;
+   uint16_t transId =0;
    bool invalidTransId = false, connectionFailedToUpdate=false;
    E2FailureCause failureCause;
    E2ConnectionList connectionInfoList;