+void generate_e2apv1_subscription_response_success(E2AP_PDU *e2ap_pdu, long reqActionIdsAccepted[],
+ long reqActionIdsRejected[], int accept_size, int reject_size,
+ long reqRequestorId, long reqInstanceId) {
+
+ RICsubscriptionResponse_IEs_t *respricreqid =
+ (RICsubscriptionResponse_IEs_t*)calloc(1, sizeof(RICsubscriptionResponse_IEs_t));
+
+ respricreqid->id = ProtocolIE_ID_id_RICrequestID;
+ respricreqid->criticality = 0;
+ respricreqid->value.present = RICsubscriptionResponse_IEs__value_PR_RICrequestID;
+ respricreqid->value.choice.RICrequestID.ricRequestorID = reqRequestorId;
+
+ respricreqid->value.choice.RICrequestID.ricInstanceID = reqInstanceId;
+
+
+ RICsubscriptionResponse_IEs_t *ricactionadmitted =
+ (RICsubscriptionResponse_IEs_t*)calloc(1, sizeof(RICsubscriptionResponse_IEs_t));
+ ricactionadmitted->id = ProtocolIE_ID_id_RICactions_Admitted;
+ ricactionadmitted->criticality = 0;
+ ricactionadmitted->value.present = RICsubscriptionResponse_IEs__value_PR_RICaction_Admitted_List;
+
+ RICaction_Admitted_List_t* admlist =
+ (RICaction_Admitted_List_t*)calloc(1,sizeof(RICaction_Admitted_List_t));
+ ricactionadmitted->value.choice.RICaction_Admitted_List = *admlist;
+
+ // int numAccept = sizeof(reqActionIdsAccepted);
+ int numAccept = accept_size;
+ int numReject = reject_size;
+ // int numReject = sizeof(reqActionIdsRejected);
+
+
+ for (int i=0; i < numAccept ; i++) {
+ fprintf(stderr, "in for loop i = %d\n", i);
+
+ long aid = reqActionIdsAccepted[i];
+
+ RICaction_Admitted_ItemIEs_t *admitie = (RICaction_Admitted_ItemIEs_t*)calloc(1,sizeof(RICaction_Admitted_ItemIEs_t));
+ admitie->id = ProtocolIE_ID_id_RICaction_Admitted_Item;
+ admitie->criticality = 0;
+ admitie->value.present = RICaction_Admitted_ItemIEs__value_PR_RICaction_Admitted_Item;
+ admitie->value.choice.RICaction_Admitted_Item.ricActionID = aid;
+
+ ASN_SEQUENCE_ADD(&ricactionadmitted->value.choice.RICaction_Admitted_List.list, admitie);
+
+ }
+
+ RICsubscriptionResponse_t *ricsubresp = (RICsubscriptionResponse_t*)calloc(1,sizeof(RICsubscriptionResponse_t));
+ ASN_SEQUENCE_ADD(&ricsubresp->protocolIEs.list, respricreqid);
+ ASN_SEQUENCE_ADD(&ricsubresp->protocolIEs.list, ricactionadmitted);
+
+
+ if (numReject > 0) {
+
+ RICsubscriptionResponse_IEs_t *ricactionrejected =
+ (RICsubscriptionResponse_IEs_t*)calloc(1, sizeof(RICsubscriptionResponse_IEs_t));
+ ricactionrejected->id = ProtocolIE_ID_id_RICactions_NotAdmitted;
+ ricactionrejected->criticality = 0;
+ ricactionrejected->value.present = RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List;
+
+ RICaction_NotAdmitted_List_t* rejectlist =
+ (RICaction_NotAdmitted_List_t*)calloc(1,sizeof(RICaction_NotAdmitted_List_t));
+ ricactionadmitted->value.choice.RICaction_NotAdmitted_List = *rejectlist;
+
+ for (int i=0; i < numReject; i++) {
+ fprintf(stderr, "in for loop i = %d\n", i);
+
+ long aid = reqActionIdsRejected[i];
+
+ RICaction_NotAdmitted_ItemIEs_t *noadmitie = (RICaction_NotAdmitted_ItemIEs_t*)calloc(1,sizeof(RICaction_NotAdmitted_ItemIEs_t));
+ noadmitie->id = ProtocolIE_ID_id_RICaction_NotAdmitted_Item;
+ noadmitie->criticality = 0;
+ noadmitie->value.present = RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item;
+ noadmitie->value.choice.RICaction_NotAdmitted_Item.ricActionID = aid;
+
+ ASN_SEQUENCE_ADD(&ricactionrejected->value.choice.RICaction_NotAdmitted_List.list, noadmitie);
+ ASN_SEQUENCE_ADD(&ricsubresp->protocolIEs.list, ricactionrejected);
+ }
+ }
+
+
+ SuccessfulOutcome__value_PR pres2;
+ pres2 = SuccessfulOutcome__value_PR_RICsubscriptionResponse;
+ SuccessfulOutcome_t *successoutcome = (SuccessfulOutcome_t*)calloc(1, sizeof(SuccessfulOutcome_t));
+ successoutcome->procedureCode = ProcedureCode_id_RICsubscription;
+ successoutcome->criticality = 0;
+ successoutcome->value.present = pres2;
+ successoutcome->value.choice.RICsubscriptionResponse = *ricsubresp;
+
+ E2AP_PDU_PR pres5 = E2AP_PDU_PR_successfulOutcome;
+
+ e2ap_pdu->present = pres5;
+ e2ap_pdu->choice.successfulOutcome = successoutcome;
+
+ char *error_buf = (char*)calloc(300, sizeof(char));
+ size_t errlen;
+
+ asn_check_constraints(&asn_DEF_E2AP_PDU, e2ap_pdu, error_buf, &errlen);
+ printf("error length %d\n", errlen);
+ printf("error buf %s\n", error_buf);
+
+
+}
+