+ bool foundRICrequestID = false;
+ bool foundRANfunctionID = false;
+ bool foundCause = false;
+
+ for (int i = 0; i < asnRicSubscriptionDeleteFailure->protocolIEs.list.count; i++) {
+ if (asnRicSubscriptionDeleteFailure->protocolIEs.list.array[i]->id == ProtocolIE_ID_id_RICrequestID) {
+ if (checkIEOrder && i != 0) {
+ ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU);
+ return e2err_RICsubscriptionDeleteFailureRICrequestIDWrongOrder;
+ }
+ pRICsubscriptionDeleteFailure_IEs = asnRicSubscriptionDeleteFailure->protocolIEs.list.array[i];
+ pRICSubscriptionDeleteFailure->ricRequestID.ricRequestorID = pRICsubscriptionDeleteFailure_IEs->value.choice.RICrequestID.ricRequestorID;
+ pRICSubscriptionDeleteFailure->ricRequestID.ricInstanceID = pRICsubscriptionDeleteFailure_IEs->value.choice.RICrequestID.ricInstanceID;
+ foundRICrequestID = true;
+ } else if (asnRicSubscriptionDeleteFailure->protocolIEs.list.array[i]->id == ProtocolIE_ID_id_RANfunctionID) {
+ if (checkIEOrder && i != 1) {
+ ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU);
+ return e2err_RICsubscriptionDeleteFailureRANfunctionIDWrongOrder;
+ }
+ pRICsubscriptionDeleteFailure_IEs = asnRicSubscriptionDeleteFailure->protocolIEs.list.array[i];
+ pRICSubscriptionDeleteFailure->ranFunctionID = pRICsubscriptionDeleteFailure_IEs->value.choice.RANfunctionID;
+ foundRANfunctionID = true;
+ } else if (asnRicSubscriptionDeleteFailure->protocolIEs.list.array[i]->id == ProtocolIE_ID_id_Cause) {
+ if (checkIEOrder && i != 2) {
+ ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU);
+ return e2err_RICsubscriptionDeleteFailureRICcauseWrongOrder;
+ }
+ pRICsubscriptionDeleteFailure_IEs = asnRicSubscriptionDeleteFailure->protocolIEs.list.array[i];
+ if (pRICsubscriptionDeleteFailure_IEs->value.choice.Cause.present == Cause_PR_ricRequest) {
+ pRICSubscriptionDeleteFailure->cause.content = Cause_PR_ricRequest;
+ pRICSubscriptionDeleteFailure->cause.causeVal =
+ pRICsubscriptionDeleteFailure_IEs->value.choice.Cause.choice.ricRequest;
+ }
+ else if (pRICsubscriptionDeleteFailure_IEs->value.choice.Cause.present == Cause_PR_ricService) {
+ pRICSubscriptionDeleteFailure->cause.content = Cause_PR_ricService;
+ pRICSubscriptionDeleteFailure->cause.causeVal =
+ pRICsubscriptionDeleteFailure_IEs->value.choice.Cause.choice.ricService;
+ }
+ else if (pRICsubscriptionDeleteFailure_IEs->value.choice.Cause.present == Cause_PR_e2Node) {
+ pRICSubscriptionDeleteFailure->cause.content = Cause_PR_e2Node;
+ pRICSubscriptionDeleteFailure->cause.causeVal =
+ pRICsubscriptionDeleteFailure_IEs->value.choice.Cause.choice.e2Node;
+ }
+ else if (pRICsubscriptionDeleteFailure_IEs->value.choice.Cause.present == Cause_PR_transport) {
+ pRICSubscriptionDeleteFailure->cause.content = Cause_PR_transport;
+ pRICSubscriptionDeleteFailure->cause.causeVal =
+ pRICsubscriptionDeleteFailure_IEs->value.choice.Cause.choice.transport;
+ }
+ else if (pRICsubscriptionDeleteFailure_IEs->value.choice.Cause.present == Cause_PR_protocol) {
+ pRICSubscriptionDeleteFailure->cause.content = Cause_PR_protocol;
+ pRICSubscriptionDeleteFailure->cause.causeVal =
+ pRICsubscriptionDeleteFailure_IEs->value.choice.Cause.choice.protocol;
+ }
+ else if(pRICsubscriptionDeleteFailure_IEs->value.choice.Cause.present == Cause_PR_misc) {
+ pRICSubscriptionDeleteFailure->cause.content = Cause_PR_misc;
+ pRICSubscriptionDeleteFailure->cause.causeVal =
+ pRICsubscriptionDeleteFailure_IEs->value.choice.Cause.choice.misc;
+ }
+ foundCause = true;
+ }