X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=e2ap%2Fwrapper.c;h=9e535c886ba493eff67036acdc2cf85a1285b4fb;hb=2e99e2f4c89b1c232b3d1765197db44e3cced5b8;hp=231e77738016c9723b0450d080198ff4664c8d3d;hpb=d9673c002a30e08897f170adf1d66e6ca85c5c6a;p=ric-plt%2Fsubmgr.git diff --git a/e2ap/wrapper.c b/e2ap/wrapper.c index 231e777..9e535c8 100644 --- a/e2ap/wrapper.c +++ b/e2ap/wrapper.c @@ -206,3 +206,95 @@ ssize_t e2ap_set_ric_subscription_delete_response_sequence_number(void *buffer, } return -1; } + +// This function is not used currently. Can be deleted if not needed +ssize_t e2ap_set_ric_subscription_failure_sequence_number(void *buffer, size_t buf_size, long sequence_number) +{ + E2AP_PDU_t *pdu = decode_E2AP_PDU(buffer, buf_size); + if ( pdu != NULL && pdu->present == E2AP_PDU_PR_unsuccessfulOutcome ) + { + UnsuccessfulOutcome_t* unsuccessfulOutcome = pdu->choice.unsuccessfulOutcome; + if ( unsuccessfulOutcome->procedureCode == ProcedureCode_id_ricSubscription + && unsuccessfulOutcome->value.present == UnsuccessfulOutcome__value_PR_RICsubscriptionFailure ) + { + RICsubscriptionFailure_t* subscriptionFailure = &unsuccessfulOutcome->value.choice.RICsubscriptionFailure; + for (int i = 0; i < subscriptionFailure->protocolIEs.list.count; ++i ) + { + if ( subscriptionFailure->protocolIEs.list.array[i]->id == ProtocolIE_ID_id_RICrequestID ) + { + subscriptionFailure->protocolIEs.list.array[i]->value.choice.RICrequestID.ricRequestSequenceNumber = sequence_number; + return encode_E2AP_PDU(pdu, buffer, buf_size); + } + } + } + } + return -1; +} + +long e2ap_get_ric_subscription_failure_sequence_number(void *buffer, size_t buf_size) +{ + E2AP_PDU_t *pdu = decode_E2AP_PDU(buffer, buf_size); + if ( pdu != NULL && pdu->present == E2AP_PDU_PR_unsuccessfulOutcome ) + { + UnsuccessfulOutcome_t* unsuccessfulOutcome = pdu->choice.unsuccessfulOutcome; + if ( unsuccessfulOutcome->procedureCode == ProcedureCode_id_ricSubscription + && unsuccessfulOutcome->value.present == UnsuccessfulOutcome__value_PR_RICsubscriptionFailure ) + { + RICsubscriptionFailure_t* subscriptionFailure = &unsuccessfulOutcome->value.choice.RICsubscriptionFailure;; + for (int i = 0; i < subscriptionFailure->protocolIEs.list.count; ++i ) + { + if ( subscriptionFailure->protocolIEs.list.array[i]->id == ProtocolIE_ID_id_RICrequestID ) + { + return subscriptionFailure->protocolIEs.list.array[i]->value.choice.RICrequestID.ricRequestSequenceNumber; + } + } + } + } + return -1; +} + +// This function is not used currently. Can be deleted if not needed +ssize_t e2ap_set_ric_subscription_delete_failure_sequence_number(void *buffer, size_t buf_size, long sequence_number) +{ + E2AP_PDU_t *pdu = decode_E2AP_PDU(buffer, buf_size); + if ( pdu != NULL && pdu->present == E2AP_PDU_PR_unsuccessfulOutcome ) + { + UnsuccessfulOutcome_t* unsuccessfulOutcome = pdu->choice.unsuccessfulOutcome; + if ( unsuccessfulOutcome->procedureCode == ProcedureCode_id_ricSubscriptionDelete + && unsuccessfulOutcome->value.present == UnsuccessfulOutcome__value_PR_RICsubscriptionDeleteFailure ) + { + RICsubscriptionDeleteFailure_t* subscriptionDeleteFailure = &unsuccessfulOutcome->value.choice.RICsubscriptionDeleteFailure; + for (int i = 0; i < subscriptionDeleteFailure->protocolIEs.list.count; ++i ) + { + if ( subscriptionDeleteFailure->protocolIEs.list.array[i]->id == ProtocolIE_ID_id_RICrequestID ) + { + subscriptionDeleteFailure->protocolIEs.list.array[i]->value.choice.RICrequestID.ricRequestSequenceNumber = sequence_number; + return encode_E2AP_PDU(pdu, buffer, buf_size); + } + } + } + } + return -1; +} + +long e2ap_get_ric_subscription_delete_failure_sequence_number(void *buffer, size_t buf_size) +{ + E2AP_PDU_t *pdu = decode_E2AP_PDU(buffer, buf_size); + if ( pdu != NULL && pdu->present == E2AP_PDU_PR_unsuccessfulOutcome ) + { + UnsuccessfulOutcome_t* unsuccessfulOutcome = pdu->choice.unsuccessfulOutcome; + if ( unsuccessfulOutcome->procedureCode == ProcedureCode_id_ricSubscriptionDelete + && unsuccessfulOutcome->value.present == UnsuccessfulOutcome__value_PR_RICsubscriptionDeleteFailure ) + { + RICsubscriptionDeleteFailure_t* subscriptionDeleteFailure = &unsuccessfulOutcome->value.choice.RICsubscriptionDeleteFailure;; + for (int i = 0; i < subscriptionDeleteFailure->protocolIEs.list.count; ++i ) + { + if ( subscriptionDeleteFailure->protocolIEs.list.array[i]->id == ProtocolIE_ID_id_RICrequestID ) + { + return subscriptionDeleteFailure->protocolIEs.list.array[i]->value.choice.RICrequestID.ricRequestSequenceNumber; + } + } + } + } + return -1; +}