+ bool foundRICrequestID = false;
+ bool foundRANfunctionID = false;
+ bool foundRICactions_Admitted = false;
+ bool foundRICaction_NotAdmitted = false;
+
+ for (int i = 0; i < asnRicSubscriptionResponse->protocolIEs.list.count; i++) {
+ if (asnRicSubscriptionResponse->protocolIEs.list.array[i]->id == ProtocolIE_ID_id_RICrequestID) {
+ if (checkIEOrder && i != 0) {
+ ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU);
+ return e2err_RICsubscriptionResponseRICrequestIDWrongOrder;
+ }
+ pRICsubscriptionResponse_IEs = asnRicSubscriptionResponse->protocolIEs.list.array[i];
+ pRICSubscriptionResponse->ricRequestID.ricRequestorID = pRICsubscriptionResponse_IEs->value.choice.RICrequestID.ricRequestorID;
+ pRICSubscriptionResponse->ricRequestID.ricInstanceID = pRICsubscriptionResponse_IEs->value.choice.RICrequestID.ricInstanceID;
+ foundRICrequestID = true;
+ }
+ else if (asnRicSubscriptionResponse->protocolIEs.list.array[i]->id == ProtocolIE_ID_id_RANfunctionID) {
+ if (checkIEOrder && i != 1) {
+ ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU);
+ return e2err_RICsubscriptionResponseRANfunctionIDWrongOrder;
+ }
+ pRICsubscriptionResponse_IEs = asnRicSubscriptionResponse->protocolIEs.list.array[i];
+ pRICSubscriptionResponse->ranFunctionID = pRICsubscriptionResponse_IEs->value.choice.RANfunctionID;
+ foundRANfunctionID = true;
+ }
+ else if (asnRicSubscriptionResponse->protocolIEs.list.array[i]->id == ProtocolIE_ID_id_RICactions_Admitted) {
+ if (checkIEOrder && i != 2) {
+ ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU);
+ return e2err_RICsubscriptionResponseRICaction_Admitted_ListWrongOrder;
+ }
+ pRICsubscriptionResponse_IEs = asnRicSubscriptionResponse->protocolIEs.list.array[i];
+ pRICSubscriptionResponse->ricActionAdmittedList.contentLength = 0;
+ uint64_t index = 0;
+ while ((index < maxofRICactionID) && (index < pRICsubscriptionResponse_IEs->value.choice.RICaction_Admitted_List.list.count)) {
+ RICaction_Admitted_ItemIEs_t* pRICaction_Admitted_ItemIEs =
+ (RICaction_Admitted_ItemIEs_t*)pRICsubscriptionResponse_IEs->value.choice.RICaction_Admitted_List.list.array[index];
+
+ // RICActionID
+ pRICSubscriptionResponse->ricActionAdmittedList.ricActionID[index] =
+ pRICaction_Admitted_ItemIEs->value.choice.RICaction_Admitted_Item.ricActionID;
+ index++;
+ }
+ pRICSubscriptionResponse->ricActionAdmittedList.contentLength = index;
+ foundRICactions_Admitted = true;
+ }
+ else if (asnRicSubscriptionResponse->protocolIEs.list.array[i]->id == ProtocolIE_ID_id_RICactions_NotAdmitted) {
+ if (checkIEOrder && i != 3) {
+ ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU);
+ return e2err_RICsubscriptionResponseRICaction_NotAdmitted_ListWrongOrder;
+ }
+ pRICsubscriptionResponse_IEs = asnRicSubscriptionResponse->protocolIEs.list.array[i];
+ if (pRICsubscriptionResponse_IEs->value.present == RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List) {
+ pRICSubscriptionResponse->ricActionNotAdmittedListPresent = true;
+ pRICSubscriptionResponse->ricActionNotAdmittedList.contentLength = 0;
+ uint64_t index = 0;
+ while ((index < maxofRICactionID) && (index < pRICsubscriptionResponse_IEs->value.choice.RICaction_NotAdmitted_List.list.count)) {
+ RICaction_NotAdmitted_ItemIEs_t* pRICaction_NotAdmitted_ItemIEs =
+ (RICaction_NotAdmitted_ItemIEs_t*)pRICsubscriptionResponse_IEs->value.choice.RICaction_NotAdmitted_List.list.array[index];
+
+ // RICActionID
+ pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricActionID =
+ pRICaction_NotAdmitted_ItemIEs->value.choice.RICaction_NotAdmitted_Item.ricActionID;
+
+ // Cause
+ if (pRICaction_NotAdmitted_ItemIEs->value.choice.RICaction_NotAdmitted_Item.cause.present == Cause_PR_ricRequest) {
+ pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.content = Cause_PR_ricRequest;
+ pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.causeVal =
+ pRICaction_NotAdmitted_ItemIEs->value.choice.RICaction_NotAdmitted_Item.cause.choice.ricRequest;
+ }
+ else if (pRICaction_NotAdmitted_ItemIEs->value.choice.RICaction_NotAdmitted_Item.cause.present == Cause_PR_ricService) {
+ pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.content = Cause_PR_ricService;
+ pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.causeVal =
+ pRICaction_NotAdmitted_ItemIEs->value.choice.RICaction_NotAdmitted_Item.cause.choice.ricService;
+ }
+ else if (pRICaction_NotAdmitted_ItemIEs->value.choice.RICaction_NotAdmitted_Item.cause.present == Cause_PR_e2Node) {
+ pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.content = Cause_PR_e2Node;
+ pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.causeVal =
+ pRICaction_NotAdmitted_ItemIEs->value.choice.RICaction_NotAdmitted_Item.cause.choice.e2Node;
+ }
+ else if (pRICaction_NotAdmitted_ItemIEs->value.choice.RICaction_NotAdmitted_Item.cause.present == Cause_PR_transport) {
+ pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.content = Cause_PR_transport;
+ pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.causeVal =
+ pRICaction_NotAdmitted_ItemIEs->value.choice.RICaction_NotAdmitted_Item.cause.choice.transport;
+ }
+ else if (pRICaction_NotAdmitted_ItemIEs->value.choice.RICaction_NotAdmitted_Item.cause.present == Cause_PR_protocol) {
+ pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.content = Cause_PR_protocol;
+ pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.causeVal =
+ pRICaction_NotAdmitted_ItemIEs->value.choice.RICaction_NotAdmitted_Item.cause.choice.protocol;
+ }
+ else if(pRICaction_NotAdmitted_ItemIEs->value.choice.RICaction_NotAdmitted_Item.cause.present == Cause_PR_misc) {
+ pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.content = Cause_PR_misc;
+ pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.causeVal =
+ pRICaction_NotAdmitted_ItemIEs->value.choice.RICaction_NotAdmitted_Item.cause.choice.misc;
+ }
+ index++;
+ }
+ pRICSubscriptionResponse->ricActionNotAdmittedList.contentLength = index;
+ foundRICaction_NotAdmitted = true;
+ }
+ }