This commit is contained in:
Oliver Smith 2022-11-14 13:41:44 +01:00
commit e0d160cbc7
12 changed files with 20796 additions and 0 deletions

1346
hnbap_decoder.c Normal file

File diff suppressed because it is too large Load Diff

519
hnbap_encoder.c Normal file
View File

@ -0,0 +1,519 @@
/*******************************************************************************
* This file had been created by asn1tostruct.py script v0.5osmo1
* Please do not modify this file but regenerate it via script.
* Created on: 2022-11-14 12:36:56
* from ['../../../src/osmo-iuh/asn1/hnbap/HNBAP-PDU-Contents.asn']
******************************************************************************/
#include <osmocom/hnbap/hnbap_common.h>
#include <osmocom/hnbap/hnbap_ies_defs.h>
int hnbap_encode_hnbregisterrequesties(
HNBAP_HNBRegisterRequest_t *hnbRegisterRequest,
HNBAP_HNBRegisterRequestIEs_t *hnbRegisterRequestIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_HNB_Identity,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_HNB_Identity,
&hnbRegisterRequestIEs->hnB_Identity)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbRegisterRequest->hnbRegisterRequest_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_HNB_Location_Information,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_HNB_Location_Information,
&hnbRegisterRequestIEs->hnB_Location_Information)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbRegisterRequest->hnbRegisterRequest_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_PLMNidentity,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_PLMNidentity,
&hnbRegisterRequestIEs->plmNidentity)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbRegisterRequest->hnbRegisterRequest_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_CellIdentity,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_CellIdentity,
&hnbRegisterRequestIEs->cellIdentity)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbRegisterRequest->hnbRegisterRequest_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_LAC,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_LAC,
&hnbRegisterRequestIEs->lac)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbRegisterRequest->hnbRegisterRequest_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_RAC,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_RAC,
&hnbRegisterRequestIEs->rac)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbRegisterRequest->hnbRegisterRequest_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_SAC,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_SAC,
&hnbRegisterRequestIEs->sac)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbRegisterRequest->hnbRegisterRequest_ies.list, ie);
/* Optional field */
if ((hnbRegisterRequestIEs->presenceMask & HNBREGISTERREQUESTIES_HNBAP_CSG_ID_PRESENT)
== HNBREGISTERREQUESTIES_HNBAP_CSG_ID_PRESENT) {
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_CSG_ID,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_CSG_ID,
&hnbRegisterRequestIEs->csg_id)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbRegisterRequest->hnbRegisterRequest_ies.list, ie);
}
return 0;
}
int hnbap_encode_hnbregisteraccepties(
HNBAP_HNBRegisterAccept_t *hnbRegisterAccept,
HNBAP_HNBRegisterAcceptIEs_t *hnbRegisterAcceptIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_RNC_ID,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_RNC_ID,
&hnbRegisterAcceptIEs->rnc_id)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbRegisterAccept->hnbRegisterAccept_ies.list, ie);
return 0;
}
int hnbap_encode_hnbregisterrejecties(
HNBAP_HNBRegisterReject_t *hnbRegisterReject,
HNBAP_HNBRegisterRejectIEs_t *hnbRegisterRejectIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Cause,
HNBAP_Criticality_ignore,
&asn_DEF_HNBAP_Cause,
&hnbRegisterRejectIEs->cause)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbRegisterReject->hnbRegisterReject_ies.list, ie);
/* Optional field */
if ((hnbRegisterRejectIEs->presenceMask & HNBREGISTERREJECTIES_HNBAP_CRITICALITYDIAGNOSTICS_PRESENT)
== HNBREGISTERREJECTIES_HNBAP_CRITICALITYDIAGNOSTICS_PRESENT) {
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_CriticalityDiagnostics,
HNBAP_Criticality_ignore,
&asn_DEF_HNBAP_CriticalityDiagnostics,
&hnbRegisterRejectIEs->criticalityDiagnostics)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbRegisterReject->hnbRegisterReject_ies.list, ie);
}
/* Conditional field */
if ((hnbRegisterRejectIEs->presenceMask & HNBREGISTERREJECTIES_HNBAP_BACKOFFTIMER_PRESENT)
== HNBREGISTERREJECTIES_HNBAP_BACKOFFTIMER_PRESENT) {
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_BackoffTimer,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_BackoffTimer,
&hnbRegisterRejectIEs->backoffTimer)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbRegisterReject->hnbRegisterReject_ies.list, ie);
}
return 0;
}
int hnbap_encode_hnbde_registeries(
HNBAP_HNBDe_Register_t *hnbDe_Register,
HNBAP_HNBDe_RegisterIEs_t *hnbDe_RegisterIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Cause,
HNBAP_Criticality_ignore,
&asn_DEF_HNBAP_Cause,
&hnbDe_RegisterIEs->cause)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbDe_Register->hnbDe_Register_ies.list, ie);
/* Conditional field */
if ((hnbDe_RegisterIEs->presenceMask & HNBDE_REGISTERIES_HNBAP_BACKOFFTIMER_PRESENT)
== HNBDE_REGISTERIES_HNBAP_BACKOFFTIMER_PRESENT) {
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_BackoffTimer,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_BackoffTimer,
&hnbDe_RegisterIEs->backoffTimer)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbDe_Register->hnbDe_Register_ies.list, ie);
}
return 0;
}
int hnbap_encode_ueregisterrequesties(
HNBAP_UERegisterRequest_t *ueRegisterRequest,
HNBAP_UERegisterRequestIEs_t *ueRegisterRequestIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_UE_Identity,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_UE_Identity,
&ueRegisterRequestIEs->uE_Identity)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&ueRegisterRequest->ueRegisterRequest_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Registration_Cause,
HNBAP_Criticality_ignore,
&asn_DEF_HNBAP_Registration_Cause,
&ueRegisterRequestIEs->registration_Cause)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&ueRegisterRequest->ueRegisterRequest_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_UE_Capabilities,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_UE_Capabilities,
&ueRegisterRequestIEs->uE_Capabilities)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&ueRegisterRequest->ueRegisterRequest_ies.list, ie);
return 0;
}
int hnbap_encode_ueregisteraccepties(
HNBAP_UERegisterAccept_t *ueRegisterAccept,
HNBAP_UERegisterAcceptIEs_t *ueRegisterAcceptIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_UE_Identity,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_UE_Identity,
&ueRegisterAcceptIEs->uE_Identity)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&ueRegisterAccept->ueRegisterAccept_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Context_ID,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_Context_ID,
&ueRegisterAcceptIEs->context_ID)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&ueRegisterAccept->ueRegisterAccept_ies.list, ie);
return 0;
}
int hnbap_encode_ueregisterrejecties(
HNBAP_UERegisterReject_t *ueRegisterReject,
HNBAP_UERegisterRejectIEs_t *ueRegisterRejectIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_UE_Identity,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_UE_Identity,
&ueRegisterRejectIEs->uE_Identity)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&ueRegisterReject->ueRegisterReject_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Cause,
HNBAP_Criticality_ignore,
&asn_DEF_HNBAP_Cause,
&ueRegisterRejectIEs->cause)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&ueRegisterReject->ueRegisterReject_ies.list, ie);
/* Optional field */
if ((ueRegisterRejectIEs->presenceMask & UEREGISTERREJECTIES_HNBAP_CRITICALITYDIAGNOSTICS_PRESENT)
== UEREGISTERREJECTIES_HNBAP_CRITICALITYDIAGNOSTICS_PRESENT) {
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_CriticalityDiagnostics,
HNBAP_Criticality_ignore,
&asn_DEF_HNBAP_CriticalityDiagnostics,
&ueRegisterRejectIEs->criticalityDiagnostics)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&ueRegisterReject->ueRegisterReject_ies.list, ie);
}
return 0;
}
int hnbap_encode_uede_registeries(
HNBAP_UEDe_Register_t *ueDe_Register,
HNBAP_UEDe_RegisterIEs_t *ueDe_RegisterIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Context_ID,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_Context_ID,
&ueDe_RegisterIEs->context_ID)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&ueDe_Register->ueDe_Register_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Cause,
HNBAP_Criticality_ignore,
&asn_DEF_HNBAP_Cause,
&ueDe_RegisterIEs->cause)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&ueDe_Register->ueDe_Register_ies.list, ie);
return 0;
}
int hnbap_encode_csgmembershipupdateies(
HNBAP_CSGMembershipUpdate_t *csgMembershipUpdate,
HNBAP_CSGMembershipUpdateIEs_t *csgMembershipUpdateIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Context_ID,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_Context_ID,
&csgMembershipUpdateIEs->context_ID)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&csgMembershipUpdate->csgMembershipUpdate_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_CSGMembershipStatus,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_CSGMembershipStatus,
&csgMembershipUpdateIEs->csgMembershipStatus)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&csgMembershipUpdate->csgMembershipUpdate_ies.list, ie);
return 0;
}
int hnbap_encode_tnlupdaterequesties(
HNBAP_TNLUpdateRequest_t *tnlUpdateRequest,
HNBAP_TNLUpdateRequestIEs_t *tnlUpdateRequestIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Context_ID,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_Context_ID,
&tnlUpdateRequestIEs->context_ID)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&tnlUpdateRequest->tnlUpdateRequest_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_RABList,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_RABList,
&tnlUpdateRequestIEs->rabList)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&tnlUpdateRequest->tnlUpdateRequest_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Update_cause,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_Update_cause,
&tnlUpdateRequestIEs->update_cause)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&tnlUpdateRequest->tnlUpdateRequest_ies.list, ie);
return 0;
}
int hnbap_encode_tnlupdateresponseies(
HNBAP_TNLUpdateResponse_t *tnlUpdateResponse,
HNBAP_TNLUpdateResponseIEs_t *tnlUpdateResponseIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Context_ID,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_Context_ID,
&tnlUpdateResponseIEs->context_ID)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&tnlUpdateResponse->tnlUpdateResponse_ies.list, ie);
return 0;
}
int hnbap_encode_tnlupdatefailureies(
HNBAP_TNLUpdateFailure_t *tnlUpdateFailure,
HNBAP_TNLUpdateFailureIEs_t *tnlUpdateFailureIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Context_ID,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_Context_ID,
&tnlUpdateFailureIEs->context_ID)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&tnlUpdateFailure->tnlUpdateFailure_ies.list, ie);
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Cause,
HNBAP_Criticality_ignore,
&asn_DEF_HNBAP_Cause,
&tnlUpdateFailureIEs->cause)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&tnlUpdateFailure->tnlUpdateFailure_ies.list, ie);
/* Optional field */
if ((tnlUpdateFailureIEs->presenceMask & TNLUPDATEFAILUREIES_HNBAP_CRITICALITYDIAGNOSTICS_PRESENT)
== TNLUPDATEFAILUREIES_HNBAP_CRITICALITYDIAGNOSTICS_PRESENT) {
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_CriticalityDiagnostics,
HNBAP_Criticality_ignore,
&asn_DEF_HNBAP_CriticalityDiagnostics,
&tnlUpdateFailureIEs->criticalityDiagnostics)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&tnlUpdateFailure->tnlUpdateFailure_ies.list, ie);
}
return 0;
}
int hnbap_encode_hnbconfigtransferrequesties(
HNBAP_HNBConfigTransferRequest_t *hnbConfigTransferRequest,
HNBAP_HNBConfigTransferRequestIEs_t *hnbConfigTransferRequestIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_NeighbourInfoRequestList,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_NeighbourInfoRequestList,
&hnbConfigTransferRequestIEs->neighbourInfoRequestList)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbConfigTransferRequest->hnbConfigTransferRequest_ies.list, ie);
return 0;
}
int hnbap_encode_hnbconfigtransferresponseies(
HNBAP_HNBConfigTransferResponse_t *hnbConfigTransferResponse,
HNBAP_HNBConfigTransferResponseIEs_t *hnbConfigTransferResponseIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_NeighbourInfoList,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_NeighbourInfoList,
&hnbConfigTransferResponseIEs->neighbourInfoList)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&hnbConfigTransferResponse->hnbConfigTransferResponse_ies.list, ie);
return 0;
}
int hnbap_encode_relocationcompleteies(
HNBAP_RelocationComplete_t *relocationComplete,
HNBAP_RelocationCompleteIEs_t *relocationCompleteIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Context_ID,
HNBAP_Criticality_ignore,
&asn_DEF_HNBAP_Context_ID,
&relocationCompleteIEs->context_ID)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&relocationComplete->relocationComplete_ies.list, ie);
return 0;
}
int hnbap_encode_errorindicationies(
HNBAP_ErrorIndication_t *errorIndication,
HNBAP_ErrorIndicationIEs_t *errorIndicationIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_Cause,
HNBAP_Criticality_ignore,
&asn_DEF_HNBAP_Cause,
&errorIndicationIEs->cause)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&errorIndication->errorIndication_ies.list, ie);
/* Optional field */
if ((errorIndicationIEs->presenceMask & ERRORINDICATIONIES_HNBAP_CRITICALITYDIAGNOSTICS_PRESENT)
== ERRORINDICATIONIES_HNBAP_CRITICALITYDIAGNOSTICS_PRESENT) {
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_CriticalityDiagnostics,
HNBAP_Criticality_ignore,
&asn_DEF_HNBAP_CriticalityDiagnostics,
&errorIndicationIEs->criticalityDiagnostics)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&errorIndication->errorIndication_ies.list, ie);
}
return 0;
}
int hnbap_encode_u_rntiqueryrequesties(
HNBAP_U_RNTIQueryRequest_t *u_RNTIQueryRequest,
HNBAP_U_RNTIQueryRequestIEs_t *u_RNTIQueryRequestIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_U_RNTI,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_U_RNTI,
&u_RNTIQueryRequestIEs->u_rnti)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&u_RNTIQueryRequest->u_RNTIQueryRequest_ies.list, ie);
return 0;
}
int hnbap_encode_u_rntiqueryresponseies(
HNBAP_U_RNTIQueryResponse_t *u_RNTIQueryResponse,
HNBAP_U_RNTIQueryResponseIEs_t *u_RNTIQueryResponseIEs) {
HNBAP_IE_t *ie;
if ((ie = hnbap_new_ie(HNBAP_ProtocolIE_ID_id_HNB_GWResponse,
HNBAP_Criticality_reject,
&asn_DEF_HNBAP_HNB_GWResponse,
&u_RNTIQueryResponseIEs->hnB_GWResponse)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&u_RNTIQueryResponse->u_RNTIQueryResponse_ies.list, ie);
return 0;
}

494
hnbap_ies_defs.h Normal file
View File

@ -0,0 +1,494 @@
/*******************************************************************************
* This file had been created by asn1tostruct.py script v0.5osmo1
* Please do not modify this file but regenerate it via script.
* Created on: 2022-11-14 12:36:56
* from ['../../../src/osmo-iuh/asn1/hnbap/HNBAP-PDU-Contents.asn']
******************************************************************************/
#include <osmocom/hnbap/hnbap_common.h>
#ifndef HNBAP_IES_DEFS_H_
#define HNBAP_IES_DEFS_H_
#define HNBREGISTERREQUESTIES_HNBAP_CSG_ID_PRESENT (1 << 0)
typedef struct HNBAP_HNBRegisterRequestIEs_s {
uint16_t presenceMask;
HNBAP_HNB_Identity_t hnB_Identity;
HNBAP_HNB_Location_Information_t hnB_Location_Information;
HNBAP_PLMNidentity_t plmNidentity;
HNBAP_CellIdentity_t cellIdentity;
HNBAP_LAC_t lac;
HNBAP_RAC_t rac;
HNBAP_SAC_t sac;
HNBAP_CSG_ID_t csg_id; ///< Optional field
} HNBAP_HNBRegisterRequestIEs_t;
typedef struct HNBAP_HNBRegisterAcceptIEs_s {
HNBAP_RNC_ID_t rnc_id;
} HNBAP_HNBRegisterAcceptIEs_t;
#define HNBREGISTERREJECTIES_HNBAP_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0)
#define HNBREGISTERREJECTIES_HNBAP_BACKOFFTIMER_PRESENT (1 << 1)
typedef struct HNBAP_HNBRegisterRejectIEs_s {
uint16_t presenceMask;
HNBAP_Cause_t cause;
HNBAP_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field
HNBAP_BackoffTimer_t backoffTimer; ///< Conditional field
} HNBAP_HNBRegisterRejectIEs_t;
#define HNBDE_REGISTERIES_HNBAP_BACKOFFTIMER_PRESENT (1 << 0)
typedef struct HNBAP_HNBDe_RegisterIEs_s {
uint16_t presenceMask;
HNBAP_Cause_t cause;
HNBAP_BackoffTimer_t backoffTimer; ///< Conditional field
} HNBAP_HNBDe_RegisterIEs_t;
typedef struct HNBAP_UERegisterRequestIEs_s {
HNBAP_UE_Identity_t uE_Identity;
HNBAP_Registration_Cause_t registration_Cause;
HNBAP_UE_Capabilities_t uE_Capabilities;
} HNBAP_UERegisterRequestIEs_t;
typedef struct HNBAP_UERegisterAcceptIEs_s {
HNBAP_UE_Identity_t uE_Identity;
HNBAP_Context_ID_t context_ID;
} HNBAP_UERegisterAcceptIEs_t;
#define UEREGISTERREJECTIES_HNBAP_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0)
typedef struct HNBAP_UERegisterRejectIEs_s {
uint16_t presenceMask;
HNBAP_UE_Identity_t uE_Identity;
HNBAP_Cause_t cause;
HNBAP_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field
} HNBAP_UERegisterRejectIEs_t;
typedef struct HNBAP_UEDe_RegisterIEs_s {
HNBAP_Context_ID_t context_ID;
HNBAP_Cause_t cause;
} HNBAP_UEDe_RegisterIEs_t;
typedef struct HNBAP_CSGMembershipUpdateIEs_s {
HNBAP_Context_ID_t context_ID;
HNBAP_CSGMembershipStatus_t csgMembershipStatus;
} HNBAP_CSGMembershipUpdateIEs_t;
typedef struct HNBAP_TNLUpdateRequestIEs_s {
HNBAP_Context_ID_t context_ID;
HNBAP_RABList_t rabList;
HNBAP_Update_cause_t update_cause;
} HNBAP_TNLUpdateRequestIEs_t;
typedef struct HNBAP_TNLUpdateResponseIEs_s {
HNBAP_Context_ID_t context_ID;
} HNBAP_TNLUpdateResponseIEs_t;
#define TNLUPDATEFAILUREIES_HNBAP_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0)
typedef struct HNBAP_TNLUpdateFailureIEs_s {
uint16_t presenceMask;
HNBAP_Context_ID_t context_ID;
HNBAP_Cause_t cause;
HNBAP_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field
} HNBAP_TNLUpdateFailureIEs_t;
typedef struct HNBAP_HNBConfigTransferRequestIEs_s {
HNBAP_NeighbourInfoRequestList_t neighbourInfoRequestList;
} HNBAP_HNBConfigTransferRequestIEs_t;
typedef struct HNBAP_HNBConfigTransferResponseIEs_s {
HNBAP_NeighbourInfoList_t neighbourInfoList;
} HNBAP_HNBConfigTransferResponseIEs_t;
typedef struct HNBAP_RelocationCompleteIEs_s {
HNBAP_Context_ID_t context_ID;
} HNBAP_RelocationCompleteIEs_t;
#define ERRORINDICATIONIES_HNBAP_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0)
typedef struct HNBAP_ErrorIndicationIEs_s {
uint16_t presenceMask;
HNBAP_Cause_t cause;
HNBAP_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field
} HNBAP_ErrorIndicationIEs_t;
typedef struct HNBAP_U_RNTIQueryRequestIEs_s {
HNBAP_U_RNTI_t u_rnti;
} HNBAP_U_RNTIQueryRequestIEs_t;
typedef struct HNBAP_U_RNTIQueryResponseIEs_s {
HNBAP_HNB_GWResponse_t hnB_GWResponse;
} HNBAP_U_RNTIQueryResponseIEs_t;
typedef struct hnbap_message_s {
uint8_t procedureCode;
uint8_t criticality;
uint8_t direction;
union {
HNBAP_CSGMembershipUpdateIEs_t csgMembershipUpdateIEs;
HNBAP_ErrorIndicationIEs_t errorIndicationIEs;
HNBAP_HNBConfigTransferRequestIEs_t hnbConfigTransferRequestIEs;
HNBAP_HNBConfigTransferResponseIEs_t hnbConfigTransferResponseIEs;
HNBAP_HNBDe_RegisterIEs_t hnbDe_RegisterIEs;
HNBAP_HNBRegisterAcceptIEs_t hnbRegisterAcceptIEs;
HNBAP_HNBRegisterRejectIEs_t hnbRegisterRejectIEs;
HNBAP_HNBRegisterRequestIEs_t hnbRegisterRequestIEs;
HNBAP_RelocationCompleteIEs_t relocationCompleteIEs;
HNBAP_TNLUpdateFailureIEs_t tnlUpdateFailureIEs;
HNBAP_TNLUpdateRequestIEs_t tnlUpdateRequestIEs;
HNBAP_TNLUpdateResponseIEs_t tnlUpdateResponseIEs;
HNBAP_U_RNTIQueryRequestIEs_t u_RNTIQueryRequestIEs;
HNBAP_U_RNTIQueryResponseIEs_t u_RNTIQueryResponseIEs;
HNBAP_UEDe_RegisterIEs_t ueDe_RegisterIEs;
HNBAP_UERegisterAcceptIEs_t ueRegisterAcceptIEs;
HNBAP_UERegisterRejectIEs_t ueRegisterRejectIEs;
HNBAP_UERegisterRequestIEs_t ueRegisterRequestIEs;
} msg;
} hnbap_message;
/** \brief Decode function for HNBRegisterRequestIEs ies.
* \param hnbRegisterRequestIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_hnbregisterrequesties(
HNBAP_HNBRegisterRequestIEs_t *hnbRegisterRequestIEs,
ANY_t *any_p);
/** \brief Encode function for HNBRegisterRequestIEs ies.
* \param hnbaP_HNBRegisterRequest Pointer to the ASN1 structure.
* \param hnbRegisterRequestIEs Pointer to the IES structure.
**/
int hnbap_encode_hnbregisterrequesties(
HNBAP_HNBRegisterRequest_t *hnbaP_HNBRegisterRequest,
HNBAP_HNBRegisterRequestIEs_t *hnbRegisterRequestIEs);
/** \brief Decode function for HNBRegisterAcceptIEs ies.
* \param hnbRegisterAcceptIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_hnbregisteraccepties(
HNBAP_HNBRegisterAcceptIEs_t *hnbRegisterAcceptIEs,
ANY_t *any_p);
/** \brief Encode function for HNBRegisterAcceptIEs ies.
* \param hnbaP_HNBRegisterAccept Pointer to the ASN1 structure.
* \param hnbRegisterAcceptIEs Pointer to the IES structure.
**/
int hnbap_encode_hnbregisteraccepties(
HNBAP_HNBRegisterAccept_t *hnbaP_HNBRegisterAccept,
HNBAP_HNBRegisterAcceptIEs_t *hnbRegisterAcceptIEs);
/** \brief Decode function for HNBRegisterRejectIEs ies.
* \param hnbRegisterRejectIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_hnbregisterrejecties(
HNBAP_HNBRegisterRejectIEs_t *hnbRegisterRejectIEs,
ANY_t *any_p);
/** \brief Encode function for HNBRegisterRejectIEs ies.
* \param hnbaP_HNBRegisterReject Pointer to the ASN1 structure.
* \param hnbRegisterRejectIEs Pointer to the IES structure.
**/
int hnbap_encode_hnbregisterrejecties(
HNBAP_HNBRegisterReject_t *hnbaP_HNBRegisterReject,
HNBAP_HNBRegisterRejectIEs_t *hnbRegisterRejectIEs);
/** \brief Decode function for HNBDe-RegisterIEs ies.
* \param hnbDe_RegisterIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_hnbde_registeries(
HNBAP_HNBDe_RegisterIEs_t *hnbDe_RegisterIEs,
ANY_t *any_p);
/** \brief Encode function for HNBDe-RegisterIEs ies.
* \param hnbaP_HNBDe_Register Pointer to the ASN1 structure.
* \param hnbDe_RegisterIEs Pointer to the IES structure.
**/
int hnbap_encode_hnbde_registeries(
HNBAP_HNBDe_Register_t *hnbaP_HNBDe_Register,
HNBAP_HNBDe_RegisterIEs_t *hnbDe_RegisterIEs);
/** \brief Decode function for UERegisterRequestIEs ies.
* \param ueRegisterRequestIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_ueregisterrequesties(
HNBAP_UERegisterRequestIEs_t *ueRegisterRequestIEs,
ANY_t *any_p);
/** \brief Encode function for UERegisterRequestIEs ies.
* \param hnbaP_UERegisterRequest Pointer to the ASN1 structure.
* \param ueRegisterRequestIEs Pointer to the IES structure.
**/
int hnbap_encode_ueregisterrequesties(
HNBAP_UERegisterRequest_t *hnbaP_UERegisterRequest,
HNBAP_UERegisterRequestIEs_t *ueRegisterRequestIEs);
/** \brief Decode function for UERegisterAcceptIEs ies.
* \param ueRegisterAcceptIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_ueregisteraccepties(
HNBAP_UERegisterAcceptIEs_t *ueRegisterAcceptIEs,
ANY_t *any_p);
/** \brief Encode function for UERegisterAcceptIEs ies.
* \param hnbaP_UERegisterAccept Pointer to the ASN1 structure.
* \param ueRegisterAcceptIEs Pointer to the IES structure.
**/
int hnbap_encode_ueregisteraccepties(
HNBAP_UERegisterAccept_t *hnbaP_UERegisterAccept,
HNBAP_UERegisterAcceptIEs_t *ueRegisterAcceptIEs);
/** \brief Decode function for UERegisterRejectIEs ies.
* \param ueRegisterRejectIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_ueregisterrejecties(
HNBAP_UERegisterRejectIEs_t *ueRegisterRejectIEs,
ANY_t *any_p);
/** \brief Encode function for UERegisterRejectIEs ies.
* \param hnbaP_UERegisterReject Pointer to the ASN1 structure.
* \param ueRegisterRejectIEs Pointer to the IES structure.
**/
int hnbap_encode_ueregisterrejecties(
HNBAP_UERegisterReject_t *hnbaP_UERegisterReject,
HNBAP_UERegisterRejectIEs_t *ueRegisterRejectIEs);
/** \brief Decode function for UEDe-RegisterIEs ies.
* \param ueDe_RegisterIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_uede_registeries(
HNBAP_UEDe_RegisterIEs_t *ueDe_RegisterIEs,
ANY_t *any_p);
/** \brief Encode function for UEDe-RegisterIEs ies.
* \param hnbaP_UEDe_Register Pointer to the ASN1 structure.
* \param ueDe_RegisterIEs Pointer to the IES structure.
**/
int hnbap_encode_uede_registeries(
HNBAP_UEDe_Register_t *hnbaP_UEDe_Register,
HNBAP_UEDe_RegisterIEs_t *ueDe_RegisterIEs);
/** \brief Decode function for CSGMembershipUpdateIEs ies.
* \param csgMembershipUpdateIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_csgmembershipupdateies(
HNBAP_CSGMembershipUpdateIEs_t *csgMembershipUpdateIEs,
ANY_t *any_p);
/** \brief Encode function for CSGMembershipUpdateIEs ies.
* \param hnbaP_CSGMembershipUpdate Pointer to the ASN1 structure.
* \param csgMembershipUpdateIEs Pointer to the IES structure.
**/
int hnbap_encode_csgmembershipupdateies(
HNBAP_CSGMembershipUpdate_t *hnbaP_CSGMembershipUpdate,
HNBAP_CSGMembershipUpdateIEs_t *csgMembershipUpdateIEs);
/** \brief Decode function for TNLUpdateRequestIEs ies.
* \param tnlUpdateRequestIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_tnlupdaterequesties(
HNBAP_TNLUpdateRequestIEs_t *tnlUpdateRequestIEs,
ANY_t *any_p);
/** \brief Encode function for TNLUpdateRequestIEs ies.
* \param hnbaP_TNLUpdateRequest Pointer to the ASN1 structure.
* \param tnlUpdateRequestIEs Pointer to the IES structure.
**/
int hnbap_encode_tnlupdaterequesties(
HNBAP_TNLUpdateRequest_t *hnbaP_TNLUpdateRequest,
HNBAP_TNLUpdateRequestIEs_t *tnlUpdateRequestIEs);
/** \brief Decode function for TNLUpdateResponseIEs ies.
* \param tnlUpdateResponseIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_tnlupdateresponseies(
HNBAP_TNLUpdateResponseIEs_t *tnlUpdateResponseIEs,
ANY_t *any_p);
/** \brief Encode function for TNLUpdateResponseIEs ies.
* \param hnbaP_TNLUpdateResponse Pointer to the ASN1 structure.
* \param tnlUpdateResponseIEs Pointer to the IES structure.
**/
int hnbap_encode_tnlupdateresponseies(
HNBAP_TNLUpdateResponse_t *hnbaP_TNLUpdateResponse,
HNBAP_TNLUpdateResponseIEs_t *tnlUpdateResponseIEs);
/** \brief Decode function for TNLUpdateFailureIEs ies.
* \param tnlUpdateFailureIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_tnlupdatefailureies(
HNBAP_TNLUpdateFailureIEs_t *tnlUpdateFailureIEs,
ANY_t *any_p);
/** \brief Encode function for TNLUpdateFailureIEs ies.
* \param hnbaP_TNLUpdateFailure Pointer to the ASN1 structure.
* \param tnlUpdateFailureIEs Pointer to the IES structure.
**/
int hnbap_encode_tnlupdatefailureies(
HNBAP_TNLUpdateFailure_t *hnbaP_TNLUpdateFailure,
HNBAP_TNLUpdateFailureIEs_t *tnlUpdateFailureIEs);
/** \brief Decode function for HNBConfigTransferRequestIEs ies.
* \param hnbConfigTransferRequestIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_hnbconfigtransferrequesties(
HNBAP_HNBConfigTransferRequestIEs_t *hnbConfigTransferRequestIEs,
ANY_t *any_p);
/** \brief Encode function for HNBConfigTransferRequestIEs ies.
* \param hnbaP_HNBConfigTransferRequest Pointer to the ASN1 structure.
* \param hnbConfigTransferRequestIEs Pointer to the IES structure.
**/
int hnbap_encode_hnbconfigtransferrequesties(
HNBAP_HNBConfigTransferRequest_t *hnbaP_HNBConfigTransferRequest,
HNBAP_HNBConfigTransferRequestIEs_t *hnbConfigTransferRequestIEs);
/** \brief Decode function for HNBConfigTransferResponseIEs ies.
* \param hnbConfigTransferResponseIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_hnbconfigtransferresponseies(
HNBAP_HNBConfigTransferResponseIEs_t *hnbConfigTransferResponseIEs,
ANY_t *any_p);
/** \brief Encode function for HNBConfigTransferResponseIEs ies.
* \param hnbaP_HNBConfigTransferResponse Pointer to the ASN1 structure.
* \param hnbConfigTransferResponseIEs Pointer to the IES structure.
**/
int hnbap_encode_hnbconfigtransferresponseies(
HNBAP_HNBConfigTransferResponse_t *hnbaP_HNBConfigTransferResponse,
HNBAP_HNBConfigTransferResponseIEs_t *hnbConfigTransferResponseIEs);
/** \brief Decode function for RelocationCompleteIEs ies.
* \param relocationCompleteIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_relocationcompleteies(
HNBAP_RelocationCompleteIEs_t *relocationCompleteIEs,
ANY_t *any_p);
/** \brief Encode function for RelocationCompleteIEs ies.
* \param hnbaP_RelocationComplete Pointer to the ASN1 structure.
* \param relocationCompleteIEs Pointer to the IES structure.
**/
int hnbap_encode_relocationcompleteies(
HNBAP_RelocationComplete_t *hnbaP_RelocationComplete,
HNBAP_RelocationCompleteIEs_t *relocationCompleteIEs);
/** \brief Decode function for ErrorIndicationIEs ies.
* \param errorIndicationIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_errorindicationies(
HNBAP_ErrorIndicationIEs_t *errorIndicationIEs,
ANY_t *any_p);
/** \brief Encode function for ErrorIndicationIEs ies.
* \param hnbaP_ErrorIndication Pointer to the ASN1 structure.
* \param errorIndicationIEs Pointer to the IES structure.
**/
int hnbap_encode_errorindicationies(
HNBAP_ErrorIndication_t *hnbaP_ErrorIndication,
HNBAP_ErrorIndicationIEs_t *errorIndicationIEs);
/** \brief Decode function for U-RNTIQueryRequestIEs ies.
* \param u_RNTIQueryRequestIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_u_rntiqueryrequesties(
HNBAP_U_RNTIQueryRequestIEs_t *u_RNTIQueryRequestIEs,
ANY_t *any_p);
/** \brief Encode function for U-RNTIQueryRequestIEs ies.
* \param hnbaP_U_RNTIQueryRequest Pointer to the ASN1 structure.
* \param u_RNTIQueryRequestIEs Pointer to the IES structure.
**/
int hnbap_encode_u_rntiqueryrequesties(
HNBAP_U_RNTIQueryRequest_t *hnbaP_U_RNTIQueryRequest,
HNBAP_U_RNTIQueryRequestIEs_t *u_RNTIQueryRequestIEs);
/** \brief Decode function for U-RNTIQueryResponseIEs ies.
* \param u_RNTIQueryResponseIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int hnbap_decode_u_rntiqueryresponseies(
HNBAP_U_RNTIQueryResponseIEs_t *u_RNTIQueryResponseIEs,
ANY_t *any_p);
/** \brief Encode function for U-RNTIQueryResponseIEs ies.
* \param hnbaP_U_RNTIQueryResponse Pointer to the ASN1 structure.
* \param u_RNTIQueryResponseIEs Pointer to the IES structure.
**/
int hnbap_encode_u_rntiqueryresponseies(
HNBAP_U_RNTIQueryResponse_t *hnbaP_U_RNTIQueryResponse,
HNBAP_U_RNTIQueryResponseIEs_t *u_RNTIQueryResponseIEs);
int hnbap_free_hnbregisterrequesties(
HNBAP_HNBRegisterRequestIEs_t *hnbRegisterRequestIEs);
int hnbap_free_hnbregisteraccepties(
HNBAP_HNBRegisterAcceptIEs_t *hnbRegisterAcceptIEs);
int hnbap_free_hnbregisterrejecties(
HNBAP_HNBRegisterRejectIEs_t *hnbRegisterRejectIEs);
int hnbap_free_hnbde_registeries(
HNBAP_HNBDe_RegisterIEs_t *hnbDe_RegisterIEs);
int hnbap_free_ueregisterrequesties(
HNBAP_UERegisterRequestIEs_t *ueRegisterRequestIEs);
int hnbap_free_ueregisteraccepties(
HNBAP_UERegisterAcceptIEs_t *ueRegisterAcceptIEs);
int hnbap_free_ueregisterrejecties(
HNBAP_UERegisterRejectIEs_t *ueRegisterRejectIEs);
int hnbap_free_uede_registeries(
HNBAP_UEDe_RegisterIEs_t *ueDe_RegisterIEs);
int hnbap_free_csgmembershipupdateies(
HNBAP_CSGMembershipUpdateIEs_t *csgMembershipUpdateIEs);
int hnbap_free_tnlupdaterequesties(
HNBAP_TNLUpdateRequestIEs_t *tnlUpdateRequestIEs);
int hnbap_free_tnlupdateresponseies(
HNBAP_TNLUpdateResponseIEs_t *tnlUpdateResponseIEs);
int hnbap_free_tnlupdatefailureies(
HNBAP_TNLUpdateFailureIEs_t *tnlUpdateFailureIEs);
int hnbap_free_hnbconfigtransferrequesties(
HNBAP_HNBConfigTransferRequestIEs_t *hnbConfigTransferRequestIEs);
int hnbap_free_hnbconfigtransferresponseies(
HNBAP_HNBConfigTransferResponseIEs_t *hnbConfigTransferResponseIEs);
int hnbap_free_relocationcompleteies(
HNBAP_RelocationCompleteIEs_t *relocationCompleteIEs);
int hnbap_free_errorindicationies(
HNBAP_ErrorIndicationIEs_t *errorIndicationIEs);
int hnbap_free_u_rntiqueryrequesties(
HNBAP_U_RNTIQueryRequestIEs_t *u_RNTIQueryRequestIEs);
int hnbap_free_u_rntiqueryresponseies(
HNBAP_U_RNTIQueryResponseIEs_t *u_RNTIQueryResponseIEs);
#endif /* HNBAP_IES_DEFS_H_ */

8829
ranap_decoder.c Normal file

File diff suppressed because it is too large Load Diff

3662
ranap_encoder.c Normal file

File diff suppressed because it is too large Load Diff

2967
ranap_ies_defs.h Normal file

File diff suppressed because it is too large Load Diff

444
rua_decoder.c Normal file
View File

@ -0,0 +1,444 @@
/*******************************************************************************
* This file had been created by asn1tostruct.py script v0.5osmo1
* Please do not modify this file but regenerate it via script.
* Created on: 2022-11-14 12:36:56
* from ['../../../src/osmo-iuh/asn1/rua/RUA-PDU-Contents.asn']
******************************************************************************/
#include <osmocom/rua/rua_common.h>
#include <osmocom/rua/rua_ies_defs.h>
int rua_decode_connecties(
RUA_ConnectIEs_t *connectIEs,
ANY_t *any_p) {
RUA_Connect_t *connect_p = NULL;
int i, decoded = 0;
int tempDecoded = 0;
assert(any_p != NULL);
assert(connectIEs != NULL);
memset(connectIEs, 0, sizeof(RUA_ConnectIEs_t));
RUA_DEBUG("Decoding message RUA_ConnectIEs (%s:%d)\n", __FILE__, __LINE__);
tempDecoded = ANY_to_type_aper(any_p, &asn_DEF_RUA_Connect, (void**)&connect_p);
if (tempDecoded < 0 || connect_p == NULL) {
RUA_DEBUG("Decoding of message RUA_ConnectIEs failed\n");
return -1;
}
for (i = 0; i < connect_p->connect_ies.list.count; i++) {
RUA_IE_t *ie_p;
ie_p = connect_p->connect_ies.list.array[i];
switch(ie_p->id) {
case RUA_ProtocolIE_ID_id_CN_DomainIndicator:
{
RUA_CN_DomainIndicator_t *ruA_CNDomainIndicator_p = NULL;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_CN_DomainIndicator, (void**)&ruA_CNDomainIndicator_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE cN_DomainIndicator failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_CN_DomainIndicator, ruA_CNDomainIndicator_p);
memcpy(&connectIEs->cN_DomainIndicator, ruA_CNDomainIndicator_p, sizeof(RUA_CN_DomainIndicator_t));
FREEMEM(ruA_CNDomainIndicator_p);
} break;
case RUA_ProtocolIE_ID_id_Context_ID:
{
RUA_Context_ID_t *ruA_ContextID_p = NULL;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_Context_ID, (void**)&ruA_ContextID_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE context_ID failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_Context_ID, ruA_ContextID_p);
memcpy(&connectIEs->context_ID, ruA_ContextID_p, sizeof(RUA_Context_ID_t));
FREEMEM(ruA_ContextID_p);
} break;
/* Optional field */
case RUA_ProtocolIE_ID_id_IntraDomainNasNodeSelector:
{
RUA_IntraDomainNasNodeSelector_t *ruA_IntraDomainNasNodeSelector_p = NULL;
connectIEs->presenceMask |= CONNECTIES_RUA_INTRADOMAINNASNODESELECTOR_PRESENT;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_IntraDomainNasNodeSelector, (void**)&ruA_IntraDomainNasNodeSelector_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE intraDomainNasNodeSelector failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_IntraDomainNasNodeSelector, ruA_IntraDomainNasNodeSelector_p);
memcpy(&connectIEs->intraDomainNasNodeSelector, ruA_IntraDomainNasNodeSelector_p, sizeof(RUA_IntraDomainNasNodeSelector_t));
FREEMEM(ruA_IntraDomainNasNodeSelector_p);
} break;
case RUA_ProtocolIE_ID_id_Establishment_Cause:
{
RUA_Establishment_Cause_t *ruA_EstablishmentCause_p = NULL;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_Establishment_Cause, (void**)&ruA_EstablishmentCause_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE establishment_Cause failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_Establishment_Cause, ruA_EstablishmentCause_p);
memcpy(&connectIEs->establishment_Cause, ruA_EstablishmentCause_p, sizeof(RUA_Establishment_Cause_t));
FREEMEM(ruA_EstablishmentCause_p);
} break;
case RUA_ProtocolIE_ID_id_RANAP_Message:
{
RUA_RANAP_Message_t *ruA_RANAPMessage_p = NULL;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_RANAP_Message, (void**)&ruA_RANAPMessage_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE ranaP_Message failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_RANAP_Message, ruA_RANAPMessage_p);
memcpy(&connectIEs->ranaP_Message, ruA_RANAPMessage_p, sizeof(RUA_RANAP_Message_t));
FREEMEM(ruA_RANAPMessage_p);
} break;
default:
RUA_DEBUG("Unknown protocol IE id (%d) for message connecties\n", (int)ie_p->id);
return -1;
}
}
ASN_STRUCT_FREE(asn_DEF_RUA_Connect, connect_p);
return decoded;
}
int rua_decode_directtransferies(
RUA_DirectTransferIEs_t *directTransferIEs,
ANY_t *any_p) {
RUA_DirectTransfer_t *directTransfer_p = NULL;
int i, decoded = 0;
int tempDecoded = 0;
assert(any_p != NULL);
assert(directTransferIEs != NULL);
memset(directTransferIEs, 0, sizeof(RUA_DirectTransferIEs_t));
RUA_DEBUG("Decoding message RUA_DirectTransferIEs (%s:%d)\n", __FILE__, __LINE__);
tempDecoded = ANY_to_type_aper(any_p, &asn_DEF_RUA_DirectTransfer, (void**)&directTransfer_p);
if (tempDecoded < 0 || directTransfer_p == NULL) {
RUA_DEBUG("Decoding of message RUA_DirectTransferIEs failed\n");
return -1;
}
for (i = 0; i < directTransfer_p->directTransfer_ies.list.count; i++) {
RUA_IE_t *ie_p;
ie_p = directTransfer_p->directTransfer_ies.list.array[i];
switch(ie_p->id) {
case RUA_ProtocolIE_ID_id_CN_DomainIndicator:
{
RUA_CN_DomainIndicator_t *ruA_CNDomainIndicator_p = NULL;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_CN_DomainIndicator, (void**)&ruA_CNDomainIndicator_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE cN_DomainIndicator failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_CN_DomainIndicator, ruA_CNDomainIndicator_p);
memcpy(&directTransferIEs->cN_DomainIndicator, ruA_CNDomainIndicator_p, sizeof(RUA_CN_DomainIndicator_t));
FREEMEM(ruA_CNDomainIndicator_p);
} break;
case RUA_ProtocolIE_ID_id_Context_ID:
{
RUA_Context_ID_t *ruA_ContextID_p = NULL;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_Context_ID, (void**)&ruA_ContextID_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE context_ID failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_Context_ID, ruA_ContextID_p);
memcpy(&directTransferIEs->context_ID, ruA_ContextID_p, sizeof(RUA_Context_ID_t));
FREEMEM(ruA_ContextID_p);
} break;
case RUA_ProtocolIE_ID_id_RANAP_Message:
{
RUA_RANAP_Message_t *ruA_RANAPMessage_p = NULL;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_RANAP_Message, (void**)&ruA_RANAPMessage_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE ranaP_Message failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_RANAP_Message, ruA_RANAPMessage_p);
memcpy(&directTransferIEs->ranaP_Message, ruA_RANAPMessage_p, sizeof(RUA_RANAP_Message_t));
FREEMEM(ruA_RANAPMessage_p);
} break;
default:
RUA_DEBUG("Unknown protocol IE id (%d) for message directtransferies\n", (int)ie_p->id);
return -1;
}
}
ASN_STRUCT_FREE(asn_DEF_RUA_DirectTransfer, directTransfer_p);
return decoded;
}
int rua_decode_disconnecties(
RUA_DisconnectIEs_t *disconnectIEs,
ANY_t *any_p) {
RUA_Disconnect_t *disconnect_p = NULL;
int i, decoded = 0;
int tempDecoded = 0;
assert(any_p != NULL);
assert(disconnectIEs != NULL);
memset(disconnectIEs, 0, sizeof(RUA_DisconnectIEs_t));
RUA_DEBUG("Decoding message RUA_DisconnectIEs (%s:%d)\n", __FILE__, __LINE__);
tempDecoded = ANY_to_type_aper(any_p, &asn_DEF_RUA_Disconnect, (void**)&disconnect_p);
if (tempDecoded < 0 || disconnect_p == NULL) {
RUA_DEBUG("Decoding of message RUA_DisconnectIEs failed\n");
return -1;
}
for (i = 0; i < disconnect_p->disconnect_ies.list.count; i++) {
RUA_IE_t *ie_p;
ie_p = disconnect_p->disconnect_ies.list.array[i];
switch(ie_p->id) {
case RUA_ProtocolIE_ID_id_CN_DomainIndicator:
{
RUA_CN_DomainIndicator_t *ruA_CNDomainIndicator_p = NULL;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_CN_DomainIndicator, (void**)&ruA_CNDomainIndicator_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE cN_DomainIndicator failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_CN_DomainIndicator, ruA_CNDomainIndicator_p);
memcpy(&disconnectIEs->cN_DomainIndicator, ruA_CNDomainIndicator_p, sizeof(RUA_CN_DomainIndicator_t));
FREEMEM(ruA_CNDomainIndicator_p);
} break;
case RUA_ProtocolIE_ID_id_Context_ID:
{
RUA_Context_ID_t *ruA_ContextID_p = NULL;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_Context_ID, (void**)&ruA_ContextID_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE context_ID failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_Context_ID, ruA_ContextID_p);
memcpy(&disconnectIEs->context_ID, ruA_ContextID_p, sizeof(RUA_Context_ID_t));
FREEMEM(ruA_ContextID_p);
} break;
case RUA_ProtocolIE_ID_id_Cause:
{
RUA_Cause_t *ruA_Cause_p = NULL;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_Cause, (void**)&ruA_Cause_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE cause failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_Cause, ruA_Cause_p);
memcpy(&disconnectIEs->cause, ruA_Cause_p, sizeof(RUA_Cause_t));
FREEMEM(ruA_Cause_p);
} break;
/* Conditional field */
case RUA_ProtocolIE_ID_id_RANAP_Message:
{
RUA_RANAP_Message_t *ruA_RANAPMessage_p = NULL;
disconnectIEs->presenceMask |= DISCONNECTIES_RUA_RANAP_MESSAGE_PRESENT;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_RANAP_Message, (void**)&ruA_RANAPMessage_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE ranaP_Message failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_RANAP_Message, ruA_RANAPMessage_p);
memcpy(&disconnectIEs->ranaP_Message, ruA_RANAPMessage_p, sizeof(RUA_RANAP_Message_t));
FREEMEM(ruA_RANAPMessage_p);
} break;
default:
RUA_DEBUG("Unknown protocol IE id (%d) for message disconnecties\n", (int)ie_p->id);
return -1;
}
}
ASN_STRUCT_FREE(asn_DEF_RUA_Disconnect, disconnect_p);
return decoded;
}
int rua_decode_connectionlesstransferies(
RUA_ConnectionlessTransferIEs_t *connectionlessTransferIEs,
ANY_t *any_p) {
RUA_ConnectionlessTransfer_t *connectionlessTransfer_p = NULL;
int i, decoded = 0;
int tempDecoded = 0;
assert(any_p != NULL);
assert(connectionlessTransferIEs != NULL);
memset(connectionlessTransferIEs, 0, sizeof(RUA_ConnectionlessTransferIEs_t));
RUA_DEBUG("Decoding message RUA_ConnectionlessTransferIEs (%s:%d)\n", __FILE__, __LINE__);
tempDecoded = ANY_to_type_aper(any_p, &asn_DEF_RUA_ConnectionlessTransfer, (void**)&connectionlessTransfer_p);
if (tempDecoded < 0 || connectionlessTransfer_p == NULL) {
RUA_DEBUG("Decoding of message RUA_ConnectionlessTransferIEs failed\n");
return -1;
}
for (i = 0; i < connectionlessTransfer_p->connectionlessTransfer_ies.list.count; i++) {
RUA_IE_t *ie_p;
ie_p = connectionlessTransfer_p->connectionlessTransfer_ies.list.array[i];
switch(ie_p->id) {
case RUA_ProtocolIE_ID_id_RANAP_Message:
{
RUA_RANAP_Message_t *ruA_RANAPMessage_p = NULL;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_RANAP_Message, (void**)&ruA_RANAPMessage_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE ranaP_Message failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_RANAP_Message, ruA_RANAPMessage_p);
memcpy(&connectionlessTransferIEs->ranaP_Message, ruA_RANAPMessage_p, sizeof(RUA_RANAP_Message_t));
FREEMEM(ruA_RANAPMessage_p);
} break;
default:
RUA_DEBUG("Unknown protocol IE id (%d) for message connectionlesstransferies\n", (int)ie_p->id);
return -1;
}
}
ASN_STRUCT_FREE(asn_DEF_RUA_ConnectionlessTransfer, connectionlessTransfer_p);
return decoded;
}
int rua_decode_errorindicationies(
RUA_ErrorIndicationIEs_t *errorIndicationIEs,
ANY_t *any_p) {
RUA_ErrorIndication_t *errorIndication_p = NULL;
int i, decoded = 0;
int tempDecoded = 0;
assert(any_p != NULL);
assert(errorIndicationIEs != NULL);
memset(errorIndicationIEs, 0, sizeof(RUA_ErrorIndicationIEs_t));
RUA_DEBUG("Decoding message RUA_ErrorIndicationIEs (%s:%d)\n", __FILE__, __LINE__);
tempDecoded = ANY_to_type_aper(any_p, &asn_DEF_RUA_ErrorIndication, (void**)&errorIndication_p);
if (tempDecoded < 0 || errorIndication_p == NULL) {
RUA_DEBUG("Decoding of message RUA_ErrorIndicationIEs failed\n");
return -1;
}
for (i = 0; i < errorIndication_p->errorIndication_ies.list.count; i++) {
RUA_IE_t *ie_p;
ie_p = errorIndication_p->errorIndication_ies.list.array[i];
switch(ie_p->id) {
case RUA_ProtocolIE_ID_id_Cause:
{
RUA_Cause_t *ruA_Cause_p = NULL;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_Cause, (void**)&ruA_Cause_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE cause failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_Cause, ruA_Cause_p);
memcpy(&errorIndicationIEs->cause, ruA_Cause_p, sizeof(RUA_Cause_t));
FREEMEM(ruA_Cause_p);
} break;
/* Optional field */
case RUA_ProtocolIE_ID_id_CriticalityDiagnostics:
{
RUA_CriticalityDiagnostics_t *ruA_CriticalityDiagnostics_p = NULL;
errorIndicationIEs->presenceMask |= ERRORINDICATIONIES_RUA_CRITICALITYDIAGNOSTICS_PRESENT;
tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RUA_CriticalityDiagnostics, (void**)&ruA_CriticalityDiagnostics_p);
if (tempDecoded < 0) {
RUA_DEBUG("Decoding of IE criticalityDiagnostics failed\n");
return -1;
}
decoded += tempDecoded;
if (asn1_xer_print)
xer_fprint(stdout, &asn_DEF_RUA_CriticalityDiagnostics, ruA_CriticalityDiagnostics_p);
memcpy(&errorIndicationIEs->criticalityDiagnostics, ruA_CriticalityDiagnostics_p, sizeof(RUA_CriticalityDiagnostics_t));
FREEMEM(ruA_CriticalityDiagnostics_p);
} break;
default:
RUA_DEBUG("Unknown protocol IE id (%d) for message errorindicationies\n", (int)ie_p->id);
return -1;
}
}
ASN_STRUCT_FREE(asn_DEF_RUA_ErrorIndication, errorIndication_p);
return decoded;
}
int rua_free_connecties(
RUA_ConnectIEs_t *connectIEs) {
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_CN_DomainIndicator, &connectIEs->cN_DomainIndicator);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_Context_ID, &connectIEs->context_ID);
/* Optional field */
if ((connectIEs->presenceMask & CONNECTIES_RUA_INTRADOMAINNASNODESELECTOR_PRESENT)
== CONNECTIES_RUA_INTRADOMAINNASNODESELECTOR_PRESENT)
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_IntraDomainNasNodeSelector, &connectIEs->intraDomainNasNodeSelector);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_Establishment_Cause, &connectIEs->establishment_Cause);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_RANAP_Message, &connectIEs->ranaP_Message);
return 0;
}
int rua_free_directtransferies(
RUA_DirectTransferIEs_t *directTransferIEs) {
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_CN_DomainIndicator, &directTransferIEs->cN_DomainIndicator);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_Context_ID, &directTransferIEs->context_ID);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_RANAP_Message, &directTransferIEs->ranaP_Message);
return 0;
}
int rua_free_disconnecties(
RUA_DisconnectIEs_t *disconnectIEs) {
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_CN_DomainIndicator, &disconnectIEs->cN_DomainIndicator);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_Context_ID, &disconnectIEs->context_ID);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_Cause, &disconnectIEs->cause);
/* Conditional field */
if ((disconnectIEs->presenceMask & DISCONNECTIES_RUA_RANAP_MESSAGE_PRESENT)
== DISCONNECTIES_RUA_RANAP_MESSAGE_PRESENT)
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_RANAP_Message, &disconnectIEs->ranaP_Message);
return 0;
}
int rua_free_connectionlesstransferies(
RUA_ConnectionlessTransferIEs_t *connectionlessTransferIEs) {
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_RANAP_Message, &connectionlessTransferIEs->ranaP_Message);
return 0;
}
int rua_free_errorindicationies(
RUA_ErrorIndicationIEs_t *errorIndicationIEs) {
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_Cause, &errorIndicationIEs->cause);
/* Optional field */
if ((errorIndicationIEs->presenceMask & ERRORINDICATIONIES_RUA_CRITICALITYDIAGNOSTICS_PRESENT)
== ERRORINDICATIONIES_RUA_CRITICALITYDIAGNOSTICS_PRESENT)
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_CriticalityDiagnostics, &errorIndicationIEs->criticalityDiagnostics);
return 0;
}

186
rua_encoder.c Normal file
View File

@ -0,0 +1,186 @@
/*******************************************************************************
* This file had been created by asn1tostruct.py script v0.5osmo1
* Please do not modify this file but regenerate it via script.
* Created on: 2022-11-14 12:36:56
* from ['../../../src/osmo-iuh/asn1/rua/RUA-PDU-Contents.asn']
******************************************************************************/
#include <osmocom/rua/rua_common.h>
#include <osmocom/rua/rua_ies_defs.h>
int rua_encode_connecties(
RUA_Connect_t *connect,
RUA_ConnectIEs_t *connectIEs) {
RUA_IE_t *ie;
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_CN_DomainIndicator,
RUA_Criticality_reject,
&asn_DEF_RUA_CN_DomainIndicator,
&connectIEs->cN_DomainIndicator)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&connect->connect_ies.list, ie);
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_Context_ID,
RUA_Criticality_reject,
&asn_DEF_RUA_Context_ID,
&connectIEs->context_ID)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&connect->connect_ies.list, ie);
/* Optional field */
if ((connectIEs->presenceMask & CONNECTIES_RUA_INTRADOMAINNASNODESELECTOR_PRESENT)
== CONNECTIES_RUA_INTRADOMAINNASNODESELECTOR_PRESENT) {
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_IntraDomainNasNodeSelector,
RUA_Criticality_ignore,
&asn_DEF_RUA_IntraDomainNasNodeSelector,
&connectIEs->intraDomainNasNodeSelector)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&connect->connect_ies.list, ie);
}
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_Establishment_Cause,
RUA_Criticality_reject,
&asn_DEF_RUA_Establishment_Cause,
&connectIEs->establishment_Cause)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&connect->connect_ies.list, ie);
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_RANAP_Message,
RUA_Criticality_reject,
&asn_DEF_RUA_RANAP_Message,
&connectIEs->ranaP_Message)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&connect->connect_ies.list, ie);
return 0;
}
int rua_encode_directtransferies(
RUA_DirectTransfer_t *directTransfer,
RUA_DirectTransferIEs_t *directTransferIEs) {
RUA_IE_t *ie;
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_CN_DomainIndicator,
RUA_Criticality_reject,
&asn_DEF_RUA_CN_DomainIndicator,
&directTransferIEs->cN_DomainIndicator)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&directTransfer->directTransfer_ies.list, ie);
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_Context_ID,
RUA_Criticality_reject,
&asn_DEF_RUA_Context_ID,
&directTransferIEs->context_ID)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&directTransfer->directTransfer_ies.list, ie);
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_RANAP_Message,
RUA_Criticality_reject,
&asn_DEF_RUA_RANAP_Message,
&directTransferIEs->ranaP_Message)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&directTransfer->directTransfer_ies.list, ie);
return 0;
}
int rua_encode_disconnecties(
RUA_Disconnect_t *disconnect,
RUA_DisconnectIEs_t *disconnectIEs) {
RUA_IE_t *ie;
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_CN_DomainIndicator,
RUA_Criticality_reject,
&asn_DEF_RUA_CN_DomainIndicator,
&disconnectIEs->cN_DomainIndicator)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&disconnect->disconnect_ies.list, ie);
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_Context_ID,
RUA_Criticality_reject,
&asn_DEF_RUA_Context_ID,
&disconnectIEs->context_ID)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&disconnect->disconnect_ies.list, ie);
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_Cause,
RUA_Criticality_reject,
&asn_DEF_RUA_Cause,
&disconnectIEs->cause)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&disconnect->disconnect_ies.list, ie);
/* Conditional field */
if ((disconnectIEs->presenceMask & DISCONNECTIES_RUA_RANAP_MESSAGE_PRESENT)
== DISCONNECTIES_RUA_RANAP_MESSAGE_PRESENT) {
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_RANAP_Message,
RUA_Criticality_reject,
&asn_DEF_RUA_RANAP_Message,
&disconnectIEs->ranaP_Message)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&disconnect->disconnect_ies.list, ie);
}
return 0;
}
int rua_encode_connectionlesstransferies(
RUA_ConnectionlessTransfer_t *connectionlessTransfer,
RUA_ConnectionlessTransferIEs_t *connectionlessTransferIEs) {
RUA_IE_t *ie;
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_RANAP_Message,
RUA_Criticality_reject,
&asn_DEF_RUA_RANAP_Message,
&connectionlessTransferIEs->ranaP_Message)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&connectionlessTransfer->connectionlessTransfer_ies.list, ie);
return 0;
}
int rua_encode_errorindicationies(
RUA_ErrorIndication_t *errorIndication,
RUA_ErrorIndicationIEs_t *errorIndicationIEs) {
RUA_IE_t *ie;
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_Cause,
RUA_Criticality_ignore,
&asn_DEF_RUA_Cause,
&errorIndicationIEs->cause)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&errorIndication->errorIndication_ies.list, ie);
/* Optional field */
if ((errorIndicationIEs->presenceMask & ERRORINDICATIONIES_RUA_CRITICALITYDIAGNOSTICS_PRESENT)
== ERRORINDICATIONIES_RUA_CRITICALITYDIAGNOSTICS_PRESENT) {
if ((ie = rua_new_ie(RUA_ProtocolIE_ID_id_CriticalityDiagnostics,
RUA_Criticality_ignore,
&asn_DEF_RUA_CriticalityDiagnostics,
&errorIndicationIEs->criticalityDiagnostics)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&errorIndication->errorIndication_ies.list, ie);
}
return 0;
}

160
rua_ies_defs.h Normal file
View File

@ -0,0 +1,160 @@
/*******************************************************************************
* This file had been created by asn1tostruct.py script v0.5osmo1
* Please do not modify this file but regenerate it via script.
* Created on: 2022-11-14 12:36:56
* from ['../../../src/osmo-iuh/asn1/rua/RUA-PDU-Contents.asn']
******************************************************************************/
#include <osmocom/rua/rua_common.h>
#ifndef RUA_IES_DEFS_H_
#define RUA_IES_DEFS_H_
#define CONNECTIES_RUA_INTRADOMAINNASNODESELECTOR_PRESENT (1 << 0)
typedef struct RUA_ConnectIEs_s {
uint16_t presenceMask;
RUA_CN_DomainIndicator_t cN_DomainIndicator;
RUA_Context_ID_t context_ID;
RUA_IntraDomainNasNodeSelector_t intraDomainNasNodeSelector; ///< Optional field
RUA_Establishment_Cause_t establishment_Cause;
RUA_RANAP_Message_t ranaP_Message;
} RUA_ConnectIEs_t;
typedef struct RUA_DirectTransferIEs_s {
RUA_CN_DomainIndicator_t cN_DomainIndicator;
RUA_Context_ID_t context_ID;
RUA_RANAP_Message_t ranaP_Message;
} RUA_DirectTransferIEs_t;
#define DISCONNECTIES_RUA_RANAP_MESSAGE_PRESENT (1 << 0)
typedef struct RUA_DisconnectIEs_s {
uint16_t presenceMask;
RUA_CN_DomainIndicator_t cN_DomainIndicator;
RUA_Context_ID_t context_ID;
RUA_Cause_t cause;
RUA_RANAP_Message_t ranaP_Message; ///< Conditional field
} RUA_DisconnectIEs_t;
typedef struct RUA_ConnectionlessTransferIEs_s {
RUA_RANAP_Message_t ranaP_Message;
} RUA_ConnectionlessTransferIEs_t;
#define ERRORINDICATIONIES_RUA_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0)
typedef struct RUA_ErrorIndicationIEs_s {
uint16_t presenceMask;
RUA_Cause_t cause;
RUA_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field
} RUA_ErrorIndicationIEs_t;
typedef struct rua_message_s {
uint8_t procedureCode;
uint8_t criticality;
uint8_t direction;
union {
RUA_ConnectIEs_t connectIEs;
RUA_ConnectionlessTransferIEs_t connectionlessTransferIEs;
RUA_DirectTransferIEs_t directTransferIEs;
RUA_DisconnectIEs_t disconnectIEs;
RUA_ErrorIndicationIEs_t errorIndicationIEs;
} msg;
} rua_message;
/** \brief Decode function for ConnectIEs ies.
* \param connectIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int rua_decode_connecties(
RUA_ConnectIEs_t *connectIEs,
ANY_t *any_p);
/** \brief Encode function for ConnectIEs ies.
* \param ruA_Connect Pointer to the ASN1 structure.
* \param connectIEs Pointer to the IES structure.
**/
int rua_encode_connecties(
RUA_Connect_t *ruA_Connect,
RUA_ConnectIEs_t *connectIEs);
/** \brief Decode function for DirectTransferIEs ies.
* \param directTransferIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int rua_decode_directtransferies(
RUA_DirectTransferIEs_t *directTransferIEs,
ANY_t *any_p);
/** \brief Encode function for DirectTransferIEs ies.
* \param ruA_DirectTransfer Pointer to the ASN1 structure.
* \param directTransferIEs Pointer to the IES structure.
**/
int rua_encode_directtransferies(
RUA_DirectTransfer_t *ruA_DirectTransfer,
RUA_DirectTransferIEs_t *directTransferIEs);
/** \brief Decode function for DisconnectIEs ies.
* \param disconnectIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int rua_decode_disconnecties(
RUA_DisconnectIEs_t *disconnectIEs,
ANY_t *any_p);
/** \brief Encode function for DisconnectIEs ies.
* \param ruA_Disconnect Pointer to the ASN1 structure.
* \param disconnectIEs Pointer to the IES structure.
**/
int rua_encode_disconnecties(
RUA_Disconnect_t *ruA_Disconnect,
RUA_DisconnectIEs_t *disconnectIEs);
/** \brief Decode function for ConnectionlessTransferIEs ies.
* \param connectionlessTransferIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int rua_decode_connectionlesstransferies(
RUA_ConnectionlessTransferIEs_t *connectionlessTransferIEs,
ANY_t *any_p);
/** \brief Encode function for ConnectionlessTransferIEs ies.
* \param ruA_ConnectionlessTransfer Pointer to the ASN1 structure.
* \param connectionlessTransferIEs Pointer to the IES structure.
**/
int rua_encode_connectionlesstransferies(
RUA_ConnectionlessTransfer_t *ruA_ConnectionlessTransfer,
RUA_ConnectionlessTransferIEs_t *connectionlessTransferIEs);
/** \brief Decode function for ErrorIndicationIEs ies.
* \param errorIndicationIEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int rua_decode_errorindicationies(
RUA_ErrorIndicationIEs_t *errorIndicationIEs,
ANY_t *any_p);
/** \brief Encode function for ErrorIndicationIEs ies.
* \param ruA_ErrorIndication Pointer to the ASN1 structure.
* \param errorIndicationIEs Pointer to the IES structure.
**/
int rua_encode_errorindicationies(
RUA_ErrorIndication_t *ruA_ErrorIndication,
RUA_ErrorIndicationIEs_t *errorIndicationIEs);
int rua_free_connecties(
RUA_ConnectIEs_t *connectIEs);
int rua_free_directtransferies(
RUA_DirectTransferIEs_t *directTransferIEs);
int rua_free_disconnecties(
RUA_DisconnectIEs_t *disconnectIEs);
int rua_free_connectionlesstransferies(
RUA_ConnectionlessTransferIEs_t *connectionlessTransferIEs);
int rua_free_errorindicationies(
RUA_ErrorIndicationIEs_t *errorIndicationIEs);
#endif /* RUA_IES_DEFS_H_ */

1253
sabp_decoder.c Normal file

File diff suppressed because it is too large Load Diff

493
sabp_encoder.c Normal file
View File

@ -0,0 +1,493 @@
/*******************************************************************************
* This file had been created by asn1tostruct.py script v0.5osmo1
* Please do not modify this file but regenerate it via script.
* Created on: 2022-11-14 12:36:56
* from ['../../../src/osmo-iuh/asn1/sabp/SABP-PDU-Contents.asn']
******************************************************************************/
#include <osmocom/sabp/sabp_common.h>
#include <osmocom/sabp/sabp_ies_defs.h>
int sabp_encode_write_replace_ies(
SABP_Write_Replace_t *write_Replace,
SABP_Write_Replace_IEs_t *write_Replace_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Message_Identifier,
SABP_Criticality_reject,
&asn_DEF_SABP_Message_Identifier,
&write_Replace_IEs->message_Identifier)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&write_Replace->write_Replace_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_New_Serial_Number,
SABP_Criticality_reject,
&asn_DEF_SABP_New_Serial_Number,
&write_Replace_IEs->new_Serial_Number)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&write_Replace->write_Replace_ies.list, ie);
/* Optional field */
if ((write_Replace_IEs->presenceMask & WRITE_REPLACE_IES_SABP_OLD_SERIAL_NUMBER_PRESENT)
== WRITE_REPLACE_IES_SABP_OLD_SERIAL_NUMBER_PRESENT) {
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Old_Serial_Number,
SABP_Criticality_ignore,
&asn_DEF_SABP_Old_Serial_Number,
&write_Replace_IEs->old_Serial_Number)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&write_Replace->write_Replace_ies.list, ie);
}
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Service_Areas_List,
SABP_Criticality_reject,
&asn_DEF_SABP_Service_Areas_List,
&write_Replace_IEs->service_Areas_List)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&write_Replace->write_Replace_ies.list, ie);
/* Optional field */
if ((write_Replace_IEs->presenceMask & WRITE_REPLACE_IES_SABP_CATEGORY_PRESENT)
== WRITE_REPLACE_IES_SABP_CATEGORY_PRESENT) {
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Category,
SABP_Criticality_ignore,
&asn_DEF_SABP_Category,
&write_Replace_IEs->category)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&write_Replace->write_Replace_ies.list, ie);
}
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Repetition_Period,
SABP_Criticality_reject,
&asn_DEF_SABP_Repetition_Period,
&write_Replace_IEs->repetition_Period)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&write_Replace->write_Replace_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Data_Coding_Scheme,
SABP_Criticality_reject,
&asn_DEF_SABP_Data_Coding_Scheme,
&write_Replace_IEs->data_Coding_Scheme)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&write_Replace->write_Replace_ies.list, ie);
return 0;
}
int sabp_encode_write_replace_complete_ies(
SABP_Write_Replace_Complete_t *write_Replace_Complete,
SABP_Write_Replace_Complete_IEs_t *write_Replace_Complete_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Message_Identifier,
SABP_Criticality_reject,
&asn_DEF_SABP_Message_Identifier,
&write_Replace_Complete_IEs->message_Identifier)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&write_Replace_Complete->write_Replace_Complete_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_New_Serial_Number,
SABP_Criticality_reject,
&asn_DEF_SABP_New_Serial_Number,
&write_Replace_Complete_IEs->new_Serial_Number)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&write_Replace_Complete->write_Replace_Complete_ies.list, ie);
return 0;
}
int sabp_encode_write_replace_failure_ies(
SABP_Write_Replace_Failure_t *write_Replace_Failure,
SABP_Write_Replace_Failure_IEs_t *write_Replace_Failure_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Message_Identifier,
SABP_Criticality_reject,
&asn_DEF_SABP_Message_Identifier,
&write_Replace_Failure_IEs->message_Identifier)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&write_Replace_Failure->write_Replace_Failure_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_New_Serial_Number,
SABP_Criticality_reject,
&asn_DEF_SABP_New_Serial_Number,
&write_Replace_Failure_IEs->new_Serial_Number)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&write_Replace_Failure->write_Replace_Failure_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Failure_List,
SABP_Criticality_reject,
&asn_DEF_SABP_Failure_List,
&write_Replace_Failure_IEs->failure_List)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&write_Replace_Failure->write_Replace_Failure_ies.list, ie);
return 0;
}
int sabp_encode_kill_ies(
SABP_Kill_t *kill,
SABP_Kill_IEs_t *kill_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Message_Identifier,
SABP_Criticality_reject,
&asn_DEF_SABP_Message_Identifier,
&kill_IEs->message_Identifier)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&kill->kill_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Old_Serial_Number,
SABP_Criticality_reject,
&asn_DEF_SABP_Old_Serial_Number,
&kill_IEs->old_Serial_Number)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&kill->kill_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Service_Areas_List,
SABP_Criticality_reject,
&asn_DEF_SABP_Service_Areas_List,
&kill_IEs->service_Areas_List)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&kill->kill_ies.list, ie);
return 0;
}
int sabp_encode_kill_complete_ies(
SABP_Kill_Complete_t *kill_Complete,
SABP_Kill_Complete_IEs_t *kill_Complete_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Message_Identifier,
SABP_Criticality_reject,
&asn_DEF_SABP_Message_Identifier,
&kill_Complete_IEs->message_Identifier)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&kill_Complete->kill_Complete_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Old_Serial_Number,
SABP_Criticality_reject,
&asn_DEF_SABP_Old_Serial_Number,
&kill_Complete_IEs->old_Serial_Number)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&kill_Complete->kill_Complete_ies.list, ie);
return 0;
}
int sabp_encode_kill_failure_ies(
SABP_Kill_Failure_t *kill_Failure,
SABP_Kill_Failure_IEs_t *kill_Failure_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Message_Identifier,
SABP_Criticality_reject,
&asn_DEF_SABP_Message_Identifier,
&kill_Failure_IEs->message_Identifier)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&kill_Failure->kill_Failure_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Old_Serial_Number,
SABP_Criticality_reject,
&asn_DEF_SABP_Old_Serial_Number,
&kill_Failure_IEs->old_Serial_Number)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&kill_Failure->kill_Failure_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Failure_List,
SABP_Criticality_reject,
&asn_DEF_SABP_Failure_List,
&kill_Failure_IEs->failure_List)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&kill_Failure->kill_Failure_ies.list, ie);
return 0;
}
int sabp_encode_load_query_ies(
SABP_Load_Query_t *load_Query,
SABP_Load_Query_IEs_t *load_Query_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Service_Areas_List,
SABP_Criticality_reject,
&asn_DEF_SABP_Service_Areas_List,
&load_Query_IEs->service_Areas_List)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&load_Query->load_Query_ies.list, ie);
return 0;
}
int sabp_encode_load_query_failure_ies(
SABP_Load_Query_Failure_t *load_Query_Failure,
SABP_Load_Query_Failure_IEs_t *load_Query_Failure_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Failure_List,
SABP_Criticality_reject,
&asn_DEF_SABP_Failure_List,
&load_Query_Failure_IEs->failure_List)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&load_Query_Failure->load_Query_Failure_ies.list, ie);
return 0;
}
int sabp_encode_message_status_query_ies(
SABP_Message_Status_Query_t *message_Status_Query,
SABP_Message_Status_Query_IEs_t *message_Status_Query_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Message_Identifier,
SABP_Criticality_reject,
&asn_DEF_SABP_Message_Identifier,
&message_Status_Query_IEs->message_Identifier)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&message_Status_Query->message_Status_Query_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Old_Serial_Number,
SABP_Criticality_reject,
&asn_DEF_SABP_Old_Serial_Number,
&message_Status_Query_IEs->old_Serial_Number)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&message_Status_Query->message_Status_Query_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Service_Areas_List,
SABP_Criticality_reject,
&asn_DEF_SABP_Service_Areas_List,
&message_Status_Query_IEs->service_Areas_List)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&message_Status_Query->message_Status_Query_ies.list, ie);
return 0;
}
int sabp_encode_message_status_query_complete_ies(
SABP_Message_Status_Query_Complete_t *message_Status_Query_Complete,
SABP_Message_Status_Query_Complete_IEs_t *message_Status_Query_Complete_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Message_Identifier,
SABP_Criticality_reject,
&asn_DEF_SABP_Message_Identifier,
&message_Status_Query_Complete_IEs->message_Identifier)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&message_Status_Query_Complete->message_Status_Query_Complete_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Old_Serial_Number,
SABP_Criticality_reject,
&asn_DEF_SABP_Old_Serial_Number,
&message_Status_Query_Complete_IEs->old_Serial_Number)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&message_Status_Query_Complete->message_Status_Query_Complete_ies.list, ie);
return 0;
}
int sabp_encode_message_status_query_failure_ies(
SABP_Message_Status_Query_Failure_t *message_Status_Query_Failure,
SABP_Message_Status_Query_Failure_IEs_t *message_Status_Query_Failure_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Message_Identifier,
SABP_Criticality_reject,
&asn_DEF_SABP_Message_Identifier,
&message_Status_Query_Failure_IEs->message_Identifier)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&message_Status_Query_Failure->message_Status_Query_Failure_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Failure_List,
SABP_Criticality_reject,
&asn_DEF_SABP_Failure_List,
&message_Status_Query_Failure_IEs->failure_List)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&message_Status_Query_Failure->message_Status_Query_Failure_ies.list, ie);
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Old_Serial_Number,
SABP_Criticality_reject,
&asn_DEF_SABP_Old_Serial_Number,
&message_Status_Query_Failure_IEs->old_Serial_Number)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&message_Status_Query_Failure->message_Status_Query_Failure_ies.list, ie);
return 0;
}
int sabp_encode_reset_ies(
SABP_Reset_t *reset,
SABP_Reset_IEs_t *reset_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Service_Areas_List,
SABP_Criticality_reject,
&asn_DEF_SABP_Service_Areas_List,
&reset_IEs->service_Areas_List)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&reset->reset_ies.list, ie);
return 0;
}
int sabp_encode_reset_complete_ies(
SABP_Reset_Complete_t *reset_Complete,
SABP_Reset_Complete_IEs_t *reset_Complete_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Service_Areas_List,
SABP_Criticality_reject,
&asn_DEF_SABP_Service_Areas_List,
&reset_Complete_IEs->service_Areas_List)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&reset_Complete->reset_Complete_ies.list, ie);
return 0;
}
int sabp_encode_reset_failure_ies(
SABP_Reset_Failure_t *reset_Failure,
SABP_Reset_Failure_IEs_t *reset_Failure_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Failure_List,
SABP_Criticality_reject,
&asn_DEF_SABP_Failure_List,
&reset_Failure_IEs->failure_List)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&reset_Failure->reset_Failure_ies.list, ie);
/* Optional field */
if ((reset_Failure_IEs->presenceMask & RESET_FAILURE_IES_SABP_SERVICE_AREAS_LIST_PRESENT)
== RESET_FAILURE_IES_SABP_SERVICE_AREAS_LIST_PRESENT) {
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Service_Areas_List,
SABP_Criticality_reject,
&asn_DEF_SABP_Service_Areas_List,
&reset_Failure_IEs->service_Areas_List)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&reset_Failure->reset_Failure_ies.list, ie);
}
return 0;
}
int sabp_encode_restart_ies(
SABP_Restart_t *restart,
SABP_Restart_IEs_t *restart_IEs) {
SABP_IE_t *ie;
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Service_Areas_List,
SABP_Criticality_ignore,
&asn_DEF_SABP_Service_Areas_List,
&restart_IEs->service_Areas_List)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&restart->restart_ies.list, ie);
/* Optional field */
if ((restart_IEs->presenceMask & RESTART_IES_SABP_RECOVERY_INDICATION_PRESENT)
== RESTART_IES_SABP_RECOVERY_INDICATION_PRESENT) {
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Recovery_Indication,
SABP_Criticality_ignore,
&asn_DEF_SABP_Recovery_Indication,
&restart_IEs->recovery_Indication)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&restart->restart_ies.list, ie);
}
return 0;
}
int sabp_encode_error_indication_ies(
SABP_Error_Indication_t *error_Indication,
SABP_Error_Indication_IEs_t *error_Indication_IEs) {
SABP_IE_t *ie;
/* Optional field */
if ((error_Indication_IEs->presenceMask & ERROR_INDICATION_IES_SABP_MESSAGE_IDENTIFIER_PRESENT)
== ERROR_INDICATION_IES_SABP_MESSAGE_IDENTIFIER_PRESENT) {
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Message_Identifier,
SABP_Criticality_ignore,
&asn_DEF_SABP_Message_Identifier,
&error_Indication_IEs->message_Identifier)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&error_Indication->error_Indication_ies.list, ie);
}
/* Optional field */
if ((error_Indication_IEs->presenceMask & ERROR_INDICATION_IES_SABP_SERIAL_NUMBER_PRESENT)
== ERROR_INDICATION_IES_SABP_SERIAL_NUMBER_PRESENT) {
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Serial_Number,
SABP_Criticality_ignore,
&asn_DEF_SABP_Serial_Number,
&error_Indication_IEs->serial_Number)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&error_Indication->error_Indication_ies.list, ie);
}
/* Optional field */
if ((error_Indication_IEs->presenceMask & ERROR_INDICATION_IES_SABP_CAUSE_PRESENT)
== ERROR_INDICATION_IES_SABP_CAUSE_PRESENT) {
if ((ie = sabp_new_ie(SABP_ProtocolIE_ID_id_Cause,
SABP_Criticality_ignore,
&asn_DEF_SABP_Cause,
&error_Indication_IEs->cause)) == NULL) {
return -1;
}
ASN_SEQUENCE_ADD(&error_Indication->error_Indication_ies.list, ie);
}
return 0;
}

443
sabp_ies_defs.h Normal file
View File

@ -0,0 +1,443 @@
/*******************************************************************************
* This file had been created by asn1tostruct.py script v0.5osmo1
* Please do not modify this file but regenerate it via script.
* Created on: 2022-11-14 12:36:56
* from ['../../../src/osmo-iuh/asn1/sabp/SABP-PDU-Contents.asn']
******************************************************************************/
#include <osmocom/sabp/sabp_common.h>
#ifndef SABP_IES_DEFS_H_
#define SABP_IES_DEFS_H_
#define WRITE_REPLACE_IES_SABP_OLD_SERIAL_NUMBER_PRESENT (1 << 0)
#define WRITE_REPLACE_IES_SABP_CATEGORY_PRESENT (1 << 1)
typedef struct SABP_Write_Replace_IEs_s {
uint16_t presenceMask;
SABP_Message_Identifier_t message_Identifier;
SABP_New_Serial_Number_t new_Serial_Number;
SABP_Old_Serial_Number_t old_Serial_Number; ///< Optional field
SABP_Service_Areas_List_t service_Areas_List;
SABP_Category_t category; ///< Optional field
SABP_Repetition_Period_t repetition_Period;
SABP_Data_Coding_Scheme_t data_Coding_Scheme;
} SABP_Write_Replace_IEs_t;
typedef struct SABP_Write_Replace_Complete_IEs_s {
SABP_Message_Identifier_t message_Identifier;
SABP_New_Serial_Number_t new_Serial_Number;
} SABP_Write_Replace_Complete_IEs_t;
typedef struct SABP_Write_Replace_Failure_IEs_s {
SABP_Message_Identifier_t message_Identifier;
SABP_New_Serial_Number_t new_Serial_Number;
SABP_Failure_List_t failure_List;
} SABP_Write_Replace_Failure_IEs_t;
typedef struct SABP_Kill_IEs_s {
SABP_Message_Identifier_t message_Identifier;
SABP_Old_Serial_Number_t old_Serial_Number;
SABP_Service_Areas_List_t service_Areas_List;
} SABP_Kill_IEs_t;
typedef struct SABP_Kill_Complete_IEs_s {
SABP_Message_Identifier_t message_Identifier;
SABP_Old_Serial_Number_t old_Serial_Number;
} SABP_Kill_Complete_IEs_t;
typedef struct SABP_Kill_Failure_IEs_s {
SABP_Message_Identifier_t message_Identifier;
SABP_Old_Serial_Number_t old_Serial_Number;
SABP_Failure_List_t failure_List;
} SABP_Kill_Failure_IEs_t;
typedef struct SABP_Load_Query_IEs_s {
SABP_Service_Areas_List_t service_Areas_List;
} SABP_Load_Query_IEs_t;
typedef struct SABP_Load_Query_Failure_IEs_s {
SABP_Failure_List_t failure_List;
} SABP_Load_Query_Failure_IEs_t;
typedef struct SABP_Message_Status_Query_IEs_s {
SABP_Message_Identifier_t message_Identifier;
SABP_Old_Serial_Number_t old_Serial_Number;
SABP_Service_Areas_List_t service_Areas_List;
} SABP_Message_Status_Query_IEs_t;
typedef struct SABP_Message_Status_Query_Complete_IEs_s {
SABP_Message_Identifier_t message_Identifier;
SABP_Old_Serial_Number_t old_Serial_Number;
} SABP_Message_Status_Query_Complete_IEs_t;
typedef struct SABP_Message_Status_Query_Failure_IEs_s {
SABP_Message_Identifier_t message_Identifier;
SABP_Failure_List_t failure_List;
SABP_Old_Serial_Number_t old_Serial_Number;
} SABP_Message_Status_Query_Failure_IEs_t;
typedef struct SABP_Reset_IEs_s {
SABP_Service_Areas_List_t service_Areas_List;
} SABP_Reset_IEs_t;
typedef struct SABP_Reset_Complete_IEs_s {
SABP_Service_Areas_List_t service_Areas_List;
} SABP_Reset_Complete_IEs_t;
#define RESET_FAILURE_IES_SABP_SERVICE_AREAS_LIST_PRESENT (1 << 0)
typedef struct SABP_Reset_Failure_IEs_s {
uint16_t presenceMask;
SABP_Failure_List_t failure_List;
SABP_Service_Areas_List_t service_Areas_List; ///< Optional field
} SABP_Reset_Failure_IEs_t;
#define RESTART_IES_SABP_RECOVERY_INDICATION_PRESENT (1 << 0)
typedef struct SABP_Restart_IEs_s {
uint16_t presenceMask;
SABP_Service_Areas_List_t service_Areas_List;
SABP_Recovery_Indication_t recovery_Indication; ///< Optional field
} SABP_Restart_IEs_t;
#define ERROR_INDICATION_IES_SABP_MESSAGE_IDENTIFIER_PRESENT (1 << 0)
#define ERROR_INDICATION_IES_SABP_SERIAL_NUMBER_PRESENT (1 << 1)
#define ERROR_INDICATION_IES_SABP_CAUSE_PRESENT (1 << 2)
typedef struct SABP_Error_Indication_IEs_s {
uint16_t presenceMask;
SABP_Message_Identifier_t message_Identifier; ///< Optional field
SABP_Serial_Number_t serial_Number; ///< Optional field
SABP_Cause_t cause; ///< Optional field
} SABP_Error_Indication_IEs_t;
typedef struct sabp_message_s {
uint8_t procedureCode;
uint8_t criticality;
uint8_t direction;
union {
SABP_Error_Indication_IEs_t error_Indication_IEs;
SABP_Kill_Complete_IEs_t kill_Complete_IEs;
SABP_Kill_Failure_IEs_t kill_Failure_IEs;
SABP_Kill_IEs_t kill_IEs;
SABP_Load_Query_Failure_IEs_t load_Query_Failure_IEs;
SABP_Load_Query_IEs_t load_Query_IEs;
SABP_Message_Status_Query_Complete_IEs_t message_Status_Query_Complete_IEs;
SABP_Message_Status_Query_Failure_IEs_t message_Status_Query_Failure_IEs;
SABP_Message_Status_Query_IEs_t message_Status_Query_IEs;
SABP_Reset_Complete_IEs_t reset_Complete_IEs;
SABP_Reset_Failure_IEs_t reset_Failure_IEs;
SABP_Reset_IEs_t reset_IEs;
SABP_Restart_IEs_t restart_IEs;
SABP_Write_Replace_Complete_IEs_t write_Replace_Complete_IEs;
SABP_Write_Replace_Failure_IEs_t write_Replace_Failure_IEs;
SABP_Write_Replace_IEs_t write_Replace_IEs;
} msg;
} sabp_message;
/** \brief Decode function for Write-Replace-IEs ies.
* \param write_Replace_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_write_replace_ies(
SABP_Write_Replace_IEs_t *write_Replace_IEs,
ANY_t *any_p);
/** \brief Encode function for Write-Replace-IEs ies.
* \param sabP_Write_Replace Pointer to the ASN1 structure.
* \param write_Replace_IEs Pointer to the IES structure.
**/
int sabp_encode_write_replace_ies(
SABP_Write_Replace_t *sabP_Write_Replace,
SABP_Write_Replace_IEs_t *write_Replace_IEs);
/** \brief Decode function for Write-Replace-Complete-IEs ies.
* \param write_Replace_Complete_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_write_replace_complete_ies(
SABP_Write_Replace_Complete_IEs_t *write_Replace_Complete_IEs,
ANY_t *any_p);
/** \brief Encode function for Write-Replace-Complete-IEs ies.
* \param sabP_Write_Replace_Complete Pointer to the ASN1 structure.
* \param write_Replace_Complete_IEs Pointer to the IES structure.
**/
int sabp_encode_write_replace_complete_ies(
SABP_Write_Replace_Complete_t *sabP_Write_Replace_Complete,
SABP_Write_Replace_Complete_IEs_t *write_Replace_Complete_IEs);
/** \brief Decode function for Write-Replace-Failure-IEs ies.
* \param write_Replace_Failure_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_write_replace_failure_ies(
SABP_Write_Replace_Failure_IEs_t *write_Replace_Failure_IEs,
ANY_t *any_p);
/** \brief Encode function for Write-Replace-Failure-IEs ies.
* \param sabP_Write_Replace_Failure Pointer to the ASN1 structure.
* \param write_Replace_Failure_IEs Pointer to the IES structure.
**/
int sabp_encode_write_replace_failure_ies(
SABP_Write_Replace_Failure_t *sabP_Write_Replace_Failure,
SABP_Write_Replace_Failure_IEs_t *write_Replace_Failure_IEs);
/** \brief Decode function for Kill-IEs ies.
* \param kill_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_kill_ies(
SABP_Kill_IEs_t *kill_IEs,
ANY_t *any_p);
/** \brief Encode function for Kill-IEs ies.
* \param sabP_Kill Pointer to the ASN1 structure.
* \param kill_IEs Pointer to the IES structure.
**/
int sabp_encode_kill_ies(
SABP_Kill_t *sabP_Kill,
SABP_Kill_IEs_t *kill_IEs);
/** \brief Decode function for Kill-Complete-IEs ies.
* \param kill_Complete_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_kill_complete_ies(
SABP_Kill_Complete_IEs_t *kill_Complete_IEs,
ANY_t *any_p);
/** \brief Encode function for Kill-Complete-IEs ies.
* \param sabP_Kill_Complete Pointer to the ASN1 structure.
* \param kill_Complete_IEs Pointer to the IES structure.
**/
int sabp_encode_kill_complete_ies(
SABP_Kill_Complete_t *sabP_Kill_Complete,
SABP_Kill_Complete_IEs_t *kill_Complete_IEs);
/** \brief Decode function for Kill-Failure-IEs ies.
* \param kill_Failure_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_kill_failure_ies(
SABP_Kill_Failure_IEs_t *kill_Failure_IEs,
ANY_t *any_p);
/** \brief Encode function for Kill-Failure-IEs ies.
* \param sabP_Kill_Failure Pointer to the ASN1 structure.
* \param kill_Failure_IEs Pointer to the IES structure.
**/
int sabp_encode_kill_failure_ies(
SABP_Kill_Failure_t *sabP_Kill_Failure,
SABP_Kill_Failure_IEs_t *kill_Failure_IEs);
/** \brief Decode function for Load-Query-IEs ies.
* \param load_Query_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_load_query_ies(
SABP_Load_Query_IEs_t *load_Query_IEs,
ANY_t *any_p);
/** \brief Encode function for Load-Query-IEs ies.
* \param sabP_Load_Query Pointer to the ASN1 structure.
* \param load_Query_IEs Pointer to the IES structure.
**/
int sabp_encode_load_query_ies(
SABP_Load_Query_t *sabP_Load_Query,
SABP_Load_Query_IEs_t *load_Query_IEs);
/** \brief Decode function for Load-Query-Failure-IEs ies.
* \param load_Query_Failure_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_load_query_failure_ies(
SABP_Load_Query_Failure_IEs_t *load_Query_Failure_IEs,
ANY_t *any_p);
/** \brief Encode function for Load-Query-Failure-IEs ies.
* \param sabP_Load_Query_Failure Pointer to the ASN1 structure.
* \param load_Query_Failure_IEs Pointer to the IES structure.
**/
int sabp_encode_load_query_failure_ies(
SABP_Load_Query_Failure_t *sabP_Load_Query_Failure,
SABP_Load_Query_Failure_IEs_t *load_Query_Failure_IEs);
/** \brief Decode function for Message-Status-Query-IEs ies.
* \param message_Status_Query_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_message_status_query_ies(
SABP_Message_Status_Query_IEs_t *message_Status_Query_IEs,
ANY_t *any_p);
/** \brief Encode function for Message-Status-Query-IEs ies.
* \param sabP_Message_Status_Query Pointer to the ASN1 structure.
* \param message_Status_Query_IEs Pointer to the IES structure.
**/
int sabp_encode_message_status_query_ies(
SABP_Message_Status_Query_t *sabP_Message_Status_Query,
SABP_Message_Status_Query_IEs_t *message_Status_Query_IEs);
/** \brief Decode function for Message-Status-Query-Complete-IEs ies.
* \param message_Status_Query_Complete_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_message_status_query_complete_ies(
SABP_Message_Status_Query_Complete_IEs_t *message_Status_Query_Complete_IEs,
ANY_t *any_p);
/** \brief Encode function for Message-Status-Query-Complete-IEs ies.
* \param sabP_Message_Status_Query_Complete Pointer to the ASN1 structure.
* \param message_Status_Query_Complete_IEs Pointer to the IES structure.
**/
int sabp_encode_message_status_query_complete_ies(
SABP_Message_Status_Query_Complete_t *sabP_Message_Status_Query_Complete,
SABP_Message_Status_Query_Complete_IEs_t *message_Status_Query_Complete_IEs);
/** \brief Decode function for Message-Status-Query-Failure-IEs ies.
* \param message_Status_Query_Failure_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_message_status_query_failure_ies(
SABP_Message_Status_Query_Failure_IEs_t *message_Status_Query_Failure_IEs,
ANY_t *any_p);
/** \brief Encode function for Message-Status-Query-Failure-IEs ies.
* \param sabP_Message_Status_Query_Failure Pointer to the ASN1 structure.
* \param message_Status_Query_Failure_IEs Pointer to the IES structure.
**/
int sabp_encode_message_status_query_failure_ies(
SABP_Message_Status_Query_Failure_t *sabP_Message_Status_Query_Failure,
SABP_Message_Status_Query_Failure_IEs_t *message_Status_Query_Failure_IEs);
/** \brief Decode function for Reset-IEs ies.
* \param reset_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_reset_ies(
SABP_Reset_IEs_t *reset_IEs,
ANY_t *any_p);
/** \brief Encode function for Reset-IEs ies.
* \param sabP_Reset Pointer to the ASN1 structure.
* \param reset_IEs Pointer to the IES structure.
**/
int sabp_encode_reset_ies(
SABP_Reset_t *sabP_Reset,
SABP_Reset_IEs_t *reset_IEs);
/** \brief Decode function for Reset-Complete-IEs ies.
* \param reset_Complete_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_reset_complete_ies(
SABP_Reset_Complete_IEs_t *reset_Complete_IEs,
ANY_t *any_p);
/** \brief Encode function for Reset-Complete-IEs ies.
* \param sabP_Reset_Complete Pointer to the ASN1 structure.
* \param reset_Complete_IEs Pointer to the IES structure.
**/
int sabp_encode_reset_complete_ies(
SABP_Reset_Complete_t *sabP_Reset_Complete,
SABP_Reset_Complete_IEs_t *reset_Complete_IEs);
/** \brief Decode function for Reset-Failure-IEs ies.
* \param reset_Failure_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_reset_failure_ies(
SABP_Reset_Failure_IEs_t *reset_Failure_IEs,
ANY_t *any_p);
/** \brief Encode function for Reset-Failure-IEs ies.
* \param sabP_Reset_Failure Pointer to the ASN1 structure.
* \param reset_Failure_IEs Pointer to the IES structure.
**/
int sabp_encode_reset_failure_ies(
SABP_Reset_Failure_t *sabP_Reset_Failure,
SABP_Reset_Failure_IEs_t *reset_Failure_IEs);
/** \brief Decode function for Restart-IEs ies.
* \param restart_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_restart_ies(
SABP_Restart_IEs_t *restart_IEs,
ANY_t *any_p);
/** \brief Encode function for Restart-IEs ies.
* \param sabP_Restart Pointer to the ASN1 structure.
* \param restart_IEs Pointer to the IES structure.
**/
int sabp_encode_restart_ies(
SABP_Restart_t *sabP_Restart,
SABP_Restart_IEs_t *restart_IEs);
/** \brief Decode function for Error-Indication-IEs ies.
* \param error_Indication_IEs Pointer to ASN1 structure in which data will be stored
* \param any_p Pointer to the ANY value to decode.
**/
int sabp_decode_error_indication_ies(
SABP_Error_Indication_IEs_t *error_Indication_IEs,
ANY_t *any_p);
/** \brief Encode function for Error-Indication-IEs ies.
* \param sabP_Error_Indication Pointer to the ASN1 structure.
* \param error_Indication_IEs Pointer to the IES structure.
**/
int sabp_encode_error_indication_ies(
SABP_Error_Indication_t *sabP_Error_Indication,
SABP_Error_Indication_IEs_t *error_Indication_IEs);
int sabp_free_write_replace_ies(
SABP_Write_Replace_IEs_t *write_Replace_IEs);
int sabp_free_write_replace_complete_ies(
SABP_Write_Replace_Complete_IEs_t *write_Replace_Complete_IEs);
int sabp_free_write_replace_failure_ies(
SABP_Write_Replace_Failure_IEs_t *write_Replace_Failure_IEs);
int sabp_free_kill_ies(
SABP_Kill_IEs_t *kill_IEs);
int sabp_free_kill_complete_ies(
SABP_Kill_Complete_IEs_t *kill_Complete_IEs);
int sabp_free_kill_failure_ies(
SABP_Kill_Failure_IEs_t *kill_Failure_IEs);
int sabp_free_load_query_ies(
SABP_Load_Query_IEs_t *load_Query_IEs);
int sabp_free_load_query_failure_ies(
SABP_Load_Query_Failure_IEs_t *load_Query_Failure_IEs);
int sabp_free_message_status_query_ies(
SABP_Message_Status_Query_IEs_t *message_Status_Query_IEs);
int sabp_free_message_status_query_complete_ies(
SABP_Message_Status_Query_Complete_IEs_t *message_Status_Query_Complete_IEs);
int sabp_free_message_status_query_failure_ies(
SABP_Message_Status_Query_Failure_IEs_t *message_Status_Query_Failure_IEs);
int sabp_free_reset_ies(
SABP_Reset_IEs_t *reset_IEs);
int sabp_free_reset_complete_ies(
SABP_Reset_Complete_IEs_t *reset_Complete_IEs);
int sabp_free_reset_failure_ies(
SABP_Reset_Failure_IEs_t *reset_Failure_IEs);
int sabp_free_restart_ies(
SABP_Restart_IEs_t *restart_IEs);
int sabp_free_error_indication_ies(
SABP_Error_Indication_IEs_t *error_Indication_IEs);
#endif /* SABP_IES_DEFS_H_ */