- /* Fetch subscription detail in RAN Function DB */
- CM_LLIST_FIRST_NODE(&ranFuncDb->subscriptionList, ricSubscriptionNode);
- while(ricSubscriptionNode)
- {
- ricSubscriptionInfo = (RicSubscription *)ricSubscriptionNode->node;
- if(ricSubscriptionInfo && (ricSubscriptionInfo->requestId.requestorId == ricReqId.requestorId) &&
- (ricSubscriptionInfo->requestId.instanceId == ricReqId.instanceId))
- {
- break;
- }
- ricSubscriptionNode = ricSubscriptionNode->next;
- }
-
- if(ricSubscriptionNode == NULLP)
- {
- DU_LOG("\nERROR --> DU_APP : DuProcMacStatsRsp: Subscription not found for Requestor ID [%d] Instance ID [%d]",\
- ricReqId.requestorId, ricReqId.instanceId);
- DU_FREE_SHRABL_BUF(pst->region, pst->pool, statsRsp, sizeof(MacStatsRsp));
- return RFAILED;
- }
-
- /* Fetch pre-stored statistics response info by DU APP */
- for(idx=0; idx<ranFuncDb->numPendingSubsRsp; idx++)
- {
- if((ranFuncDb->pendingSubsRspInfo[idx].requestId.requestorId == ricReqId.requestorId) &&
- (ricSubscriptionInfo->requestId.instanceId == ricReqId.instanceId))
- {
- pendingSubsRsp = &ranFuncDb->pendingSubsRspInfo[idx];
- break;
- }
- }
-
- /* If no action is accepted
- * a. Remove subcription entry from RAN Function
- * b. Send RIC subscription failure */
- if(statsRsp->numGrpAccepted == 0)
- {
- duRejectAllStatsGroup(ranFuncDb, ricSubscriptionNode, statsRsp);
- }
- else
- {
- /* If even 1 action is accepted :
- *
- * For accepted groups:
- * Mark subscribed-action's -> action = CONFIG_UNKNOWN
- * Add to accepted-action-list of subscription response
- */
- for(idx=0; idx<statsRsp->numGrpAccepted; idx++)
- {
- actionId = statsRsp->statsGrpAcceptedList[idx];
- if((ricSubscriptionInfo->actionSequence[actionId-1].id == actionId) &&
- (ricSubscriptionInfo->actionSequence[actionId-1].action == CONFIG_ADD))
- {
- ricSubscriptionInfo->actionSequence[actionId-1].action = CONFIG_UNKNOWN;
-
- pendingSubsRsp->acceptedActionList[pendingSubsRsp->numOfAcceptedActions++] = actionId;
- }
- }
-
- /* For rejected groups:
- * Remove entry from DU's RAN Function->subscription->actionList
- * Add to rejected-action-list in subscription response
- */
- for(idx=0; idx<statsRsp->numGrpRejected; idx++)
- {
- actionId = statsRsp->statsGrpRejectedList[idx].groupId;
- if(ricSubscriptionInfo->actionSequence[actionId-1].id == actionId)
- {
- memset(&ricSubscriptionInfo->actionSequence[actionId-1], 0, sizeof(ActionInfo));
- ricSubscriptionInfo->numOfActions--;
-
- pendingSubsRsp->rejectedActionList[pendingSubsRsp->numOfRejectedActions].id = actionId;
- convertDuCauseToE2Cause(statsRsp->statsGrpRejectedList[idx].cause, \
- &pendingSubsRsp->rejectedActionList[pendingSubsRsp->numOfRejectedActions].failureCause);
- pendingSubsRsp->numOfRejectedActions++;
- }
- }
-
- /* Send subscription response with accepted and rejected action lists to
- * RIC */
- BuildAndSendRicSubscriptionRsp(pendingSubsRsp);
- }
-
- memset(pendingSubsRsp, 0, sizeof(PendingSubsRspInfo));