/* * Copyright (c) 2015, EURECOM (www.eurecom.fr) * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * The views and conclusions contained in the software and documentation are those * of the authors and should not be interpreted as representing official policies, * either expressed or implied, of the FreeBSD Project. */ /******************************************************************************* * This file had been created by asn1tostruct.py script v1.0.2 * Please do not modify this file but regenerate it via script. * Created on: 2017-09-13 23:14:37.559559 by acetcom * from ['S1AP-PDU.asn'] ******************************************************************************/ #define TRACE_MODULE _s1ap_ies_decoder #include "core_debug.h" #include "s1ap_ies_defs.h" int s1ap_decode_s1ap_deactivatetraceies( S1ap_DeactivateTraceIEs_t *s1ap_DeactivateTraceIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_DeactivateTrace_t s1ap_DeactivateTrace; S1ap_DeactivateTrace_t *s1ap_DeactivateTrace_p = &s1ap_DeactivateTrace; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_DeactivateTraceIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_DeactivateTraceIEs\n"); memset(&s1ap_DeactivateTrace, 0, sizeof(S1ap_DeactivateTrace_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_DeactivateTrace, (void **)&s1ap_DeactivateTrace_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_DeactivateTrace failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DeactivateTrace, s1ap_DeactivateTrace_p); return -1; } for (i = 0; i < s1ap_DeactivateTrace_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_DeactivateTrace_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_DeactivateTraceIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DeactivateTrace, s1ap_DeactivateTrace_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_DeactivateTraceIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DeactivateTrace, s1ap_DeactivateTrace_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_E_UTRAN_Trace_ID: { S1ap_E_UTRAN_Trace_ID_t *s1apEUTRANTraceID_p = &s1ap_DeactivateTraceIEs->e_UTRAN_Trace_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_E_UTRAN_Trace_ID, (void **)&s1apEUTRANTraceID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apEUTRANTraceID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DeactivateTrace, s1ap_DeactivateTrace_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_deactivatetraceies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DeactivateTrace, s1ap_DeactivateTrace_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DeactivateTrace, s1ap_DeactivateTrace_p); return 0; } int s1ap_decode_s1ap_enbdirectinformationtransferies( S1ap_ENBDirectInformationTransferIEs_t *s1ap_ENBDirectInformationTransferIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_ENBDirectInformationTransfer_t s1ap_ENBDirectInformationTransfer; S1ap_ENBDirectInformationTransfer_t *s1ap_ENBDirectInformationTransfer_p = &s1ap_ENBDirectInformationTransfer; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_ENBDirectInformationTransferIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_ENBDirectInformationTransferIEs\n"); memset(&s1ap_ENBDirectInformationTransfer, 0, sizeof(S1ap_ENBDirectInformationTransfer_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENBDirectInformationTransfer, (void **)&s1ap_ENBDirectInformationTransfer_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_ENBDirectInformationTransfer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBDirectInformationTransfer, s1ap_ENBDirectInformationTransfer_p); return -1; } for (i = 0; i < s1ap_ENBDirectInformationTransfer_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_ENBDirectInformationTransfer_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_Inter_SystemInformationTransferTypeEDT: { S1ap_Inter_SystemInformationTransferType_t *s1apInterSystemInformationTransferType_p = &s1ap_ENBDirectInformationTransferIEs->inter_SystemInformationTransferTypeEDT; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Inter_SystemInformationTransferType, (void **)&s1apInterSystemInformationTransferType_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apInterSystemInformationTransferType failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBDirectInformationTransfer, s1ap_ENBDirectInformationTransfer_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_enbdirectinformationtransferies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBDirectInformationTransfer, s1ap_ENBDirectInformationTransfer_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBDirectInformationTransfer, s1ap_ENBDirectInformationTransfer_p); return 0; } int s1ap_decode_s1ap_e_rabreleaseresponseies( S1ap_E_RABReleaseResponseIEs_t *s1ap_E_RABReleaseResponseIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_E_RABReleaseResponse_t s1ap_E_RABReleaseResponse; S1ap_E_RABReleaseResponse_t *s1ap_E_RABReleaseResponse_p = &s1ap_E_RABReleaseResponse; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_E_RABReleaseResponseIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_E_RABReleaseResponseIEs\n"); memset(&s1ap_E_RABReleaseResponse, 0, sizeof(S1ap_E_RABReleaseResponse_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_E_RABReleaseResponse, (void **)&s1ap_E_RABReleaseResponse_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_E_RABReleaseResponse failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseResponse, s1ap_E_RABReleaseResponse_p); return -1; } for (i = 0; i < s1ap_E_RABReleaseResponse_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_E_RABReleaseResponse_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_E_RABReleaseResponseIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseResponse, s1ap_E_RABReleaseResponse_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_E_RABReleaseResponseIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseResponse, s1ap_E_RABReleaseResponse_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_E_RABReleaseListBearerRelComp: { S1ap_E_RABReleaseListBearerRelComp_t *s1apERABReleaseListBearerRelComp_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABReleaseListBearerRelComp, (void**)&s1apERABReleaseListBearerRelComp_p); if (s1ap_decode_s1ap_e_rabreleaselistbearerrelcomp(&s1ap_E_RABReleaseResponseIEs->e_RABReleaseListBearerRelComp, s1apERABReleaseListBearerRelComp_p) < 0) { d_error("Decoding of encapsulated IE s1apERABReleaseListBearerRelComp failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABReleaseListBearerRelComp, s1apERABReleaseListBearerRelComp_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseResponse, s1ap_E_RABReleaseResponse_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABReleaseListBearerRelComp, s1apERABReleaseListBearerRelComp_p); s1ap_E_RABReleaseResponseIEs->presenceMask |= S1AP_E_RABRELEASERESPONSEIES_E_RABRELEASELISTBEARERRELCOMP_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_E_RABFailedToReleaseList: { S1ap_E_RABList_t *s1apERABList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); if (s1ap_decode_s1ap_e_rablist(&s1ap_E_RABReleaseResponseIEs->e_RABFailedToReleaseList, s1apERABList_p) < 0) { d_error("Decoding of encapsulated IE s1apERABList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseResponse, s1ap_E_RABReleaseResponse_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); s1ap_E_RABReleaseResponseIEs->presenceMask |= S1AP_E_RABRELEASERESPONSEIES_E_RABFAILEDTORELEASELIST_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_E_RABReleaseResponseIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseResponse, s1ap_E_RABReleaseResponse_p); return -1; } s1ap_E_RABReleaseResponseIEs->presenceMask |= S1AP_E_RABRELEASERESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_e_rabreleaseresponseies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseResponse, s1ap_E_RABReleaseResponse_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseResponse, s1ap_E_RABReleaseResponse_p); return 0; } int s1ap_decode_s1ap_uplinknonueassociatedlppatransport_ies( S1ap_UplinkNonUEAssociatedLPPaTransport_IEs_t *s1ap_UplinkNonUEAssociatedLPPaTransport_IEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_UplinkNonUEAssociatedLPPaTransport_t s1ap_UplinkNonUEAssociatedLPPaTransport; S1ap_UplinkNonUEAssociatedLPPaTransport_t *s1ap_UplinkNonUEAssociatedLPPaTransport_p = &s1ap_UplinkNonUEAssociatedLPPaTransport; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_UplinkNonUEAssociatedLPPaTransport_IEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_UplinkNonUEAssociatedLPPaTransport_IEs\n"); memset(&s1ap_UplinkNonUEAssociatedLPPaTransport, 0, sizeof(S1ap_UplinkNonUEAssociatedLPPaTransport_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UplinkNonUEAssociatedLPPaTransport, (void **)&s1ap_UplinkNonUEAssociatedLPPaTransport_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_UplinkNonUEAssociatedLPPaTransport failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNonUEAssociatedLPPaTransport, s1ap_UplinkNonUEAssociatedLPPaTransport_p); return -1; } for (i = 0; i < s1ap_UplinkNonUEAssociatedLPPaTransport_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_UplinkNonUEAssociatedLPPaTransport_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_Routing_ID: { S1ap_Routing_ID_t *s1apRoutingID_p = &s1ap_UplinkNonUEAssociatedLPPaTransport_IEs->routing_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Routing_ID, (void **)&s1apRoutingID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apRoutingID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNonUEAssociatedLPPaTransport, s1ap_UplinkNonUEAssociatedLPPaTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_LPPa_PDU: { S1ap_LPPa_PDU_t *s1apLPPaPDU_p = &s1ap_UplinkNonUEAssociatedLPPaTransport_IEs->lpPa_PDU; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_LPPa_PDU, (void **)&s1apLPPaPDU_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apLPPaPDU failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNonUEAssociatedLPPaTransport, s1ap_UplinkNonUEAssociatedLPPaTransport_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinknonueassociatedlppatransport_ies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNonUEAssociatedLPPaTransport, s1ap_UplinkNonUEAssociatedLPPaTransport_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNonUEAssociatedLPPaTransport, s1ap_UplinkNonUEAssociatedLPPaTransport_p); return 0; } int s1ap_decode_s1ap_tracestarties( S1ap_TraceStartIEs_t *s1ap_TraceStartIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_TraceStart_t s1ap_TraceStart; S1ap_TraceStart_t *s1ap_TraceStart_p = &s1ap_TraceStart; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_TraceStartIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_TraceStartIEs\n"); memset(&s1ap_TraceStart, 0, sizeof(S1ap_TraceStart_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TraceStart, (void **)&s1ap_TraceStart_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_TraceStart failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TraceStart, s1ap_TraceStart_p); return -1; } for (i = 0; i < s1ap_TraceStart_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_TraceStart_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_TraceStartIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TraceStart, s1ap_TraceStart_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_TraceStartIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TraceStart, s1ap_TraceStart_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_TraceActivation: { S1ap_TraceActivation_t *s1apTraceActivation_p = &s1ap_TraceStartIEs->traceActivation; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TraceActivation, (void **)&s1apTraceActivation_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTraceActivation failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TraceStart, s1ap_TraceStart_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_tracestarties", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TraceStart, s1ap_TraceStart_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TraceStart, s1ap_TraceStart_p); return 0; } int s1ap_decode_s1ap_writereplacewarningresponseies( S1ap_WriteReplaceWarningResponseIEs_t *s1ap_WriteReplaceWarningResponseIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_WriteReplaceWarningResponse_t s1ap_WriteReplaceWarningResponse; S1ap_WriteReplaceWarningResponse_t *s1ap_WriteReplaceWarningResponse_p = &s1ap_WriteReplaceWarningResponse; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_WriteReplaceWarningResponseIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_WriteReplaceWarningResponseIEs\n"); memset(&s1ap_WriteReplaceWarningResponse, 0, sizeof(S1ap_WriteReplaceWarningResponse_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_WriteReplaceWarningResponse, (void **)&s1ap_WriteReplaceWarningResponse_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_WriteReplaceWarningResponse failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningResponse, s1ap_WriteReplaceWarningResponse_p); return -1; } for (i = 0; i < s1ap_WriteReplaceWarningResponse_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_WriteReplaceWarningResponse_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MessageIdentifier: { S1ap_MessageIdentifier_t *s1apMessageIdentifier_p = &s1ap_WriteReplaceWarningResponseIEs->messageIdentifier; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MessageIdentifier, (void **)&s1apMessageIdentifier_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMessageIdentifier failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningResponse, s1ap_WriteReplaceWarningResponse_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_SerialNumber: { S1ap_SerialNumber_t *s1apSerialNumber_p = &s1ap_WriteReplaceWarningResponseIEs->serialNumber; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SerialNumber, (void **)&s1apSerialNumber_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSerialNumber failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningResponse, s1ap_WriteReplaceWarningResponse_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_BroadcastCompletedAreaList: { S1ap_BroadcastCompletedAreaList_t *s1apBroadcastCompletedAreaList_p = &s1ap_WriteReplaceWarningResponseIEs->broadcastCompletedAreaList; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_BroadcastCompletedAreaList, (void **)&s1apBroadcastCompletedAreaList_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apBroadcastCompletedAreaList failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningResponse, s1ap_WriteReplaceWarningResponse_p); return -1; } s1ap_WriteReplaceWarningResponseIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGRESPONSEIES_BROADCASTCOMPLETEDAREALIST_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_WriteReplaceWarningResponseIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningResponse, s1ap_WriteReplaceWarningResponse_p); return -1; } s1ap_WriteReplaceWarningResponseIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_writereplacewarningresponseies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningResponse, s1ap_WriteReplaceWarningResponse_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningResponse, s1ap_WriteReplaceWarningResponse_p); return 0; } int s1ap_decode_s1ap_handovercancelies( S1ap_HandoverCancelIEs_t *s1ap_HandoverCancelIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_HandoverCancel_t s1ap_HandoverCancel; S1ap_HandoverCancel_t *s1ap_HandoverCancel_p = &s1ap_HandoverCancel; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_HandoverCancelIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_HandoverCancelIEs\n"); memset(&s1ap_HandoverCancel, 0, sizeof(S1ap_HandoverCancel_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverCancel, (void **)&s1ap_HandoverCancel_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_HandoverCancel failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCancel, s1ap_HandoverCancel_p); return -1; } for (i = 0; i < s1ap_HandoverCancel_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_HandoverCancel_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_HandoverCancelIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCancel, s1ap_HandoverCancel_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_HandoverCancelIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCancel, s1ap_HandoverCancel_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_HandoverCancelIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCancel, s1ap_HandoverCancel_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_handovercancelies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCancel, s1ap_HandoverCancel_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCancel, s1ap_HandoverCancel_p); return 0; } int s1ap_decode_s1ap_handoverpreparationfailureies( S1ap_HandoverPreparationFailureIEs_t *s1ap_HandoverPreparationFailureIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_HandoverPreparationFailure_t s1ap_HandoverPreparationFailure; S1ap_HandoverPreparationFailure_t *s1ap_HandoverPreparationFailure_p = &s1ap_HandoverPreparationFailure; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_HandoverPreparationFailureIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_HandoverPreparationFailureIEs\n"); memset(&s1ap_HandoverPreparationFailure, 0, sizeof(S1ap_HandoverPreparationFailure_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverPreparationFailure, (void **)&s1ap_HandoverPreparationFailure_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_HandoverPreparationFailure failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverPreparationFailure, s1ap_HandoverPreparationFailure_p); return -1; } for (i = 0; i < s1ap_HandoverPreparationFailure_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_HandoverPreparationFailure_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_HandoverPreparationFailureIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverPreparationFailure, s1ap_HandoverPreparationFailure_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_HandoverPreparationFailureIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverPreparationFailure, s1ap_HandoverPreparationFailure_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_HandoverPreparationFailureIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverPreparationFailure, s1ap_HandoverPreparationFailure_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_HandoverPreparationFailureIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverPreparationFailure, s1ap_HandoverPreparationFailure_p); return -1; } s1ap_HandoverPreparationFailureIEs->presenceMask |= S1AP_HANDOVERPREPARATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_handoverpreparationfailureies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverPreparationFailure, s1ap_HandoverPreparationFailure_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverPreparationFailure, s1ap_HandoverPreparationFailure_p); return 0; } int s1ap_decode_s1ap_uecontextreleaserequest_ies( S1ap_UEContextReleaseRequest_IEs_t *s1ap_UEContextReleaseRequest_IEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_UEContextReleaseRequest_t s1ap_UEContextReleaseRequest; S1ap_UEContextReleaseRequest_t *s1ap_UEContextReleaseRequest_p = &s1ap_UEContextReleaseRequest; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_UEContextReleaseRequest_IEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_UEContextReleaseRequest_IEs\n"); memset(&s1ap_UEContextReleaseRequest, 0, sizeof(S1ap_UEContextReleaseRequest_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEContextReleaseRequest, (void **)&s1ap_UEContextReleaseRequest_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_UEContextReleaseRequest failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseRequest, s1ap_UEContextReleaseRequest_p); return -1; } for (i = 0; i < s1ap_UEContextReleaseRequest_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_UEContextReleaseRequest_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_UEContextReleaseRequest_IEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseRequest, s1ap_UEContextReleaseRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_UEContextReleaseRequest_IEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseRequest, s1ap_UEContextReleaseRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_UEContextReleaseRequest_IEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseRequest, s1ap_UEContextReleaseRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_GWContextReleaseIndication: { S1ap_GWContextReleaseIndication_t *s1apGWContextReleaseIndication_p = &s1ap_UEContextReleaseRequest_IEs->gwContextReleaseIndication; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_GWContextReleaseIndication, (void **)&s1apGWContextReleaseIndication_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apGWContextReleaseIndication failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseRequest, s1ap_UEContextReleaseRequest_p); return -1; } s1ap_UEContextReleaseRequest_IEs->presenceMask |= S1AP_UECONTEXTRELEASEREQUEST_IES_GWCONTEXTRELEASEINDICATION_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uecontextreleaserequest_ies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseRequest, s1ap_UEContextReleaseRequest_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseRequest, s1ap_UEContextReleaseRequest_p); return 0; } int s1ap_decode_s1ap_initialuemessage_ies( S1ap_InitialUEMessage_IEs_t *s1ap_InitialUEMessage_IEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_InitialUEMessage_t s1ap_InitialUEMessage; S1ap_InitialUEMessage_t *s1ap_InitialUEMessage_p = &s1ap_InitialUEMessage; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_InitialUEMessage_IEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_InitialUEMessage_IEs\n"); memset(&s1ap_InitialUEMessage, 0, sizeof(S1ap_InitialUEMessage_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_InitialUEMessage, (void **)&s1ap_InitialUEMessage_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_InitialUEMessage failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return -1; } for (i = 0; i < s1ap_InitialUEMessage_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_InitialUEMessage_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_InitialUEMessage_IEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_NAS_PDU: { S1ap_NAS_PDU_t *s1apNASPDU_p = &s1ap_InitialUEMessage_IEs->nas_pdu; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_NAS_PDU, (void **)&s1apNASPDU_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apNASPDU failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_TAI: { S1ap_TAI_t *s1apTAI_p = &s1ap_InitialUEMessage_IEs->tai; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TAI, (void **)&s1apTAI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTAI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_EUTRAN_CGI: { S1ap_EUTRAN_CGI_t *s1apEUTRANCGI_p = &s1ap_InitialUEMessage_IEs->eutran_cgi; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_EUTRAN_CGI, (void **)&s1apEUTRANCGI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apEUTRANCGI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_RRC_Establishment_Cause: { S1ap_RRC_Establishment_Cause_t *s1apRRCEstablishmentCause_p = &s1ap_InitialUEMessage_IEs->rrC_Establishment_Cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_RRC_Establishment_Cause, (void **)&s1apRRCEstablishmentCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apRRCEstablishmentCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_S_TMSI: { S1ap_S_TMSI_t *s1apSTMSI_p = &s1ap_InitialUEMessage_IEs->s_tmsi; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_S_TMSI, (void **)&s1apSTMSI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSTMSI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return -1; } s1ap_InitialUEMessage_IEs->presenceMask |= S1AP_INITIALUEMESSAGE_IES_S_TMSI_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CSG_Id: { S1ap_CSG_Id_t *s1apCSGId_p = &s1ap_InitialUEMessage_IEs->csG_Id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CSG_Id, (void **)&s1apCSGId_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCSGId failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return -1; } s1ap_InitialUEMessage_IEs->presenceMask |= S1AP_INITIALUEMESSAGE_IES_CSG_ID_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_GUMMEI_ID: { S1ap_GUMMEI_t *s1apGUMMEI_p = &s1ap_InitialUEMessage_IEs->gummei_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_GUMMEI, (void **)&s1apGUMMEI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apGUMMEI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return -1; } s1ap_InitialUEMessage_IEs->presenceMask |= S1AP_INITIALUEMESSAGE_IES_GUMMEI_ID_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CellAccessMode: { S1ap_CellAccessMode_t *s1apCellAccessMode_p = &s1ap_InitialUEMessage_IEs->cellAccessMode; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CellAccessMode, (void **)&s1apCellAccessMode_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCellAccessMode failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return -1; } s1ap_InitialUEMessage_IEs->presenceMask |= S1AP_INITIALUEMESSAGE_IES_CELLACCESSMODE_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_GW_TransportLayerAddress: { S1ap_TransportLayerAddress_t *s1apTransportLayerAddress_p = &s1ap_InitialUEMessage_IEs->gW_TransportLayerAddress; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TransportLayerAddress, (void **)&s1apTransportLayerAddress_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTransportLayerAddress failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return -1; } s1ap_InitialUEMessage_IEs->presenceMask |= S1AP_INITIALUEMESSAGE_IES_GW_TRANSPORTLAYERADDRESS_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_RelayNode_Indicator: { S1ap_RelayNode_Indicator_t *s1apRelayNodeIndicator_p = &s1ap_InitialUEMessage_IEs->relayNode_Indicator; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_RelayNode_Indicator, (void **)&s1apRelayNodeIndicator_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apRelayNodeIndicator failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return -1; } s1ap_InitialUEMessage_IEs->presenceMask |= S1AP_INITIALUEMESSAGE_IES_RELAYNODE_INDICATOR_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_initialuemessage_ies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialUEMessage, s1ap_InitialUEMessage_p); return 0; } int s1ap_decode_s1ap_killrequesties( S1ap_KillRequestIEs_t *s1ap_KillRequestIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_KillRequest_t s1ap_KillRequest; S1ap_KillRequest_t *s1ap_KillRequest_p = &s1ap_KillRequest; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_KillRequestIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_KillRequestIEs\n"); memset(&s1ap_KillRequest, 0, sizeof(S1ap_KillRequest_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_KillRequest, (void **)&s1ap_KillRequest_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_KillRequest failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_KillRequest, s1ap_KillRequest_p); return -1; } for (i = 0; i < s1ap_KillRequest_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_KillRequest_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MessageIdentifier: { S1ap_MessageIdentifier_t *s1apMessageIdentifier_p = &s1ap_KillRequestIEs->messageIdentifier; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MessageIdentifier, (void **)&s1apMessageIdentifier_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMessageIdentifier failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_KillRequest, s1ap_KillRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_SerialNumber: { S1ap_SerialNumber_t *s1apSerialNumber_p = &s1ap_KillRequestIEs->serialNumber; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SerialNumber, (void **)&s1apSerialNumber_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSerialNumber failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_KillRequest, s1ap_KillRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_WarningAreaList: { S1ap_WarningAreaList_t *s1apWarningAreaList_p = &s1ap_KillRequestIEs->warningAreaList; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_WarningAreaList, (void **)&s1apWarningAreaList_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apWarningAreaList failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_KillRequest, s1ap_KillRequest_p); return -1; } s1ap_KillRequestIEs->presenceMask |= S1AP_KILLREQUESTIES_WARNINGAREALIST_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_killrequesties", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_KillRequest, s1ap_KillRequest_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_KillRequest, s1ap_KillRequest_p); return 0; } int s1ap_decode_s1ap_writereplacewarningrequesties( S1ap_WriteReplaceWarningRequestIEs_t *s1ap_WriteReplaceWarningRequestIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_WriteReplaceWarningRequest_t s1ap_WriteReplaceWarningRequest; S1ap_WriteReplaceWarningRequest_t *s1ap_WriteReplaceWarningRequest_p = &s1ap_WriteReplaceWarningRequest; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_WriteReplaceWarningRequestIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_WriteReplaceWarningRequestIEs\n"); memset(&s1ap_WriteReplaceWarningRequest, 0, sizeof(S1ap_WriteReplaceWarningRequest_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_WriteReplaceWarningRequest, (void **)&s1ap_WriteReplaceWarningRequest_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_WriteReplaceWarningRequest failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return -1; } for (i = 0; i < s1ap_WriteReplaceWarningRequest_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_WriteReplaceWarningRequest_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MessageIdentifier: { S1ap_MessageIdentifier_t *s1apMessageIdentifier_p = &s1ap_WriteReplaceWarningRequestIEs->messageIdentifier; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MessageIdentifier, (void **)&s1apMessageIdentifier_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMessageIdentifier failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_SerialNumber: { S1ap_SerialNumber_t *s1apSerialNumber_p = &s1ap_WriteReplaceWarningRequestIEs->serialNumber; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SerialNumber, (void **)&s1apSerialNumber_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSerialNumber failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_WarningAreaList: { S1ap_WarningAreaList_t *s1apWarningAreaList_p = &s1ap_WriteReplaceWarningRequestIEs->warningAreaList; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_WarningAreaList, (void **)&s1apWarningAreaList_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apWarningAreaList failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return -1; } s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGAREALIST_PRESENT; } break; case S1ap_ProtocolIE_ID_id_RepetitionPeriod: { S1ap_RepetitionPeriod_t *s1apRepetitionPeriod_p = &s1ap_WriteReplaceWarningRequestIEs->repetitionPeriod; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_RepetitionPeriod, (void **)&s1apRepetitionPeriod_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apRepetitionPeriod failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_ExtendedRepetitionPeriod: { S1ap_ExtendedRepetitionPeriod_t *s1apExtendedRepetitionPeriod_p = &s1ap_WriteReplaceWarningRequestIEs->extendedRepetitionPeriod; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ExtendedRepetitionPeriod, (void **)&s1apExtendedRepetitionPeriod_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apExtendedRepetitionPeriod failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return -1; } s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_EXTENDEDREPETITIONPERIOD_PRESENT; } break; case S1ap_ProtocolIE_ID_id_NumberofBroadcastRequest: { S1ap_NumberofBroadcastRequest_t *s1apNumberofBroadcastRequest_p = &s1ap_WriteReplaceWarningRequestIEs->numberofBroadcastRequest; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_NumberofBroadcastRequest, (void **)&s1apNumberofBroadcastRequest_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apNumberofBroadcastRequest failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_WarningType: { S1ap_WarningType_t *s1apWarningType_p = &s1ap_WriteReplaceWarningRequestIEs->warningType; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_WarningType, (void **)&s1apWarningType_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apWarningType failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return -1; } s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGTYPE_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_WarningSecurityInfo: { S1ap_WarningSecurityInfo_t *s1apWarningSecurityInfo_p = &s1ap_WriteReplaceWarningRequestIEs->warningSecurityInfo; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_WarningSecurityInfo, (void **)&s1apWarningSecurityInfo_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apWarningSecurityInfo failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return -1; } s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGSECURITYINFO_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_DataCodingScheme: { S1ap_DataCodingScheme_t *s1apDataCodingScheme_p = &s1ap_WriteReplaceWarningRequestIEs->dataCodingScheme; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_DataCodingScheme, (void **)&s1apDataCodingScheme_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apDataCodingScheme failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return -1; } s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_DATACODINGSCHEME_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_WarningMessageContents: { S1ap_WarningMessageContents_t *s1apWarningMessageContents_p = &s1ap_WriteReplaceWarningRequestIEs->warningMessageContents; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_WarningMessageContents, (void **)&s1apWarningMessageContents_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apWarningMessageContents failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return -1; } s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGMESSAGECONTENTS_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_ConcurrentWarningMessageIndicator: { S1ap_ConcurrentWarningMessageIndicator_t *s1apConcurrentWarningMessageIndicator_p = &s1ap_WriteReplaceWarningRequestIEs->concurrentWarningMessageIndicator; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ConcurrentWarningMessageIndicator, (void **)&s1apConcurrentWarningMessageIndicator_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apConcurrentWarningMessageIndicator failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return -1; } s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_CONCURRENTWARNINGMESSAGEINDICATOR_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_writereplacewarningrequesties", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_p); return 0; } int s1ap_decode_s1ap_uecapabilityinfoindicationies( S1ap_UECapabilityInfoIndicationIEs_t *s1ap_UECapabilityInfoIndicationIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_UECapabilityInfoIndication_t s1ap_UECapabilityInfoIndication; S1ap_UECapabilityInfoIndication_t *s1ap_UECapabilityInfoIndication_p = &s1ap_UECapabilityInfoIndication; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_UECapabilityInfoIndicationIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_UECapabilityInfoIndicationIEs\n"); memset(&s1ap_UECapabilityInfoIndication, 0, sizeof(S1ap_UECapabilityInfoIndication_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UECapabilityInfoIndication, (void **)&s1ap_UECapabilityInfoIndication_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_UECapabilityInfoIndication failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UECapabilityInfoIndication, s1ap_UECapabilityInfoIndication_p); return -1; } for (i = 0; i < s1ap_UECapabilityInfoIndication_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_UECapabilityInfoIndication_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_UECapabilityInfoIndicationIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UECapabilityInfoIndication, s1ap_UECapabilityInfoIndication_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_UECapabilityInfoIndicationIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UECapabilityInfoIndication, s1ap_UECapabilityInfoIndication_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_UERadioCapability: { S1ap_UERadioCapability_t *s1apUERadioCapability_p = &s1ap_UECapabilityInfoIndicationIEs->ueRadioCapability; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UERadioCapability, (void **)&s1apUERadioCapability_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUERadioCapability failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UECapabilityInfoIndication, s1ap_UECapabilityInfoIndication_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uecapabilityinfoindicationies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UECapabilityInfoIndication, s1ap_UECapabilityInfoIndication_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UECapabilityInfoIndication, s1ap_UECapabilityInfoIndication_p); return 0; } int s1ap_decode_s1ap_locationreportingfailureindicationies( S1ap_LocationReportingFailureIndicationIEs_t *s1ap_LocationReportingFailureIndicationIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_LocationReportingFailureIndication_t s1ap_LocationReportingFailureIndication; S1ap_LocationReportingFailureIndication_t *s1ap_LocationReportingFailureIndication_p = &s1ap_LocationReportingFailureIndication; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_LocationReportingFailureIndicationIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_LocationReportingFailureIndicationIEs\n"); memset(&s1ap_LocationReportingFailureIndication, 0, sizeof(S1ap_LocationReportingFailureIndication_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_LocationReportingFailureIndication, (void **)&s1ap_LocationReportingFailureIndication_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_LocationReportingFailureIndication failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReportingFailureIndication, s1ap_LocationReportingFailureIndication_p); return -1; } for (i = 0; i < s1ap_LocationReportingFailureIndication_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_LocationReportingFailureIndication_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_LocationReportingFailureIndicationIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReportingFailureIndication, s1ap_LocationReportingFailureIndication_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_LocationReportingFailureIndicationIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReportingFailureIndication, s1ap_LocationReportingFailureIndication_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_LocationReportingFailureIndicationIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReportingFailureIndication, s1ap_LocationReportingFailureIndication_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_locationreportingfailureindicationies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReportingFailureIndication, s1ap_LocationReportingFailureIndication_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReportingFailureIndication, s1ap_LocationReportingFailureIndication_p); return 0; } int s1ap_decode_s1ap_initialcontextsetuprequesties( S1ap_InitialContextSetupRequestIEs_t *s1ap_InitialContextSetupRequestIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_InitialContextSetupRequest_t s1ap_InitialContextSetupRequest; S1ap_InitialContextSetupRequest_t *s1ap_InitialContextSetupRequest_p = &s1ap_InitialContextSetupRequest; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_InitialContextSetupRequestIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_InitialContextSetupRequestIEs\n"); memset(&s1ap_InitialContextSetupRequest, 0, sizeof(S1ap_InitialContextSetupRequest_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_InitialContextSetupRequest, (void **)&s1ap_InitialContextSetupRequest_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_InitialContextSetupRequest failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } for (i = 0; i < s1ap_InitialContextSetupRequest_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_InitialContextSetupRequest_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_InitialContextSetupRequestIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_InitialContextSetupRequestIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: { S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = &s1ap_InitialContextSetupRequestIEs->uEaggregateMaximumBitrate; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void **)&s1apUEAggregateMaximumBitrate_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUEAggregateMaximumBitrate failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_E_RABToBeSetupListCtxtSUReq: { S1ap_E_RABToBeSetupListCtxtSUReq_t *s1apERABToBeSetupListCtxtSUReq_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSetupListCtxtSUReq, (void**)&s1apERABToBeSetupListCtxtSUReq_p); if (s1ap_decode_s1ap_e_rabtobesetuplistctxtsureq(&s1ap_InitialContextSetupRequestIEs->e_RABToBeSetupListCtxtSUReq, s1apERABToBeSetupListCtxtSUReq_p) < 0) { d_error("Decoding of encapsulated IE s1apERABToBeSetupListCtxtSUReq failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupListCtxtSUReq, s1apERABToBeSetupListCtxtSUReq_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupListCtxtSUReq, s1apERABToBeSetupListCtxtSUReq_p); } break; case S1ap_ProtocolIE_ID_id_UESecurityCapabilities: { S1ap_UESecurityCapabilities_t *s1apUESecurityCapabilities_p = &s1ap_InitialContextSetupRequestIEs->ueSecurityCapabilities; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UESecurityCapabilities, (void **)&s1apUESecurityCapabilities_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUESecurityCapabilities failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_SecurityKey: { S1ap_SecurityKey_t *s1apSecurityKey_p = &s1ap_InitialContextSetupRequestIEs->securityKey; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SecurityKey, (void **)&s1apSecurityKey_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSecurityKey failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_TraceActivation: { S1ap_TraceActivation_t *s1apTraceActivation_p = &s1ap_InitialContextSetupRequestIEs->traceActivation; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TraceActivation, (void **)&s1apTraceActivation_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTraceActivation failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_TRACEACTIVATION_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_HandoverRestrictionList: { S1ap_HandoverRestrictionList_t *s1apHandoverRestrictionList_p = &s1ap_InitialContextSetupRequestIEs->handoverRestrictionList; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverRestrictionList, (void **)&s1apHandoverRestrictionList_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apHandoverRestrictionList failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_HANDOVERRESTRICTIONLIST_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_UERadioCapability: { S1ap_UERadioCapability_t *s1apUERadioCapability_p = &s1ap_InitialContextSetupRequestIEs->ueRadioCapability; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UERadioCapability, (void **)&s1apUERadioCapability_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUERadioCapability failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_UERADIOCAPABILITY_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_SubscriberProfileIDforRFP: { S1ap_SubscriberProfileIDforRFP_t *s1apSubscriberProfileIDforRFP_p = &s1ap_InitialContextSetupRequestIEs->subscriberProfileIDforRFP; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SubscriberProfileIDforRFP, (void **)&s1apSubscriberProfileIDforRFP_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSubscriberProfileIDforRFP failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CSFallbackIndicator: { S1ap_CSFallbackIndicator_t *s1apCSFallbackIndicator_p = &s1ap_InitialContextSetupRequestIEs->csFallbackIndicator; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CSFallbackIndicator, (void **)&s1apCSFallbackIndicator_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCSFallbackIndicator failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_CSFALLBACKINDICATOR_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_SRVCCOperationPossible: { S1ap_SRVCCOperationPossible_t *s1apSRVCCOperationPossible_p = &s1ap_InitialContextSetupRequestIEs->srvccOperationPossible; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SRVCCOperationPossible, (void **)&s1apSRVCCOperationPossible_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSRVCCOperationPossible failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_SRVCCOPERATIONPOSSIBLE_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CSGMembershipStatus: { S1ap_CSGMembershipStatus_t *s1apCSGMembershipStatus_p = &s1ap_InitialContextSetupRequestIEs->csgMembershipStatus; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CSGMembershipStatus, (void **)&s1apCSGMembershipStatus_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCSGMembershipStatus failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_RegisteredLAI: { S1ap_LAI_t *s1apLAI_p = &s1ap_InitialContextSetupRequestIEs->registeredLAI; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_LAI, (void **)&s1apLAI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apLAI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_REGISTEREDLAI_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_GUMMEI_ID: { S1ap_GUMMEI_t *s1apGUMMEI_p = &s1ap_InitialContextSetupRequestIEs->gummei_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_GUMMEI, (void **)&s1apGUMMEI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apGUMMEI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_GUMMEI_ID_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID_2: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_InitialContextSetupRequestIEs->mme_ue_s1ap_id_2; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_MME_UE_S1AP_ID_2_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_ManagementBasedMDTAllowed: { S1ap_ManagementBasedMDTAllowed_t *s1apManagementBasedMDTAllowed_p = &s1ap_InitialContextSetupRequestIEs->managementBasedMDTAllowed; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ManagementBasedMDTAllowed, (void **)&s1apManagementBasedMDTAllowed_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apManagementBasedMDTAllowed failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_MANAGEMENTBASEDMDTALLOWED_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_initialcontextsetuprequesties", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_p); return 0; } int s1ap_decode_s1ap_locationreporties( S1ap_LocationReportIEs_t *s1ap_LocationReportIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_LocationReport_t s1ap_LocationReport; S1ap_LocationReport_t *s1ap_LocationReport_p = &s1ap_LocationReport; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_LocationReportIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_LocationReportIEs\n"); memset(&s1ap_LocationReport, 0, sizeof(S1ap_LocationReport_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_LocationReport, (void **)&s1ap_LocationReport_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_LocationReport failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReport, s1ap_LocationReport_p); return -1; } for (i = 0; i < s1ap_LocationReport_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_LocationReport_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_LocationReportIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReport, s1ap_LocationReport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_LocationReportIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReport, s1ap_LocationReport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_EUTRAN_CGI: { S1ap_EUTRAN_CGI_t *s1apEUTRANCGI_p = &s1ap_LocationReportIEs->eutran_cgi; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_EUTRAN_CGI, (void **)&s1apEUTRANCGI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apEUTRANCGI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReport, s1ap_LocationReport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_TAI: { S1ap_TAI_t *s1apTAI_p = &s1ap_LocationReportIEs->tai; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TAI, (void **)&s1apTAI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTAI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReport, s1ap_LocationReport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_RequestType: { S1ap_RequestType_t *s1apRequestType_p = &s1ap_LocationReportIEs->requestType; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_RequestType, (void **)&s1apRequestType_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apRequestType failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReport, s1ap_LocationReport_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_locationreporties", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReport, s1ap_LocationReport_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReport, s1ap_LocationReport_p); return 0; } int s1ap_decode_s1ap_uplinknastransport_ies( S1ap_UplinkNASTransport_IEs_t *s1ap_UplinkNASTransport_IEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_UplinkNASTransport_t s1ap_UplinkNASTransport; S1ap_UplinkNASTransport_t *s1ap_UplinkNASTransport_p = &s1ap_UplinkNASTransport; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_UplinkNASTransport_IEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_UplinkNASTransport_IEs\n"); memset(&s1ap_UplinkNASTransport, 0, sizeof(S1ap_UplinkNASTransport_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UplinkNASTransport, (void **)&s1ap_UplinkNASTransport_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_UplinkNASTransport failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNASTransport, s1ap_UplinkNASTransport_p); return -1; } for (i = 0; i < s1ap_UplinkNASTransport_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_UplinkNASTransport_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_UplinkNASTransport_IEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNASTransport, s1ap_UplinkNASTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_UplinkNASTransport_IEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNASTransport, s1ap_UplinkNASTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_NAS_PDU: { S1ap_NAS_PDU_t *s1apNASPDU_p = &s1ap_UplinkNASTransport_IEs->nas_pdu; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_NAS_PDU, (void **)&s1apNASPDU_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apNASPDU failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNASTransport, s1ap_UplinkNASTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_EUTRAN_CGI: { S1ap_EUTRAN_CGI_t *s1apEUTRANCGI_p = &s1ap_UplinkNASTransport_IEs->eutran_cgi; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_EUTRAN_CGI, (void **)&s1apEUTRANCGI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apEUTRANCGI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNASTransport, s1ap_UplinkNASTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_TAI: { S1ap_TAI_t *s1apTAI_p = &s1ap_UplinkNASTransport_IEs->tai; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TAI, (void **)&s1apTAI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTAI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNASTransport, s1ap_UplinkNASTransport_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_GW_TransportLayerAddress: { S1ap_TransportLayerAddress_t *s1apTransportLayerAddress_p = &s1ap_UplinkNASTransport_IEs->gW_TransportLayerAddress; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TransportLayerAddress, (void **)&s1apTransportLayerAddress_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTransportLayerAddress failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNASTransport, s1ap_UplinkNASTransport_p); return -1; } s1ap_UplinkNASTransport_IEs->presenceMask |= S1AP_UPLINKNASTRANSPORT_IES_GW_TRANSPORTLAYERADDRESS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinknastransport_ies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNASTransport, s1ap_UplinkNASTransport_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkNASTransport, s1ap_UplinkNASTransport_p); return 0; } int s1ap_decode_s1ap_uecontextmodificationresponseies( S1ap_UEContextModificationResponseIEs_t *s1ap_UEContextModificationResponseIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_UEContextModificationResponse_t s1ap_UEContextModificationResponse; S1ap_UEContextModificationResponse_t *s1ap_UEContextModificationResponse_p = &s1ap_UEContextModificationResponse; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_UEContextModificationResponseIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_UEContextModificationResponseIEs\n"); memset(&s1ap_UEContextModificationResponse, 0, sizeof(S1ap_UEContextModificationResponse_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEContextModificationResponse, (void **)&s1ap_UEContextModificationResponse_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_UEContextModificationResponse failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationResponse, s1ap_UEContextModificationResponse_p); return -1; } for (i = 0; i < s1ap_UEContextModificationResponse_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_UEContextModificationResponse_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_UEContextModificationResponseIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationResponse, s1ap_UEContextModificationResponse_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_UEContextModificationResponseIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationResponse, s1ap_UEContextModificationResponse_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_UEContextModificationResponseIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationResponse, s1ap_UEContextModificationResponse_p); return -1; } s1ap_UEContextModificationResponseIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uecontextmodificationresponseies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationResponse, s1ap_UEContextModificationResponse_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationResponse, s1ap_UEContextModificationResponse_p); return 0; } int s1ap_decode_s1ap_uecontextmodificationrequesties( S1ap_UEContextModificationRequestIEs_t *s1ap_UEContextModificationRequestIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_UEContextModificationRequest_t s1ap_UEContextModificationRequest; S1ap_UEContextModificationRequest_t *s1ap_UEContextModificationRequest_p = &s1ap_UEContextModificationRequest; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_UEContextModificationRequestIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_UEContextModificationRequestIEs\n"); memset(&s1ap_UEContextModificationRequest, 0, sizeof(S1ap_UEContextModificationRequest_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEContextModificationRequest, (void **)&s1ap_UEContextModificationRequest_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_UEContextModificationRequest failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationRequest, s1ap_UEContextModificationRequest_p); return -1; } for (i = 0; i < s1ap_UEContextModificationRequest_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_UEContextModificationRequest_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_UEContextModificationRequestIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationRequest, s1ap_UEContextModificationRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_UEContextModificationRequestIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationRequest, s1ap_UEContextModificationRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_SecurityKey: { S1ap_SecurityKey_t *s1apSecurityKey_p = &s1ap_UEContextModificationRequestIEs->securityKey; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SecurityKey, (void **)&s1apSecurityKey_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSecurityKey failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationRequest, s1ap_UEContextModificationRequest_p); return -1; } s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_SECURITYKEY_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_SubscriberProfileIDforRFP: { S1ap_SubscriberProfileIDforRFP_t *s1apSubscriberProfileIDforRFP_p = &s1ap_UEContextModificationRequestIEs->subscriberProfileIDforRFP; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SubscriberProfileIDforRFP, (void **)&s1apSubscriberProfileIDforRFP_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSubscriberProfileIDforRFP failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationRequest, s1ap_UEContextModificationRequest_p); return -1; } s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: { S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = &s1ap_UEContextModificationRequestIEs->uEaggregateMaximumBitrate; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void **)&s1apUEAggregateMaximumBitrate_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUEAggregateMaximumBitrate failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationRequest, s1ap_UEContextModificationRequest_p); return -1; } s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CSFallbackIndicator: { S1ap_CSFallbackIndicator_t *s1apCSFallbackIndicator_p = &s1ap_UEContextModificationRequestIEs->csFallbackIndicator; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CSFallbackIndicator, (void **)&s1apCSFallbackIndicator_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCSFallbackIndicator failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationRequest, s1ap_UEContextModificationRequest_p); return -1; } s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_CSFALLBACKINDICATOR_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_UESecurityCapabilities: { S1ap_UESecurityCapabilities_t *s1apUESecurityCapabilities_p = &s1ap_UEContextModificationRequestIEs->ueSecurityCapabilities; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UESecurityCapabilities, (void **)&s1apUESecurityCapabilities_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUESecurityCapabilities failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationRequest, s1ap_UEContextModificationRequest_p); return -1; } s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_UESECURITYCAPABILITIES_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CSGMembershipStatus: { S1ap_CSGMembershipStatus_t *s1apCSGMembershipStatus_p = &s1ap_UEContextModificationRequestIEs->csgMembershipStatus; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CSGMembershipStatus, (void **)&s1apCSGMembershipStatus_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCSGMembershipStatus failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationRequest, s1ap_UEContextModificationRequest_p); return -1; } s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_RegisteredLAI: { S1ap_LAI_t *s1apLAI_p = &s1ap_UEContextModificationRequestIEs->registeredLAI; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_LAI, (void **)&s1apLAI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apLAI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationRequest, s1ap_UEContextModificationRequest_p); return -1; } s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_REGISTEREDLAI_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uecontextmodificationrequesties", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationRequest, s1ap_UEContextModificationRequest_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationRequest, s1ap_UEContextModificationRequest_p); return 0; } int s1ap_decode_s1ap_locationreportingcontrolies( S1ap_LocationReportingControlIEs_t *s1ap_LocationReportingControlIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_LocationReportingControl_t s1ap_LocationReportingControl; S1ap_LocationReportingControl_t *s1ap_LocationReportingControl_p = &s1ap_LocationReportingControl; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_LocationReportingControlIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_LocationReportingControlIEs\n"); memset(&s1ap_LocationReportingControl, 0, sizeof(S1ap_LocationReportingControl_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_LocationReportingControl, (void **)&s1ap_LocationReportingControl_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_LocationReportingControl failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReportingControl, s1ap_LocationReportingControl_p); return -1; } for (i = 0; i < s1ap_LocationReportingControl_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_LocationReportingControl_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_LocationReportingControlIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReportingControl, s1ap_LocationReportingControl_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_LocationReportingControlIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReportingControl, s1ap_LocationReportingControl_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_RequestType: { S1ap_RequestType_t *s1apRequestType_p = &s1ap_LocationReportingControlIEs->requestType; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_RequestType, (void **)&s1apRequestType_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apRequestType failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReportingControl, s1ap_LocationReportingControl_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_locationreportingcontrolies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReportingControl, s1ap_LocationReportingControl_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_LocationReportingControl, s1ap_LocationReportingControl_p); return 0; } int s1ap_decode_s1ap_uplinks1cdma2000tunnelingies( S1ap_UplinkS1cdma2000tunnelingIEs_t *s1ap_UplinkS1cdma2000tunnelingIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_UplinkS1cdma2000tunneling_t s1ap_UplinkS1cdma2000tunneling; S1ap_UplinkS1cdma2000tunneling_t *s1ap_UplinkS1cdma2000tunneling_p = &s1ap_UplinkS1cdma2000tunneling; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_UplinkS1cdma2000tunnelingIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_UplinkS1cdma2000tunnelingIEs\n"); memset(&s1ap_UplinkS1cdma2000tunneling, 0, sizeof(S1ap_UplinkS1cdma2000tunneling_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UplinkS1cdma2000tunneling, (void **)&s1ap_UplinkS1cdma2000tunneling_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_UplinkS1cdma2000tunneling failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkS1cdma2000tunneling, s1ap_UplinkS1cdma2000tunneling_p); return -1; } for (i = 0; i < s1ap_UplinkS1cdma2000tunneling_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_UplinkS1cdma2000tunneling_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_UplinkS1cdma2000tunnelingIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkS1cdma2000tunneling, s1ap_UplinkS1cdma2000tunneling_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_UplinkS1cdma2000tunnelingIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkS1cdma2000tunneling, s1ap_UplinkS1cdma2000tunneling_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_cdma2000RATType: { S1ap_Cdma2000RATType_t *s1apCdma2000RATType_p = &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000RATType; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cdma2000RATType, (void **)&s1apCdma2000RATType_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCdma2000RATType failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkS1cdma2000tunneling, s1ap_UplinkS1cdma2000tunneling_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_cdma2000SectorID: { S1ap_Cdma2000SectorID_t *s1apCdma2000SectorID_p = &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000SectorID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cdma2000SectorID, (void **)&s1apCdma2000SectorID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCdma2000SectorID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkS1cdma2000tunneling, s1ap_UplinkS1cdma2000tunneling_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_cdma2000HORequiredIndication: { S1ap_Cdma2000HORequiredIndication_t *s1apCdma2000HORequiredIndication_p = &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000HORequiredIndication; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cdma2000HORequiredIndication, (void **)&s1apCdma2000HORequiredIndication_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCdma2000HORequiredIndication failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkS1cdma2000tunneling, s1ap_UplinkS1cdma2000tunneling_p); return -1; } s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask |= S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000HOREQUIREDINDICATION_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_cdma2000OneXSRVCCInfo: { S1ap_Cdma2000OneXSRVCCInfo_t *s1apCdma2000OneXSRVCCInfo_p = &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000OneXSRVCCInfo; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cdma2000OneXSRVCCInfo, (void **)&s1apCdma2000OneXSRVCCInfo_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCdma2000OneXSRVCCInfo failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkS1cdma2000tunneling, s1ap_UplinkS1cdma2000tunneling_p); return -1; } s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask |= S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXSRVCCINFO_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_cdma2000OneXRAND: { S1ap_Cdma2000OneXRAND_t *s1apCdma2000OneXRAND_p = &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000OneXRAND; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cdma2000OneXRAND, (void **)&s1apCdma2000OneXRAND_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCdma2000OneXRAND failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkS1cdma2000tunneling, s1ap_UplinkS1cdma2000tunneling_p); return -1; } s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask |= S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXRAND_PRESENT; } break; case S1ap_ProtocolIE_ID_id_cdma2000PDU: { S1ap_Cdma2000PDU_t *s1apCdma2000PDU_p = &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000PDU; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cdma2000PDU, (void **)&s1apCdma2000PDU_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCdma2000PDU failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkS1cdma2000tunneling, s1ap_UplinkS1cdma2000tunneling_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_EUTRANRoundTripDelayEstimationInfo: { S1ap_EUTRANRoundTripDelayEstimationInfo_t *s1apEUTRANRoundTripDelayEstimationInfo_p = &s1ap_UplinkS1cdma2000tunnelingIEs->eutranRoundTripDelayEstimationInfo; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_EUTRANRoundTripDelayEstimationInfo, (void **)&s1apEUTRANRoundTripDelayEstimationInfo_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apEUTRANRoundTripDelayEstimationInfo failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkS1cdma2000tunneling, s1ap_UplinkS1cdma2000tunneling_p); return -1; } s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask |= S1AP_UPLINKS1CDMA2000TUNNELINGIES_EUTRANROUNDTRIPDELAYESTIMATIONINFO_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinks1cdma2000tunnelingies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkS1cdma2000tunneling, s1ap_UplinkS1cdma2000tunneling_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkS1cdma2000tunneling, s1ap_UplinkS1cdma2000tunneling_p); return 0; } int s1ap_decode_s1ap_handoverrequesties( S1ap_HandoverRequestIEs_t *s1ap_HandoverRequestIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_HandoverRequest_t s1ap_HandoverRequest; S1ap_HandoverRequest_t *s1ap_HandoverRequest_p = &s1ap_HandoverRequest; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_HandoverRequestIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_HandoverRequestIEs\n"); memset(&s1ap_HandoverRequest, 0, sizeof(S1ap_HandoverRequest_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverRequest, (void **)&s1ap_HandoverRequest_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_HandoverRequest failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } for (i = 0; i < s1ap_HandoverRequest_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_HandoverRequest_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_HandoverRequestIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_HandoverType: { S1ap_HandoverType_t *s1apHandoverType_p = &s1ap_HandoverRequestIEs->handoverType; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverType, (void **)&s1apHandoverType_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apHandoverType failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_HandoverRequestIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: { S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = &s1ap_HandoverRequestIEs->uEaggregateMaximumBitrate; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void **)&s1apUEAggregateMaximumBitrate_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUEAggregateMaximumBitrate failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_E_RABToBeSetupListHOReq: { S1ap_E_RABToBeSetupListHOReq_t *s1apERABToBeSetupListHOReq_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSetupListHOReq, (void**)&s1apERABToBeSetupListHOReq_p); if (s1ap_decode_s1ap_e_rabtobesetuplisthoreq(&s1ap_HandoverRequestIEs->e_RABToBeSetupListHOReq, s1apERABToBeSetupListHOReq_p) < 0) { d_error("Decoding of encapsulated IE s1apERABToBeSetupListHOReq failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupListHOReq, s1apERABToBeSetupListHOReq_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupListHOReq, s1apERABToBeSetupListHOReq_p); } break; case S1ap_ProtocolIE_ID_id_Source_ToTarget_TransparentContainer: { S1ap_Source_ToTarget_TransparentContainer_t *s1apSourceToTargetTransparentContainer_p = &s1ap_HandoverRequestIEs->source_ToTarget_TransparentContainer; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Source_ToTarget_TransparentContainer, (void **)&s1apSourceToTargetTransparentContainer_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSourceToTargetTransparentContainer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_UESecurityCapabilities: { S1ap_UESecurityCapabilities_t *s1apUESecurityCapabilities_p = &s1ap_HandoverRequestIEs->ueSecurityCapabilities; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UESecurityCapabilities, (void **)&s1apUESecurityCapabilities_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUESecurityCapabilities failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_HandoverRestrictionList: { S1ap_HandoverRestrictionList_t *s1apHandoverRestrictionList_p = &s1ap_HandoverRequestIEs->handoverRestrictionList; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverRestrictionList, (void **)&s1apHandoverRestrictionList_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apHandoverRestrictionList failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_HANDOVERRESTRICTIONLIST_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_TraceActivation: { S1ap_TraceActivation_t *s1apTraceActivation_p = &s1ap_HandoverRequestIEs->traceActivation; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TraceActivation, (void **)&s1apTraceActivation_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTraceActivation failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_TRACEACTIVATION_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_RequestType: { S1ap_RequestType_t *s1apRequestType_p = &s1ap_HandoverRequestIEs->requestType; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_RequestType, (void **)&s1apRequestType_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apRequestType failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_REQUESTTYPE_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_SRVCCOperationPossible: { S1ap_SRVCCOperationPossible_t *s1apSRVCCOperationPossible_p = &s1ap_HandoverRequestIEs->srvccOperationPossible; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SRVCCOperationPossible, (void **)&s1apSRVCCOperationPossible_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSRVCCOperationPossible failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_SRVCCOPERATIONPOSSIBLE_PRESENT; } break; case S1ap_ProtocolIE_ID_id_SecurityContext: { S1ap_SecurityContext_t *s1apSecurityContext_p = &s1ap_HandoverRequestIEs->securityContext; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SecurityContext, (void **)&s1apSecurityContext_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSecurityContext failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CSG_Id: { S1ap_CSG_Id_t *s1apCSGId_p = &s1ap_HandoverRequestIEs->csG_Id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CSG_Id, (void **)&s1apCSGId_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCSGId failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_CSG_ID_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CSGMembershipStatus: { S1ap_CSGMembershipStatus_t *s1apCSGMembershipStatus_p = &s1ap_HandoverRequestIEs->csgMembershipStatus; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CSGMembershipStatus, (void **)&s1apCSGMembershipStatus_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCSGMembershipStatus failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_GUMMEI_ID: { S1ap_GUMMEI_t *s1apGUMMEI_p = &s1ap_HandoverRequestIEs->gummei_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_GUMMEI, (void **)&s1apGUMMEI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apGUMMEI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_GUMMEI_ID_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID_2: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_HandoverRequestIEs->mme_ue_s1ap_id_2; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_MME_UE_S1AP_ID_2_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_ManagementBasedMDTAllowed: { S1ap_ManagementBasedMDTAllowed_t *s1apManagementBasedMDTAllowed_p = &s1ap_HandoverRequestIEs->managementBasedMDTAllowed; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ManagementBasedMDTAllowed, (void **)&s1apManagementBasedMDTAllowed_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apManagementBasedMDTAllowed failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_MANAGEMENTBASEDMDTALLOWED_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_handoverrequesties", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequest, s1ap_HandoverRequest_p); return 0; } int s1ap_decode_s1ap_handoverrequiredies( S1ap_HandoverRequiredIEs_t *s1ap_HandoverRequiredIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_HandoverRequired_t s1ap_HandoverRequired; S1ap_HandoverRequired_t *s1ap_HandoverRequired_p = &s1ap_HandoverRequired; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_HandoverRequiredIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_HandoverRequiredIEs\n"); memset(&s1ap_HandoverRequired, 0, sizeof(S1ap_HandoverRequired_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverRequired, (void **)&s1ap_HandoverRequired_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_HandoverRequired failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } for (i = 0; i < s1ap_HandoverRequired_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_HandoverRequired_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_HandoverRequiredIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_HandoverRequiredIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_HandoverType: { S1ap_HandoverType_t *s1apHandoverType_p = &s1ap_HandoverRequiredIEs->handoverType; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverType, (void **)&s1apHandoverType_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apHandoverType failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_HandoverRequiredIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_TargetID: { S1ap_TargetID_t *s1apTargetID_p = &s1ap_HandoverRequiredIEs->targetID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TargetID, (void **)&s1apTargetID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTargetID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_Direct_Forwarding_Path_Availability: { S1ap_Direct_Forwarding_Path_Availability_t *s1apDirectForwardingPathAvailability_p = &s1ap_HandoverRequiredIEs->direct_Forwarding_Path_Availability; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Direct_Forwarding_Path_Availability, (void **)&s1apDirectForwardingPathAvailability_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apDirectForwardingPathAvailability failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_DIRECT_FORWARDING_PATH_AVAILABILITY_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_SRVCCHOIndication: { S1ap_SRVCCHOIndication_t *s1apSRVCCHOIndication_p = &s1ap_HandoverRequiredIEs->srvcchoIndication; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SRVCCHOIndication, (void **)&s1apSRVCCHOIndication_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSRVCCHOIndication failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_SRVCCHOINDICATION_PRESENT; } break; case S1ap_ProtocolIE_ID_id_Source_ToTarget_TransparentContainer: { S1ap_Source_ToTarget_TransparentContainer_t *s1apSourceToTargetTransparentContainer_p = &s1ap_HandoverRequiredIEs->source_ToTarget_TransparentContainer; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Source_ToTarget_TransparentContainer, (void **)&s1apSourceToTargetTransparentContainer_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSourceToTargetTransparentContainer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_Source_ToTarget_TransparentContainer_Secondary: { S1ap_Source_ToTarget_TransparentContainer_t *s1apSourceToTargetTransparentContainer_p = &s1ap_HandoverRequiredIEs->source_ToTarget_TransparentContainer_Secondary; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Source_ToTarget_TransparentContainer, (void **)&s1apSourceToTargetTransparentContainer_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSourceToTargetTransparentContainer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_SOURCE_TOTARGET_TRANSPARENTCONTAINER_SECONDARY_PRESENT; } break; /* Conditional field */ case S1ap_ProtocolIE_ID_id_MSClassmark2: { S1ap_MSClassmark2_t *s1apMSClassmark2_p = &s1ap_HandoverRequiredIEs->msClassmark2; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MSClassmark2, (void **)&s1apMSClassmark2_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMSClassmark2 failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_MSCLASSMARK2_PRESENT; } break; /* Conditional field */ case S1ap_ProtocolIE_ID_id_MSClassmark3: { S1ap_MSClassmark3_t *s1apMSClassmark3_p = &s1ap_HandoverRequiredIEs->msClassmark3; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MSClassmark3, (void **)&s1apMSClassmark3_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMSClassmark3 failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_MSCLASSMARK3_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CSG_Id: { S1ap_CSG_Id_t *s1apCSGId_p = &s1ap_HandoverRequiredIEs->csG_Id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CSG_Id, (void **)&s1apCSGId_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCSGId failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_CSG_ID_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CellAccessMode: { S1ap_CellAccessMode_t *s1apCellAccessMode_p = &s1ap_HandoverRequiredIEs->cellAccessMode; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CellAccessMode, (void **)&s1apCellAccessMode_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCellAccessMode failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_CELLACCESSMODE_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_PS_ServiceNotAvailable: { S1ap_PS_ServiceNotAvailable_t *s1apPSServiceNotAvailable_p = &s1ap_HandoverRequiredIEs->pS_ServiceNotAvailable; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_PS_ServiceNotAvailable, (void **)&s1apPSServiceNotAvailable_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apPSServiceNotAvailable failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_PS_SERVICENOTAVAILABLE_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_handoverrequiredies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequired, s1ap_HandoverRequired_p); return 0; } int s1ap_decode_s1ap_mmeconfigurationupdateacknowledgeies( S1ap_MMEConfigurationUpdateAcknowledgeIEs_t *s1ap_MMEConfigurationUpdateAcknowledgeIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_MMEConfigurationUpdateAcknowledge_t s1ap_MMEConfigurationUpdateAcknowledge; S1ap_MMEConfigurationUpdateAcknowledge_t *s1ap_MMEConfigurationUpdateAcknowledge_p = &s1ap_MMEConfigurationUpdateAcknowledge; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_MMEConfigurationUpdateAcknowledgeIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_MMEConfigurationUpdateAcknowledgeIEs\n"); memset(&s1ap_MMEConfigurationUpdateAcknowledge, 0, sizeof(S1ap_MMEConfigurationUpdateAcknowledge_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MMEConfigurationUpdateAcknowledge, (void **)&s1ap_MMEConfigurationUpdateAcknowledge_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_MMEConfigurationUpdateAcknowledge failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdateAcknowledge, s1ap_MMEConfigurationUpdateAcknowledge_p); return -1; } for (i = 0; i < s1ap_MMEConfigurationUpdateAcknowledge_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_MMEConfigurationUpdateAcknowledge_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_MMEConfigurationUpdateAcknowledgeIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdateAcknowledge, s1ap_MMEConfigurationUpdateAcknowledge_p); return -1; } s1ap_MMEConfigurationUpdateAcknowledgeIEs->presenceMask |= S1AP_MMECONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_mmeconfigurationupdateacknowledgeies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdateAcknowledge, s1ap_MMEConfigurationUpdateAcknowledge_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdateAcknowledge, s1ap_MMEConfigurationUpdateAcknowledge_p); return 0; } int s1ap_decode_s1ap_killresponseies( S1ap_KillResponseIEs_t *s1ap_KillResponseIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_KillResponse_t s1ap_KillResponse; S1ap_KillResponse_t *s1ap_KillResponse_p = &s1ap_KillResponse; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_KillResponseIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_KillResponseIEs\n"); memset(&s1ap_KillResponse, 0, sizeof(S1ap_KillResponse_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_KillResponse, (void **)&s1ap_KillResponse_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_KillResponse failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_KillResponse, s1ap_KillResponse_p); return -1; } for (i = 0; i < s1ap_KillResponse_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_KillResponse_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MessageIdentifier: { S1ap_MessageIdentifier_t *s1apMessageIdentifier_p = &s1ap_KillResponseIEs->messageIdentifier; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MessageIdentifier, (void **)&s1apMessageIdentifier_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMessageIdentifier failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_KillResponse, s1ap_KillResponse_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_SerialNumber: { S1ap_SerialNumber_t *s1apSerialNumber_p = &s1ap_KillResponseIEs->serialNumber; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SerialNumber, (void **)&s1apSerialNumber_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSerialNumber failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_KillResponse, s1ap_KillResponse_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_BroadcastCancelledAreaList: { S1ap_BroadcastCancelledAreaList_t *s1apBroadcastCancelledAreaList_p = &s1ap_KillResponseIEs->broadcastCancelledAreaList; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_BroadcastCancelledAreaList, (void **)&s1apBroadcastCancelledAreaList_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apBroadcastCancelledAreaList failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_KillResponse, s1ap_KillResponse_p); return -1; } s1ap_KillResponseIEs->presenceMask |= S1AP_KILLRESPONSEIES_BROADCASTCANCELLEDAREALIST_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_KillResponseIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_KillResponse, s1ap_KillResponse_p); return -1; } s1ap_KillResponseIEs->presenceMask |= S1AP_KILLRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_killresponseies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_KillResponse, s1ap_KillResponse_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_KillResponse, s1ap_KillResponse_p); return 0; } int s1ap_decode_s1ap_mmestatustransferies( S1ap_MMEStatusTransferIEs_t *s1ap_MMEStatusTransferIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_MMEStatusTransfer_t s1ap_MMEStatusTransfer; S1ap_MMEStatusTransfer_t *s1ap_MMEStatusTransfer_p = &s1ap_MMEStatusTransfer; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_MMEStatusTransferIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_MMEStatusTransferIEs\n"); memset(&s1ap_MMEStatusTransfer, 0, sizeof(S1ap_MMEStatusTransfer_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MMEStatusTransfer, (void **)&s1ap_MMEStatusTransfer_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_MMEStatusTransfer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEStatusTransfer, s1ap_MMEStatusTransfer_p); return -1; } for (i = 0; i < s1ap_MMEStatusTransfer_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_MMEStatusTransfer_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_MMEStatusTransferIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEStatusTransfer, s1ap_MMEStatusTransfer_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_MMEStatusTransferIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEStatusTransfer, s1ap_MMEStatusTransfer_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_StatusTransfer_TransparentContainer: { S1ap_ENB_StatusTransfer_TransparentContainer_t *s1apENBStatusTransferTransparentContainer_p = &s1ap_MMEStatusTransferIEs->eNB_StatusTransfer_TransparentContainer; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_StatusTransfer_TransparentContainer, (void **)&s1apENBStatusTransferTransparentContainer_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBStatusTransferTransparentContainer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEStatusTransfer, s1ap_MMEStatusTransfer_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_mmestatustransferies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEStatusTransfer, s1ap_MMEStatusTransfer_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEStatusTransfer, s1ap_MMEStatusTransfer_p); return 0; } int s1ap_decode_s1ap_mmeconfigurationupdateies( S1ap_MMEConfigurationUpdateIEs_t *s1ap_MMEConfigurationUpdateIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_MMEConfigurationUpdate_t s1ap_MMEConfigurationUpdate; S1ap_MMEConfigurationUpdate_t *s1ap_MMEConfigurationUpdate_p = &s1ap_MMEConfigurationUpdate; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_MMEConfigurationUpdateIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_MMEConfigurationUpdateIEs\n"); memset(&s1ap_MMEConfigurationUpdate, 0, sizeof(S1ap_MMEConfigurationUpdate_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MMEConfigurationUpdate, (void **)&s1ap_MMEConfigurationUpdate_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_MMEConfigurationUpdate failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdate, s1ap_MMEConfigurationUpdate_p); return -1; } for (i = 0; i < s1ap_MMEConfigurationUpdate_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_MMEConfigurationUpdate_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { /* Optional field */ case S1ap_ProtocolIE_ID_id_MMEname: { S1ap_MMEname_t *s1apMMEname_p = &s1ap_MMEConfigurationUpdateIEs->mmEname; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MMEname, (void **)&s1apMMEname_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEname failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdate, s1ap_MMEConfigurationUpdate_p); return -1; } s1ap_MMEConfigurationUpdateIEs->presenceMask |= S1AP_MMECONFIGURATIONUPDATEIES_MMENAME_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_ServedGUMMEIs: { S1ap_ServedGUMMEIs_t *s1apServedGUMMEIs_p = &s1ap_MMEConfigurationUpdateIEs->servedGUMMEIs; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ServedGUMMEIs, (void **)&s1apServedGUMMEIs_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apServedGUMMEIs failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdate, s1ap_MMEConfigurationUpdate_p); return -1; } s1ap_MMEConfigurationUpdateIEs->presenceMask |= S1AP_MMECONFIGURATIONUPDATEIES_SERVEDGUMMEIS_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_RelativeMMECapacity: { S1ap_RelativeMMECapacity_t *s1apRelativeMMECapacity_p = &s1ap_MMEConfigurationUpdateIEs->relativeMMECapacity; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_RelativeMMECapacity, (void **)&s1apRelativeMMECapacity_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apRelativeMMECapacity failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdate, s1ap_MMEConfigurationUpdate_p); return -1; } s1ap_MMEConfigurationUpdateIEs->presenceMask |= S1AP_MMECONFIGURATIONUPDATEIES_RELATIVEMMECAPACITY_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_mmeconfigurationupdateies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdate, s1ap_MMEConfigurationUpdate_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdate, s1ap_MMEConfigurationUpdate_p); return 0; } int s1ap_decode_s1ap_e_rabmodifyrequesties( S1ap_E_RABModifyRequestIEs_t *s1ap_E_RABModifyRequestIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_E_RABModifyRequest_t s1ap_E_RABModifyRequest; S1ap_E_RABModifyRequest_t *s1ap_E_RABModifyRequest_p = &s1ap_E_RABModifyRequest; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_E_RABModifyRequestIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_E_RABModifyRequestIEs\n"); memset(&s1ap_E_RABModifyRequest, 0, sizeof(S1ap_E_RABModifyRequest_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_E_RABModifyRequest, (void **)&s1ap_E_RABModifyRequest_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_E_RABModifyRequest failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyRequest, s1ap_E_RABModifyRequest_p); return -1; } for (i = 0; i < s1ap_E_RABModifyRequest_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_E_RABModifyRequest_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_E_RABModifyRequestIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyRequest, s1ap_E_RABModifyRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_E_RABModifyRequestIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyRequest, s1ap_E_RABModifyRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: { S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = &s1ap_E_RABModifyRequestIEs->uEaggregateMaximumBitrate; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void **)&s1apUEAggregateMaximumBitrate_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUEAggregateMaximumBitrate failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyRequest, s1ap_E_RABModifyRequest_p); return -1; } s1ap_E_RABModifyRequestIEs->presenceMask |= S1AP_E_RABMODIFYREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT; } break; case S1ap_ProtocolIE_ID_id_E_RABToBeModifiedListBearerModReq: { S1ap_E_RABToBeModifiedListBearerModReq_t *s1apERABToBeModifiedListBearerModReq_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeModifiedListBearerModReq, (void**)&s1apERABToBeModifiedListBearerModReq_p); if (s1ap_decode_s1ap_e_rabtobemodifiedlistbearermodreq(&s1ap_E_RABModifyRequestIEs->e_RABToBeModifiedListBearerModReq, s1apERABToBeModifiedListBearerModReq_p) < 0) { d_error("Decoding of encapsulated IE s1apERABToBeModifiedListBearerModReq failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeModifiedListBearerModReq, s1apERABToBeModifiedListBearerModReq_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyRequest, s1ap_E_RABModifyRequest_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeModifiedListBearerModReq, s1apERABToBeModifiedListBearerModReq_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_e_rabmodifyrequesties", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyRequest, s1ap_E_RABModifyRequest_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyRequest, s1ap_E_RABModifyRequest_p); return 0; } int s1ap_decode_s1ap_enbconfigurationupdatefailureies( S1ap_ENBConfigurationUpdateFailureIEs_t *s1ap_ENBConfigurationUpdateFailureIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_ENBConfigurationUpdateFailure_t s1ap_ENBConfigurationUpdateFailure; S1ap_ENBConfigurationUpdateFailure_t *s1ap_ENBConfigurationUpdateFailure_p = &s1ap_ENBConfigurationUpdateFailure; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_ENBConfigurationUpdateFailureIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_ENBConfigurationUpdateFailureIEs\n"); memset(&s1ap_ENBConfigurationUpdateFailure, 0, sizeof(S1ap_ENBConfigurationUpdateFailure_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENBConfigurationUpdateFailure, (void **)&s1ap_ENBConfigurationUpdateFailure_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_ENBConfigurationUpdateFailure failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdateFailure, s1ap_ENBConfigurationUpdateFailure_p); return -1; } for (i = 0; i < s1ap_ENBConfigurationUpdateFailure_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_ENBConfigurationUpdateFailure_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_ENBConfigurationUpdateFailureIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdateFailure, s1ap_ENBConfigurationUpdateFailure_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_TimeToWait: { S1ap_TimeToWait_t *s1apTimeToWait_p = &s1ap_ENBConfigurationUpdateFailureIEs->timeToWait; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TimeToWait, (void **)&s1apTimeToWait_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTimeToWait failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdateFailure, s1ap_ENBConfigurationUpdateFailure_p); return -1; } s1ap_ENBConfigurationUpdateFailureIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_ENBConfigurationUpdateFailureIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdateFailure, s1ap_ENBConfigurationUpdateFailure_p); return -1; } s1ap_ENBConfigurationUpdateFailureIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_enbconfigurationupdatefailureies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdateFailure, s1ap_ENBConfigurationUpdateFailure_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdateFailure, s1ap_ENBConfigurationUpdateFailure_p); return 0; } int s1ap_decode_s1ap_reseties( S1ap_ResetIEs_t *s1ap_ResetIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_Reset_t s1ap_Reset; S1ap_Reset_t *s1ap_Reset_p = &s1ap_Reset; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_ResetIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_ResetIEs\n"); memset(&s1ap_Reset, 0, sizeof(S1ap_Reset_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Reset, (void **)&s1ap_Reset_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_Reset failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Reset, s1ap_Reset_p); return -1; } for (i = 0; i < s1ap_Reset_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_Reset_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_ResetIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Reset, s1ap_Reset_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_ResetType: { S1ap_ResetType_t *s1apResetType_p = &s1ap_ResetIEs->resetType; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ResetType, (void **)&s1apResetType_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apResetType failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Reset, s1ap_Reset_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_reseties", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Reset, s1ap_Reset_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Reset, s1ap_Reset_p); return 0; } int s1ap_decode_s1ap_s1setupresponseies( S1ap_S1SetupResponseIEs_t *s1ap_S1SetupResponseIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_S1SetupResponse_t s1ap_S1SetupResponse; S1ap_S1SetupResponse_t *s1ap_S1SetupResponse_p = &s1ap_S1SetupResponse; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_S1SetupResponseIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_S1SetupResponseIEs\n"); memset(&s1ap_S1SetupResponse, 0, sizeof(S1ap_S1SetupResponse_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_S1SetupResponse, (void **)&s1ap_S1SetupResponse_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_S1SetupResponse failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupResponse, s1ap_S1SetupResponse_p); return -1; } for (i = 0; i < s1ap_S1SetupResponse_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_S1SetupResponse_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { /* Optional field */ case S1ap_ProtocolIE_ID_id_MMEname: { S1ap_MMEname_t *s1apMMEname_p = &s1ap_S1SetupResponseIEs->mmEname; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MMEname, (void **)&s1apMMEname_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEname failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupResponse, s1ap_S1SetupResponse_p); return -1; } s1ap_S1SetupResponseIEs->presenceMask |= S1AP_S1SETUPRESPONSEIES_MMENAME_PRESENT; } break; case S1ap_ProtocolIE_ID_id_ServedGUMMEIs: { S1ap_ServedGUMMEIs_t *s1apServedGUMMEIs_p = &s1ap_S1SetupResponseIEs->servedGUMMEIs; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ServedGUMMEIs, (void **)&s1apServedGUMMEIs_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apServedGUMMEIs failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupResponse, s1ap_S1SetupResponse_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_RelativeMMECapacity: { S1ap_RelativeMMECapacity_t *s1apRelativeMMECapacity_p = &s1ap_S1SetupResponseIEs->relativeMMECapacity; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_RelativeMMECapacity, (void **)&s1apRelativeMMECapacity_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apRelativeMMECapacity failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupResponse, s1ap_S1SetupResponse_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_MMERelaySupportIndicator: { S1ap_MMERelaySupportIndicator_t *s1apMMERelaySupportIndicator_p = &s1ap_S1SetupResponseIEs->mmeRelaySupportIndicator; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MMERelaySupportIndicator, (void **)&s1apMMERelaySupportIndicator_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMERelaySupportIndicator failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupResponse, s1ap_S1SetupResponse_p); return -1; } s1ap_S1SetupResponseIEs->presenceMask |= S1AP_S1SETUPRESPONSEIES_MMERELAYSUPPORTINDICATOR_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_S1SetupResponseIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupResponse, s1ap_S1SetupResponse_p); return -1; } s1ap_S1SetupResponseIEs->presenceMask |= S1AP_S1SETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_s1setupresponseies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupResponse, s1ap_S1SetupResponse_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupResponse, s1ap_S1SetupResponse_p); return 0; } int s1ap_decode_s1ap_pagingies( S1ap_PagingIEs_t *s1ap_PagingIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_Paging_t s1ap_Paging; S1ap_Paging_t *s1ap_Paging_p = &s1ap_Paging; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_PagingIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_PagingIEs\n"); memset(&s1ap_Paging, 0, sizeof(S1ap_Paging_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Paging, (void **)&s1ap_Paging_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_Paging failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Paging, s1ap_Paging_p); return -1; } for (i = 0; i < s1ap_Paging_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_Paging_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_UEIdentityIndexValue: { S1ap_UEIdentityIndexValue_t *s1apUEIdentityIndexValue_p = &s1ap_PagingIEs->ueIdentityIndexValue; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEIdentityIndexValue, (void **)&s1apUEIdentityIndexValue_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUEIdentityIndexValue failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Paging, s1ap_Paging_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_UEPagingID: { S1ap_UEPagingID_t *s1apUEPagingID_p = &s1ap_PagingIEs->uePagingID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEPagingID, (void **)&s1apUEPagingID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUEPagingID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Paging, s1ap_Paging_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_pagingDRX: { S1ap_PagingDRX_t *s1apPagingDRX_p = &s1ap_PagingIEs->pagingDRX; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_PagingDRX, (void **)&s1apPagingDRX_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apPagingDRX failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Paging, s1ap_Paging_p); return -1; } s1ap_PagingIEs->presenceMask |= S1AP_PAGINGIES_PAGINGDRX_PRESENT; } break; case S1ap_ProtocolIE_ID_id_CNDomain: { S1ap_CNDomain_t *s1apCNDomain_p = &s1ap_PagingIEs->cnDomain; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CNDomain, (void **)&s1apCNDomain_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCNDomain failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Paging, s1ap_Paging_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_TAIList: { S1ap_TAIList_t *s1apTAIList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TAIList, (void**)&s1apTAIList_p); if (s1ap_decode_s1ap_tailist(&s1ap_PagingIEs->taiList, s1apTAIList_p) < 0) { d_error("Decoding of encapsulated IE s1apTAIList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_TAIList, s1apTAIList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Paging, s1ap_Paging_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_TAIList, s1apTAIList_p); } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CSG_IdList: { S1ap_CSG_IdList_t *s1apCSGIdList_p = &s1ap_PagingIEs->csG_IdList; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CSG_IdList, (void **)&s1apCSGIdList_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCSGIdList failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Paging, s1ap_Paging_p); return -1; } s1ap_PagingIEs->presenceMask |= S1AP_PAGINGIES_CSG_IDLIST_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_PagingPriority: { S1ap_PagingPriority_t *s1apPagingPriority_p = &s1ap_PagingIEs->pagingPriority; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_PagingPriority, (void **)&s1apPagingPriority_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apPagingPriority failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Paging, s1ap_Paging_p); return -1; } s1ap_PagingIEs->presenceMask |= S1AP_PAGINGIES_PAGINGPRIORITY_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_pagingies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Paging, s1ap_Paging_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Paging, s1ap_Paging_p); return 0; } int s1ap_decode_s1ap_enbconfigurationupdateacknowledgeies( S1ap_ENBConfigurationUpdateAcknowledgeIEs_t *s1ap_ENBConfigurationUpdateAcknowledgeIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_ENBConfigurationUpdateAcknowledge_t s1ap_ENBConfigurationUpdateAcknowledge; S1ap_ENBConfigurationUpdateAcknowledge_t *s1ap_ENBConfigurationUpdateAcknowledge_p = &s1ap_ENBConfigurationUpdateAcknowledge; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_ENBConfigurationUpdateAcknowledgeIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_ENBConfigurationUpdateAcknowledgeIEs\n"); memset(&s1ap_ENBConfigurationUpdateAcknowledge, 0, sizeof(S1ap_ENBConfigurationUpdateAcknowledge_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENBConfigurationUpdateAcknowledge, (void **)&s1ap_ENBConfigurationUpdateAcknowledge_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_ENBConfigurationUpdateAcknowledge failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdateAcknowledge, s1ap_ENBConfigurationUpdateAcknowledge_p); return -1; } for (i = 0; i < s1ap_ENBConfigurationUpdateAcknowledge_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_ENBConfigurationUpdateAcknowledge_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_ENBConfigurationUpdateAcknowledgeIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdateAcknowledge, s1ap_ENBConfigurationUpdateAcknowledge_p); return -1; } s1ap_ENBConfigurationUpdateAcknowledgeIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_enbconfigurationupdateacknowledgeies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdateAcknowledge, s1ap_ENBConfigurationUpdateAcknowledge_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdateAcknowledge, s1ap_ENBConfigurationUpdateAcknowledge_p); return 0; } int s1ap_decode_s1ap_e_rabreleasecommandies( S1ap_E_RABReleaseCommandIEs_t *s1ap_E_RABReleaseCommandIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_E_RABReleaseCommand_t s1ap_E_RABReleaseCommand; S1ap_E_RABReleaseCommand_t *s1ap_E_RABReleaseCommand_p = &s1ap_E_RABReleaseCommand; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_E_RABReleaseCommandIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_E_RABReleaseCommandIEs\n"); memset(&s1ap_E_RABReleaseCommand, 0, sizeof(S1ap_E_RABReleaseCommand_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_E_RABReleaseCommand, (void **)&s1ap_E_RABReleaseCommand_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_E_RABReleaseCommand failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseCommand, s1ap_E_RABReleaseCommand_p); return -1; } for (i = 0; i < s1ap_E_RABReleaseCommand_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_E_RABReleaseCommand_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_E_RABReleaseCommandIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseCommand, s1ap_E_RABReleaseCommand_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_E_RABReleaseCommandIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseCommand, s1ap_E_RABReleaseCommand_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: { S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = &s1ap_E_RABReleaseCommandIEs->uEaggregateMaximumBitrate; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void **)&s1apUEAggregateMaximumBitrate_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUEAggregateMaximumBitrate failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseCommand, s1ap_E_RABReleaseCommand_p); return -1; } s1ap_E_RABReleaseCommandIEs->presenceMask |= S1AP_E_RABRELEASECOMMANDIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT; } break; case S1ap_ProtocolIE_ID_id_E_RABToBeReleasedList: { S1ap_E_RABList_t *s1apERABList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); if (s1ap_decode_s1ap_e_rablist(&s1ap_E_RABReleaseCommandIEs->e_RABToBeReleasedList, s1apERABList_p) < 0) { d_error("Decoding of encapsulated IE s1apERABList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseCommand, s1ap_E_RABReleaseCommand_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_NAS_PDU: { S1ap_NAS_PDU_t *s1apNASPDU_p = &s1ap_E_RABReleaseCommandIEs->nas_pdu; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_NAS_PDU, (void **)&s1apNASPDU_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apNASPDU failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseCommand, s1ap_E_RABReleaseCommand_p); return -1; } s1ap_E_RABReleaseCommandIEs->presenceMask |= S1AP_E_RABRELEASECOMMANDIES_NAS_PDU_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_e_rabreleasecommandies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseCommand, s1ap_E_RABReleaseCommand_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseCommand, s1ap_E_RABReleaseCommand_p); return 0; } int s1ap_decode_s1ap_pathswitchrequestfailureies( S1ap_PathSwitchRequestFailureIEs_t *s1ap_PathSwitchRequestFailureIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_PathSwitchRequestFailure_t s1ap_PathSwitchRequestFailure; S1ap_PathSwitchRequestFailure_t *s1ap_PathSwitchRequestFailure_p = &s1ap_PathSwitchRequestFailure; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_PathSwitchRequestFailureIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_PathSwitchRequestFailureIEs\n"); memset(&s1ap_PathSwitchRequestFailure, 0, sizeof(S1ap_PathSwitchRequestFailure_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_PathSwitchRequestFailure, (void **)&s1ap_PathSwitchRequestFailure_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_PathSwitchRequestFailure failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestFailure, s1ap_PathSwitchRequestFailure_p); return -1; } for (i = 0; i < s1ap_PathSwitchRequestFailure_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_PathSwitchRequestFailure_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_PathSwitchRequestFailureIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestFailure, s1ap_PathSwitchRequestFailure_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_PathSwitchRequestFailureIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestFailure, s1ap_PathSwitchRequestFailure_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_PathSwitchRequestFailureIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestFailure, s1ap_PathSwitchRequestFailure_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_PathSwitchRequestFailureIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestFailure, s1ap_PathSwitchRequestFailure_p); return -1; } s1ap_PathSwitchRequestFailureIEs->presenceMask |= S1AP_PATHSWITCHREQUESTFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_pathswitchrequestfailureies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestFailure, s1ap_PathSwitchRequestFailure_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestFailure, s1ap_PathSwitchRequestFailure_p); return 0; } int s1ap_decode_s1ap_e_rabmodifyresponseies( S1ap_E_RABModifyResponseIEs_t *s1ap_E_RABModifyResponseIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_E_RABModifyResponse_t s1ap_E_RABModifyResponse; S1ap_E_RABModifyResponse_t *s1ap_E_RABModifyResponse_p = &s1ap_E_RABModifyResponse; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_E_RABModifyResponseIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_E_RABModifyResponseIEs\n"); memset(&s1ap_E_RABModifyResponse, 0, sizeof(S1ap_E_RABModifyResponse_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_E_RABModifyResponse, (void **)&s1ap_E_RABModifyResponse_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_E_RABModifyResponse failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyResponse, s1ap_E_RABModifyResponse_p); return -1; } for (i = 0; i < s1ap_E_RABModifyResponse_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_E_RABModifyResponse_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_E_RABModifyResponseIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyResponse, s1ap_E_RABModifyResponse_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_E_RABModifyResponseIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyResponse, s1ap_E_RABModifyResponse_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_E_RABModifyListBearerModRes: { S1ap_E_RABModifyListBearerModRes_t *s1apERABModifyListBearerModRes_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABModifyListBearerModRes, (void**)&s1apERABModifyListBearerModRes_p); if (s1ap_decode_s1ap_e_rabmodifylistbearermodres(&s1ap_E_RABModifyResponseIEs->e_RABModifyListBearerModRes, s1apERABModifyListBearerModRes_p) < 0) { d_error("Decoding of encapsulated IE s1apERABModifyListBearerModRes failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABModifyListBearerModRes, s1apERABModifyListBearerModRes_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyResponse, s1ap_E_RABModifyResponse_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABModifyListBearerModRes, s1apERABModifyListBearerModRes_p); s1ap_E_RABModifyResponseIEs->presenceMask |= S1AP_E_RABMODIFYRESPONSEIES_E_RABMODIFYLISTBEARERMODRES_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_E_RABFailedToModifyList: { S1ap_E_RABList_t *s1apERABList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); if (s1ap_decode_s1ap_e_rablist(&s1ap_E_RABModifyResponseIEs->e_RABFailedToModifyList, s1apERABList_p) < 0) { d_error("Decoding of encapsulated IE s1apERABList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyResponse, s1ap_E_RABModifyResponse_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); s1ap_E_RABModifyResponseIEs->presenceMask |= S1AP_E_RABMODIFYRESPONSEIES_E_RABFAILEDTOMODIFYLIST_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_E_RABModifyResponseIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyResponse, s1ap_E_RABModifyResponse_p); return -1; } s1ap_E_RABModifyResponseIEs->presenceMask |= S1AP_E_RABMODIFYRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_e_rabmodifyresponseies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyResponse, s1ap_E_RABModifyResponse_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABModifyResponse, s1ap_E_RABModifyResponse_p); return 0; } int s1ap_decode_s1ap_handovernotifyies( S1ap_HandoverNotifyIEs_t *s1ap_HandoverNotifyIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_HandoverNotify_t s1ap_HandoverNotify; S1ap_HandoverNotify_t *s1ap_HandoverNotify_p = &s1ap_HandoverNotify; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_HandoverNotifyIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_HandoverNotifyIEs\n"); memset(&s1ap_HandoverNotify, 0, sizeof(S1ap_HandoverNotify_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverNotify, (void **)&s1ap_HandoverNotify_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_HandoverNotify failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverNotify, s1ap_HandoverNotify_p); return -1; } for (i = 0; i < s1ap_HandoverNotify_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_HandoverNotify_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_HandoverNotifyIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverNotify, s1ap_HandoverNotify_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_HandoverNotifyIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverNotify, s1ap_HandoverNotify_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_EUTRAN_CGI: { S1ap_EUTRAN_CGI_t *s1apEUTRANCGI_p = &s1ap_HandoverNotifyIEs->eutran_cgi; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_EUTRAN_CGI, (void **)&s1apEUTRANCGI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apEUTRANCGI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverNotify, s1ap_HandoverNotify_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_TAI: { S1ap_TAI_t *s1apTAI_p = &s1ap_HandoverNotifyIEs->tai; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TAI, (void **)&s1apTAI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTAI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverNotify, s1ap_HandoverNotify_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_handovernotifyies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverNotify, s1ap_HandoverNotify_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverNotify, s1ap_HandoverNotify_p); return 0; } int s1ap_decode_s1ap_handovercancelacknowledgeies( S1ap_HandoverCancelAcknowledgeIEs_t *s1ap_HandoverCancelAcknowledgeIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_HandoverCancelAcknowledge_t s1ap_HandoverCancelAcknowledge; S1ap_HandoverCancelAcknowledge_t *s1ap_HandoverCancelAcknowledge_p = &s1ap_HandoverCancelAcknowledge; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_HandoverCancelAcknowledgeIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_HandoverCancelAcknowledgeIEs\n"); memset(&s1ap_HandoverCancelAcknowledge, 0, sizeof(S1ap_HandoverCancelAcknowledge_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverCancelAcknowledge, (void **)&s1ap_HandoverCancelAcknowledge_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_HandoverCancelAcknowledge failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCancelAcknowledge, s1ap_HandoverCancelAcknowledge_p); return -1; } for (i = 0; i < s1ap_HandoverCancelAcknowledge_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_HandoverCancelAcknowledge_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_HandoverCancelAcknowledgeIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCancelAcknowledge, s1ap_HandoverCancelAcknowledge_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_HandoverCancelAcknowledgeIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCancelAcknowledge, s1ap_HandoverCancelAcknowledge_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_HandoverCancelAcknowledgeIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCancelAcknowledge, s1ap_HandoverCancelAcknowledge_p); return -1; } s1ap_HandoverCancelAcknowledgeIEs->presenceMask |= S1AP_HANDOVERCANCELACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_handovercancelacknowledgeies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCancelAcknowledge, s1ap_HandoverCancelAcknowledge_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCancelAcknowledge, s1ap_HandoverCancelAcknowledge_p); return 0; } int s1ap_decode_s1ap_initialcontextsetupfailureies( S1ap_InitialContextSetupFailureIEs_t *s1ap_InitialContextSetupFailureIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_InitialContextSetupFailure_t s1ap_InitialContextSetupFailure; S1ap_InitialContextSetupFailure_t *s1ap_InitialContextSetupFailure_p = &s1ap_InitialContextSetupFailure; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_InitialContextSetupFailureIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_InitialContextSetupFailureIEs\n"); memset(&s1ap_InitialContextSetupFailure, 0, sizeof(S1ap_InitialContextSetupFailure_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_InitialContextSetupFailure, (void **)&s1ap_InitialContextSetupFailure_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_InitialContextSetupFailure failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupFailure, s1ap_InitialContextSetupFailure_p); return -1; } for (i = 0; i < s1ap_InitialContextSetupFailure_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_InitialContextSetupFailure_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_InitialContextSetupFailureIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupFailure, s1ap_InitialContextSetupFailure_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_InitialContextSetupFailureIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupFailure, s1ap_InitialContextSetupFailure_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_InitialContextSetupFailureIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupFailure, s1ap_InitialContextSetupFailure_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_InitialContextSetupFailureIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupFailure, s1ap_InitialContextSetupFailure_p); return -1; } s1ap_InitialContextSetupFailureIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_initialcontextsetupfailureies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupFailure, s1ap_InitialContextSetupFailure_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupFailure, s1ap_InitialContextSetupFailure_p); return 0; } int s1ap_decode_s1ap_handovercommandies( S1ap_HandoverCommandIEs_t *s1ap_HandoverCommandIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_HandoverCommand_t s1ap_HandoverCommand; S1ap_HandoverCommand_t *s1ap_HandoverCommand_p = &s1ap_HandoverCommand; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_HandoverCommandIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_HandoverCommandIEs\n"); memset(&s1ap_HandoverCommand, 0, sizeof(S1ap_HandoverCommand_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverCommand, (void **)&s1ap_HandoverCommand_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_HandoverCommand failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCommand, s1ap_HandoverCommand_p); return -1; } for (i = 0; i < s1ap_HandoverCommand_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_HandoverCommand_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_HandoverCommandIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCommand, s1ap_HandoverCommand_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_HandoverCommandIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCommand, s1ap_HandoverCommand_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_HandoverType: { S1ap_HandoverType_t *s1apHandoverType_p = &s1ap_HandoverCommandIEs->handoverType; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverType, (void **)&s1apHandoverType_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apHandoverType failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCommand, s1ap_HandoverCommand_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_E_RABDataForwardingList: { S1ap_E_RABDataForwardingList_t *s1apERABDataForwardingList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABDataForwardingList, (void**)&s1apERABDataForwardingList_p); if (s1ap_decode_s1ap_e_rabdataforwardinglist(&s1ap_HandoverCommandIEs->e_RABDataForwardingList, s1apERABDataForwardingList_p) < 0) { d_error("Decoding of encapsulated IE s1apERABDataForwardingList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABDataForwardingList, s1apERABDataForwardingList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCommand, s1ap_HandoverCommand_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABDataForwardingList, s1apERABDataForwardingList_p); s1ap_HandoverCommandIEs->presenceMask |= S1AP_HANDOVERCOMMANDIES_E_RABDATAFORWARDINGLIST_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_E_RABtoReleaseListHOCmd: { S1ap_E_RABList_t *s1apERABList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); if (s1ap_decode_s1ap_e_rablist(&s1ap_HandoverCommandIEs->e_RABtoReleaseListHOCmd, s1apERABList_p) < 0) { d_error("Decoding of encapsulated IE s1apERABList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCommand, s1ap_HandoverCommand_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); s1ap_HandoverCommandIEs->presenceMask |= S1AP_HANDOVERCOMMANDIES_E_RABTORELEASELISTHOCMD_PRESENT; } break; case S1ap_ProtocolIE_ID_id_Target_ToSource_TransparentContainer: { S1ap_Target_ToSource_TransparentContainer_t *s1apTargetToSourceTransparentContainer_p = &s1ap_HandoverCommandIEs->target_ToSource_TransparentContainer; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Target_ToSource_TransparentContainer, (void **)&s1apTargetToSourceTransparentContainer_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTargetToSourceTransparentContainer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCommand, s1ap_HandoverCommand_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_Target_ToSource_TransparentContainer_Secondary: { S1ap_Target_ToSource_TransparentContainer_t *s1apTargetToSourceTransparentContainer_p = &s1ap_HandoverCommandIEs->target_ToSource_TransparentContainer_Secondary; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Target_ToSource_TransparentContainer, (void **)&s1apTargetToSourceTransparentContainer_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTargetToSourceTransparentContainer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCommand, s1ap_HandoverCommand_p); return -1; } s1ap_HandoverCommandIEs->presenceMask |= S1AP_HANDOVERCOMMANDIES_TARGET_TOSOURCE_TRANSPARENTCONTAINER_SECONDARY_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_HandoverCommandIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCommand, s1ap_HandoverCommand_p); return -1; } s1ap_HandoverCommandIEs->presenceMask |= S1AP_HANDOVERCOMMANDIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_handovercommandies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCommand, s1ap_HandoverCommand_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverCommand, s1ap_HandoverCommand_p); return 0; } int s1ap_decode_s1ap_mmedirectinformationtransferies( S1ap_MMEDirectInformationTransferIEs_t *s1ap_MMEDirectInformationTransferIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_MMEDirectInformationTransfer_t s1ap_MMEDirectInformationTransfer; S1ap_MMEDirectInformationTransfer_t *s1ap_MMEDirectInformationTransfer_p = &s1ap_MMEDirectInformationTransfer; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_MMEDirectInformationTransferIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_MMEDirectInformationTransferIEs\n"); memset(&s1ap_MMEDirectInformationTransfer, 0, sizeof(S1ap_MMEDirectInformationTransfer_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MMEDirectInformationTransfer, (void **)&s1ap_MMEDirectInformationTransfer_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_MMEDirectInformationTransfer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEDirectInformationTransfer, s1ap_MMEDirectInformationTransfer_p); return -1; } for (i = 0; i < s1ap_MMEDirectInformationTransfer_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_MMEDirectInformationTransfer_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_Inter_SystemInformationTransferTypeMDT: { S1ap_Inter_SystemInformationTransferType_t *s1apInterSystemInformationTransferType_p = &s1ap_MMEDirectInformationTransferIEs->inter_SystemInformationTransferTypeMDT; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Inter_SystemInformationTransferType, (void **)&s1apInterSystemInformationTransferType_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apInterSystemInformationTransferType failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEDirectInformationTransfer, s1ap_MMEDirectInformationTransfer_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_mmedirectinformationtransferies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEDirectInformationTransfer, s1ap_MMEDirectInformationTransfer_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEDirectInformationTransfer, s1ap_MMEDirectInformationTransfer_p); return 0; } int s1ap_decode_s1ap_errorindicationies( S1ap_ErrorIndicationIEs_t *s1ap_ErrorIndicationIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_ErrorIndication_t s1ap_ErrorIndication; S1ap_ErrorIndication_t *s1ap_ErrorIndication_p = &s1ap_ErrorIndication; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_ErrorIndicationIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_ErrorIndicationIEs\n"); memset(&s1ap_ErrorIndication, 0, sizeof(S1ap_ErrorIndication_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ErrorIndication, (void **)&s1ap_ErrorIndication_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_ErrorIndication failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ErrorIndication, s1ap_ErrorIndication_p); return -1; } for (i = 0; i < s1ap_ErrorIndication_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_ErrorIndication_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { /* Optional field */ case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_ErrorIndicationIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ErrorIndication, s1ap_ErrorIndication_p); return -1; } s1ap_ErrorIndicationIEs->presenceMask |= S1AP_ERRORINDICATIONIES_MME_UE_S1AP_ID_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_ErrorIndicationIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ErrorIndication, s1ap_ErrorIndication_p); return -1; } s1ap_ErrorIndicationIEs->presenceMask |= S1AP_ERRORINDICATIONIES_ENB_UE_S1AP_ID_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_ErrorIndicationIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ErrorIndication, s1ap_ErrorIndication_p); return -1; } s1ap_ErrorIndicationIEs->presenceMask |= S1AP_ERRORINDICATIONIES_CAUSE_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_ErrorIndicationIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ErrorIndication, s1ap_ErrorIndication_p); return -1; } s1ap_ErrorIndicationIEs->presenceMask |= S1AP_ERRORINDICATIONIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_errorindicationies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ErrorIndication, s1ap_ErrorIndication_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ErrorIndication, s1ap_ErrorIndication_p); return 0; } int s1ap_decode_s1ap_overloadstarties( S1ap_OverloadStartIEs_t *s1ap_OverloadStartIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_OverloadStart_t s1ap_OverloadStart; S1ap_OverloadStart_t *s1ap_OverloadStart_p = &s1ap_OverloadStart; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_OverloadStartIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_OverloadStartIEs\n"); memset(&s1ap_OverloadStart, 0, sizeof(S1ap_OverloadStart_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_OverloadStart, (void **)&s1ap_OverloadStart_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_OverloadStart failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_OverloadStart, s1ap_OverloadStart_p); return -1; } for (i = 0; i < s1ap_OverloadStart_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_OverloadStart_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_OverloadResponse: { S1ap_OverloadResponse_t *s1apOverloadResponse_p = &s1ap_OverloadStartIEs->overloadResponse; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_OverloadResponse, (void **)&s1apOverloadResponse_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apOverloadResponse failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_OverloadStart, s1ap_OverloadStart_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_GUMMEIList: { S1ap_GUMMEIList_t *s1apGUMMEIList_p = &s1ap_OverloadStartIEs->gummeiList; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_GUMMEIList, (void **)&s1apGUMMEIList_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apGUMMEIList failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_OverloadStart, s1ap_OverloadStart_p); return -1; } s1ap_OverloadStartIEs->presenceMask |= S1AP_OVERLOADSTARTIES_GUMMEILIST_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_TrafficLoadReductionIndication: { S1ap_TrafficLoadReductionIndication_t *s1apTrafficLoadReductionIndication_p = &s1ap_OverloadStartIEs->trafficLoadReductionIndication; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TrafficLoadReductionIndication, (void **)&s1apTrafficLoadReductionIndication_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTrafficLoadReductionIndication failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_OverloadStart, s1ap_OverloadStart_p); return -1; } s1ap_OverloadStartIEs->presenceMask |= S1AP_OVERLOADSTARTIES_TRAFFICLOADREDUCTIONINDICATION_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_overloadstarties", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_OverloadStart, s1ap_OverloadStart_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_OverloadStart, s1ap_OverloadStart_p); return 0; } int s1ap_decode_s1ap_downlinknonueassociatedlppatransport_ies( S1ap_DownlinkNonUEAssociatedLPPaTransport_IEs_t *s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_DownlinkNonUEAssociatedLPPaTransport_t s1ap_DownlinkNonUEAssociatedLPPaTransport; S1ap_DownlinkNonUEAssociatedLPPaTransport_t *s1ap_DownlinkNonUEAssociatedLPPaTransport_p = &s1ap_DownlinkNonUEAssociatedLPPaTransport; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_DownlinkNonUEAssociatedLPPaTransport_IEs\n"); memset(&s1ap_DownlinkNonUEAssociatedLPPaTransport, 0, sizeof(S1ap_DownlinkNonUEAssociatedLPPaTransport_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_DownlinkNonUEAssociatedLPPaTransport, (void **)&s1ap_DownlinkNonUEAssociatedLPPaTransport_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_DownlinkNonUEAssociatedLPPaTransport failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkNonUEAssociatedLPPaTransport, s1ap_DownlinkNonUEAssociatedLPPaTransport_p); return -1; } for (i = 0; i < s1ap_DownlinkNonUEAssociatedLPPaTransport_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_DownlinkNonUEAssociatedLPPaTransport_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_Routing_ID: { S1ap_Routing_ID_t *s1apRoutingID_p = &s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs->routing_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Routing_ID, (void **)&s1apRoutingID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apRoutingID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkNonUEAssociatedLPPaTransport, s1ap_DownlinkNonUEAssociatedLPPaTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_LPPa_PDU: { S1ap_LPPa_PDU_t *s1apLPPaPDU_p = &s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs->lpPa_PDU; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_LPPa_PDU, (void **)&s1apLPPaPDU_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apLPPaPDU failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkNonUEAssociatedLPPaTransport, s1ap_DownlinkNonUEAssociatedLPPaTransport_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_downlinknonueassociatedlppatransport_ies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkNonUEAssociatedLPPaTransport, s1ap_DownlinkNonUEAssociatedLPPaTransport_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkNonUEAssociatedLPPaTransport, s1ap_DownlinkNonUEAssociatedLPPaTransport_p); return 0; } int s1ap_decode_s1ap_handoverrequestacknowledgeies( S1ap_HandoverRequestAcknowledgeIEs_t *s1ap_HandoverRequestAcknowledgeIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_HandoverRequestAcknowledge_t s1ap_HandoverRequestAcknowledge; S1ap_HandoverRequestAcknowledge_t *s1ap_HandoverRequestAcknowledge_p = &s1ap_HandoverRequestAcknowledge; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_HandoverRequestAcknowledgeIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_HandoverRequestAcknowledgeIEs\n"); memset(&s1ap_HandoverRequestAcknowledge, 0, sizeof(S1ap_HandoverRequestAcknowledge_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverRequestAcknowledge, (void **)&s1ap_HandoverRequestAcknowledge_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_HandoverRequestAcknowledge failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequestAcknowledge, s1ap_HandoverRequestAcknowledge_p); return -1; } for (i = 0; i < s1ap_HandoverRequestAcknowledge_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_HandoverRequestAcknowledge_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_HandoverRequestAcknowledgeIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequestAcknowledge, s1ap_HandoverRequestAcknowledge_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_HandoverRequestAcknowledgeIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequestAcknowledge, s1ap_HandoverRequestAcknowledge_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_E_RABAdmittedList: { S1ap_E_RABAdmittedList_t *s1apERABAdmittedList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABAdmittedList, (void**)&s1apERABAdmittedList_p); if (s1ap_decode_s1ap_e_rabadmittedlist(&s1ap_HandoverRequestAcknowledgeIEs->e_RABAdmittedList, s1apERABAdmittedList_p) < 0) { d_error("Decoding of encapsulated IE s1apERABAdmittedList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABAdmittedList, s1apERABAdmittedList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequestAcknowledge, s1ap_HandoverRequestAcknowledge_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABAdmittedList, s1apERABAdmittedList_p); } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_E_RABFailedToSetupListHOReqAck: { S1ap_E_RABFailedtoSetupListHOReqAck_t *s1apERABFailedtoSetupListHOReqAck_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABFailedtoSetupListHOReqAck, (void**)&s1apERABFailedtoSetupListHOReqAck_p); if (s1ap_decode_s1ap_e_rabfailedtosetuplisthoreqack(&s1ap_HandoverRequestAcknowledgeIEs->e_RABFailedToSetupListHOReqAck, s1apERABFailedtoSetupListHOReqAck_p) < 0) { d_error("Decoding of encapsulated IE s1apERABFailedtoSetupListHOReqAck failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABFailedtoSetupListHOReqAck, s1apERABFailedtoSetupListHOReqAck_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequestAcknowledge, s1ap_HandoverRequestAcknowledge_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABFailedtoSetupListHOReqAck, s1apERABFailedtoSetupListHOReqAck_p); s1ap_HandoverRequestAcknowledgeIEs->presenceMask |= S1AP_HANDOVERREQUESTACKNOWLEDGEIES_E_RABFAILEDTOSETUPLISTHOREQACK_PRESENT; } break; case S1ap_ProtocolIE_ID_id_Target_ToSource_TransparentContainer: { S1ap_Target_ToSource_TransparentContainer_t *s1apTargetToSourceTransparentContainer_p = &s1ap_HandoverRequestAcknowledgeIEs->target_ToSource_TransparentContainer; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Target_ToSource_TransparentContainer, (void **)&s1apTargetToSourceTransparentContainer_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTargetToSourceTransparentContainer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequestAcknowledge, s1ap_HandoverRequestAcknowledge_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CSG_Id: { S1ap_CSG_Id_t *s1apCSGId_p = &s1ap_HandoverRequestAcknowledgeIEs->csG_Id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CSG_Id, (void **)&s1apCSGId_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCSGId failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequestAcknowledge, s1ap_HandoverRequestAcknowledge_p); return -1; } s1ap_HandoverRequestAcknowledgeIEs->presenceMask |= S1AP_HANDOVERREQUESTACKNOWLEDGEIES_CSG_ID_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_HandoverRequestAcknowledgeIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequestAcknowledge, s1ap_HandoverRequestAcknowledge_p); return -1; } s1ap_HandoverRequestAcknowledgeIEs->presenceMask |= S1AP_HANDOVERREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_handoverrequestacknowledgeies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequestAcknowledge, s1ap_HandoverRequestAcknowledge_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverRequestAcknowledge, s1ap_HandoverRequestAcknowledge_p); return 0; } int s1ap_decode_s1ap_downlinkueassociatedlppatransport_ies( S1ap_DownlinkUEAssociatedLPPaTransport_IEs_t *s1ap_DownlinkUEAssociatedLPPaTransport_IEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_DownlinkUEAssociatedLPPaTransport_t s1ap_DownlinkUEAssociatedLPPaTransport; S1ap_DownlinkUEAssociatedLPPaTransport_t *s1ap_DownlinkUEAssociatedLPPaTransport_p = &s1ap_DownlinkUEAssociatedLPPaTransport; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_DownlinkUEAssociatedLPPaTransport_IEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_DownlinkUEAssociatedLPPaTransport_IEs\n"); memset(&s1ap_DownlinkUEAssociatedLPPaTransport, 0, sizeof(S1ap_DownlinkUEAssociatedLPPaTransport_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_DownlinkUEAssociatedLPPaTransport, (void **)&s1ap_DownlinkUEAssociatedLPPaTransport_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_DownlinkUEAssociatedLPPaTransport failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkUEAssociatedLPPaTransport, s1ap_DownlinkUEAssociatedLPPaTransport_p); return -1; } for (i = 0; i < s1ap_DownlinkUEAssociatedLPPaTransport_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_DownlinkUEAssociatedLPPaTransport_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_DownlinkUEAssociatedLPPaTransport_IEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkUEAssociatedLPPaTransport, s1ap_DownlinkUEAssociatedLPPaTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_DownlinkUEAssociatedLPPaTransport_IEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkUEAssociatedLPPaTransport, s1ap_DownlinkUEAssociatedLPPaTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Routing_ID: { S1ap_Routing_ID_t *s1apRoutingID_p = &s1ap_DownlinkUEAssociatedLPPaTransport_IEs->routing_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Routing_ID, (void **)&s1apRoutingID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apRoutingID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkUEAssociatedLPPaTransport, s1ap_DownlinkUEAssociatedLPPaTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_LPPa_PDU: { S1ap_LPPa_PDU_t *s1apLPPaPDU_p = &s1ap_DownlinkUEAssociatedLPPaTransport_IEs->lpPa_PDU; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_LPPa_PDU, (void **)&s1apLPPaPDU_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apLPPaPDU failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkUEAssociatedLPPaTransport, s1ap_DownlinkUEAssociatedLPPaTransport_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_downlinkueassociatedlppatransport_ies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkUEAssociatedLPPaTransport, s1ap_DownlinkUEAssociatedLPPaTransport_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkUEAssociatedLPPaTransport, s1ap_DownlinkUEAssociatedLPPaTransport_p); return 0; } int s1ap_decode_s1ap_uecontextmodificationfailureies( S1ap_UEContextModificationFailureIEs_t *s1ap_UEContextModificationFailureIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_UEContextModificationFailure_t s1ap_UEContextModificationFailure; S1ap_UEContextModificationFailure_t *s1ap_UEContextModificationFailure_p = &s1ap_UEContextModificationFailure; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_UEContextModificationFailureIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_UEContextModificationFailureIEs\n"); memset(&s1ap_UEContextModificationFailure, 0, sizeof(S1ap_UEContextModificationFailure_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEContextModificationFailure, (void **)&s1ap_UEContextModificationFailure_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_UEContextModificationFailure failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationFailure, s1ap_UEContextModificationFailure_p); return -1; } for (i = 0; i < s1ap_UEContextModificationFailure_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_UEContextModificationFailure_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_UEContextModificationFailureIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationFailure, s1ap_UEContextModificationFailure_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_UEContextModificationFailureIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationFailure, s1ap_UEContextModificationFailure_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_UEContextModificationFailureIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationFailure, s1ap_UEContextModificationFailure_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_UEContextModificationFailureIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationFailure, s1ap_UEContextModificationFailure_p); return -1; } s1ap_UEContextModificationFailureIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uecontextmodificationfailureies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationFailure, s1ap_UEContextModificationFailure_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextModificationFailure, s1ap_UEContextModificationFailure_p); return 0; } int s1ap_decode_s1ap_mmeconfigurationtransferies( S1ap_MMEConfigurationTransferIEs_t *s1ap_MMEConfigurationTransferIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_MMEConfigurationTransfer_t s1ap_MMEConfigurationTransfer; S1ap_MMEConfigurationTransfer_t *s1ap_MMEConfigurationTransfer_p = &s1ap_MMEConfigurationTransfer; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_MMEConfigurationTransferIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_MMEConfigurationTransferIEs\n"); memset(&s1ap_MMEConfigurationTransfer, 0, sizeof(S1ap_MMEConfigurationTransfer_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MMEConfigurationTransfer, (void **)&s1ap_MMEConfigurationTransfer_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_MMEConfigurationTransfer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationTransfer, s1ap_MMEConfigurationTransfer_p); return -1; } for (i = 0; i < s1ap_MMEConfigurationTransfer_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_MMEConfigurationTransfer_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { /* Optional field */ case S1ap_ProtocolIE_ID_id_SONConfigurationTransferMCT: { S1ap_SONConfigurationTransfer_t *s1apSONConfigurationTransfer_p = &s1ap_MMEConfigurationTransferIEs->sonConfigurationTransferMCT; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SONConfigurationTransfer, (void **)&s1apSONConfigurationTransfer_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSONConfigurationTransfer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationTransfer, s1ap_MMEConfigurationTransfer_p); return -1; } s1ap_MMEConfigurationTransferIEs->presenceMask |= S1AP_MMECONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFERMCT_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_mmeconfigurationtransferies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationTransfer, s1ap_MMEConfigurationTransfer_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationTransfer, s1ap_MMEConfigurationTransfer_p); return 0; } int s1ap_decode_s1ap_pathswitchrequestacknowledgeies( S1ap_PathSwitchRequestAcknowledgeIEs_t *s1ap_PathSwitchRequestAcknowledgeIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_PathSwitchRequestAcknowledge_t s1ap_PathSwitchRequestAcknowledge; S1ap_PathSwitchRequestAcknowledge_t *s1ap_PathSwitchRequestAcknowledge_p = &s1ap_PathSwitchRequestAcknowledge; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_PathSwitchRequestAcknowledgeIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_PathSwitchRequestAcknowledgeIEs\n"); memset(&s1ap_PathSwitchRequestAcknowledge, 0, sizeof(S1ap_PathSwitchRequestAcknowledge_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_PathSwitchRequestAcknowledge, (void **)&s1ap_PathSwitchRequestAcknowledge_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_PathSwitchRequestAcknowledge failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestAcknowledge, s1ap_PathSwitchRequestAcknowledge_p); return -1; } for (i = 0; i < s1ap_PathSwitchRequestAcknowledge_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_PathSwitchRequestAcknowledge_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_PathSwitchRequestAcknowledgeIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestAcknowledge, s1ap_PathSwitchRequestAcknowledge_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_PathSwitchRequestAcknowledgeIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestAcknowledge, s1ap_PathSwitchRequestAcknowledge_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: { S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = &s1ap_PathSwitchRequestAcknowledgeIEs->uEaggregateMaximumBitrate; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void **)&s1apUEAggregateMaximumBitrate_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUEAggregateMaximumBitrate failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestAcknowledge, s1ap_PathSwitchRequestAcknowledge_p); return -1; } s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask |= S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_E_RABToBeSwitchedULList: { S1ap_E_RABToBeSwitchedULList_t *s1apERABToBeSwitchedULList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSwitchedULList, (void**)&s1apERABToBeSwitchedULList_p); if (s1ap_decode_s1ap_e_rabtobeswitchedullist(&s1ap_PathSwitchRequestAcknowledgeIEs->e_RABToBeSwitchedULList, s1apERABToBeSwitchedULList_p) < 0) { d_error("Decoding of encapsulated IE s1apERABToBeSwitchedULList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSwitchedULList, s1apERABToBeSwitchedULList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestAcknowledge, s1ap_PathSwitchRequestAcknowledge_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSwitchedULList, s1apERABToBeSwitchedULList_p); s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask |= S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABTOBESWITCHEDULLIST_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_E_RABToBeReleasedList: { S1ap_E_RABList_t *s1apERABList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); if (s1ap_decode_s1ap_e_rablist(&s1ap_PathSwitchRequestAcknowledgeIEs->e_RABToBeReleasedList, s1apERABList_p) < 0) { d_error("Decoding of encapsulated IE s1apERABList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestAcknowledge, s1ap_PathSwitchRequestAcknowledge_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask |= S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABTOBERELEASEDLIST_PRESENT; } break; case S1ap_ProtocolIE_ID_id_SecurityContext: { S1ap_SecurityContext_t *s1apSecurityContext_p = &s1ap_PathSwitchRequestAcknowledgeIEs->securityContext; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SecurityContext, (void **)&s1apSecurityContext_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSecurityContext failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestAcknowledge, s1ap_PathSwitchRequestAcknowledge_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_PathSwitchRequestAcknowledgeIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestAcknowledge, s1ap_PathSwitchRequestAcknowledge_p); return -1; } s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask |= S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID_2: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_PathSwitchRequestAcknowledgeIEs->mme_ue_s1ap_id_2; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestAcknowledge, s1ap_PathSwitchRequestAcknowledge_p); return -1; } s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask |= S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_MME_UE_S1AP_ID_2_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_pathswitchrequestacknowledgeies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestAcknowledge, s1ap_PathSwitchRequestAcknowledge_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequestAcknowledge, s1ap_PathSwitchRequestAcknowledge_p); return 0; } int s1ap_decode_s1ap_s1setupfailureies( S1ap_S1SetupFailureIEs_t *s1ap_S1SetupFailureIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_S1SetupFailure_t s1ap_S1SetupFailure; S1ap_S1SetupFailure_t *s1ap_S1SetupFailure_p = &s1ap_S1SetupFailure; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_S1SetupFailureIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_S1SetupFailureIEs\n"); memset(&s1ap_S1SetupFailure, 0, sizeof(S1ap_S1SetupFailure_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_S1SetupFailure, (void **)&s1ap_S1SetupFailure_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_S1SetupFailure failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupFailure, s1ap_S1SetupFailure_p); return -1; } for (i = 0; i < s1ap_S1SetupFailure_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_S1SetupFailure_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_S1SetupFailureIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupFailure, s1ap_S1SetupFailure_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_TimeToWait: { S1ap_TimeToWait_t *s1apTimeToWait_p = &s1ap_S1SetupFailureIEs->timeToWait; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TimeToWait, (void **)&s1apTimeToWait_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTimeToWait failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupFailure, s1ap_S1SetupFailure_p); return -1; } s1ap_S1SetupFailureIEs->presenceMask |= S1AP_S1SETUPFAILUREIES_TIMETOWAIT_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_S1SetupFailureIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupFailure, s1ap_S1SetupFailure_p); return -1; } s1ap_S1SetupFailureIEs->presenceMask |= S1AP_S1SETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_s1setupfailureies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupFailure, s1ap_S1SetupFailure_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupFailure, s1ap_S1SetupFailure_p); return 0; } int s1ap_decode_s1ap_mmeconfigurationupdatefailureies( S1ap_MMEConfigurationUpdateFailureIEs_t *s1ap_MMEConfigurationUpdateFailureIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_MMEConfigurationUpdateFailure_t s1ap_MMEConfigurationUpdateFailure; S1ap_MMEConfigurationUpdateFailure_t *s1ap_MMEConfigurationUpdateFailure_p = &s1ap_MMEConfigurationUpdateFailure; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_MMEConfigurationUpdateFailureIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_MMEConfigurationUpdateFailureIEs\n"); memset(&s1ap_MMEConfigurationUpdateFailure, 0, sizeof(S1ap_MMEConfigurationUpdateFailure_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MMEConfigurationUpdateFailure, (void **)&s1ap_MMEConfigurationUpdateFailure_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_MMEConfigurationUpdateFailure failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdateFailure, s1ap_MMEConfigurationUpdateFailure_p); return -1; } for (i = 0; i < s1ap_MMEConfigurationUpdateFailure_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_MMEConfigurationUpdateFailure_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_MMEConfigurationUpdateFailureIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdateFailure, s1ap_MMEConfigurationUpdateFailure_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_TimeToWait: { S1ap_TimeToWait_t *s1apTimeToWait_p = &s1ap_MMEConfigurationUpdateFailureIEs->timeToWait; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TimeToWait, (void **)&s1apTimeToWait_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTimeToWait failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdateFailure, s1ap_MMEConfigurationUpdateFailure_p); return -1; } s1ap_MMEConfigurationUpdateFailureIEs->presenceMask |= S1AP_MMECONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_MMEConfigurationUpdateFailureIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdateFailure, s1ap_MMEConfigurationUpdateFailure_p); return -1; } s1ap_MMEConfigurationUpdateFailureIEs->presenceMask |= S1AP_MMECONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_mmeconfigurationupdatefailureies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdateFailure, s1ap_MMEConfigurationUpdateFailure_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_MMEConfigurationUpdateFailure, s1ap_MMEConfigurationUpdateFailure_p); return 0; } int s1ap_decode_s1ap_initialcontextsetupresponseies( S1ap_InitialContextSetupResponseIEs_t *s1ap_InitialContextSetupResponseIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_InitialContextSetupResponse_t s1ap_InitialContextSetupResponse; S1ap_InitialContextSetupResponse_t *s1ap_InitialContextSetupResponse_p = &s1ap_InitialContextSetupResponse; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_InitialContextSetupResponseIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_InitialContextSetupResponseIEs\n"); memset(&s1ap_InitialContextSetupResponse, 0, sizeof(S1ap_InitialContextSetupResponse_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_InitialContextSetupResponse, (void **)&s1ap_InitialContextSetupResponse_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_InitialContextSetupResponse failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupResponse, s1ap_InitialContextSetupResponse_p); return -1; } for (i = 0; i < s1ap_InitialContextSetupResponse_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_InitialContextSetupResponse_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_InitialContextSetupResponseIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupResponse, s1ap_InitialContextSetupResponse_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_InitialContextSetupResponseIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupResponse, s1ap_InitialContextSetupResponse_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_E_RABSetupListCtxtSURes: { S1ap_E_RABSetupListCtxtSURes_t *s1apERABSetupListCtxtSURes_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABSetupListCtxtSURes, (void**)&s1apERABSetupListCtxtSURes_p); if (s1ap_decode_s1ap_e_rabsetuplistctxtsures(&s1ap_InitialContextSetupResponseIEs->e_RABSetupListCtxtSURes, s1apERABSetupListCtxtSURes_p) < 0) { d_error("Decoding of encapsulated IE s1apERABSetupListCtxtSURes failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSetupListCtxtSURes, s1apERABSetupListCtxtSURes_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupResponse, s1ap_InitialContextSetupResponse_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSetupListCtxtSURes, s1apERABSetupListCtxtSURes_p); } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_E_RABFailedToSetupListCtxtSURes: { S1ap_E_RABList_t *s1apERABList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); if (s1ap_decode_s1ap_e_rablist(&s1ap_InitialContextSetupResponseIEs->e_RABFailedToSetupListCtxtSURes, s1apERABList_p) < 0) { d_error("Decoding of encapsulated IE s1apERABList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupResponse, s1ap_InitialContextSetupResponse_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); s1ap_InitialContextSetupResponseIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPRESPONSEIES_E_RABFAILEDTOSETUPLISTCTXTSURES_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_InitialContextSetupResponseIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupResponse, s1ap_InitialContextSetupResponse_p); return -1; } s1ap_InitialContextSetupResponseIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_initialcontextsetupresponseies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupResponse, s1ap_InitialContextSetupResponse_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_InitialContextSetupResponse, s1ap_InitialContextSetupResponse_p); return 0; } int s1ap_decode_s1ap_downlinks1cdma2000tunnelingies( S1ap_DownlinkS1cdma2000tunnelingIEs_t *s1ap_DownlinkS1cdma2000tunnelingIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_DownlinkS1cdma2000tunneling_t s1ap_DownlinkS1cdma2000tunneling; S1ap_DownlinkS1cdma2000tunneling_t *s1ap_DownlinkS1cdma2000tunneling_p = &s1ap_DownlinkS1cdma2000tunneling; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_DownlinkS1cdma2000tunnelingIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_DownlinkS1cdma2000tunnelingIEs\n"); memset(&s1ap_DownlinkS1cdma2000tunneling, 0, sizeof(S1ap_DownlinkS1cdma2000tunneling_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_DownlinkS1cdma2000tunneling, (void **)&s1ap_DownlinkS1cdma2000tunneling_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_DownlinkS1cdma2000tunneling failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkS1cdma2000tunneling, s1ap_DownlinkS1cdma2000tunneling_p); return -1; } for (i = 0; i < s1ap_DownlinkS1cdma2000tunneling_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_DownlinkS1cdma2000tunneling_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_DownlinkS1cdma2000tunnelingIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkS1cdma2000tunneling, s1ap_DownlinkS1cdma2000tunneling_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_DownlinkS1cdma2000tunnelingIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkS1cdma2000tunneling, s1ap_DownlinkS1cdma2000tunneling_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_E_RABDataForwardingList: { S1ap_E_RABDataForwardingList_t *s1apERABDataForwardingList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABDataForwardingList, (void**)&s1apERABDataForwardingList_p); if (s1ap_decode_s1ap_e_rabdataforwardinglist(&s1ap_DownlinkS1cdma2000tunnelingIEs->e_RABDataForwardingList, s1apERABDataForwardingList_p) < 0) { d_error("Decoding of encapsulated IE s1apERABDataForwardingList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABDataForwardingList, s1apERABDataForwardingList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkS1cdma2000tunneling, s1ap_DownlinkS1cdma2000tunneling_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABDataForwardingList, s1apERABDataForwardingList_p); s1ap_DownlinkS1cdma2000tunnelingIEs->presenceMask |= S1AP_DOWNLINKS1CDMA2000TUNNELINGIES_E_RABDATAFORWARDINGLIST_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_cdma2000HOStatus: { S1ap_Cdma2000HOStatus_t *s1apCdma2000HOStatus_p = &s1ap_DownlinkS1cdma2000tunnelingIEs->cdma2000HOStatus; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cdma2000HOStatus, (void **)&s1apCdma2000HOStatus_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCdma2000HOStatus failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkS1cdma2000tunneling, s1ap_DownlinkS1cdma2000tunneling_p); return -1; } s1ap_DownlinkS1cdma2000tunnelingIEs->presenceMask |= S1AP_DOWNLINKS1CDMA2000TUNNELINGIES_CDMA2000HOSTATUS_PRESENT; } break; case S1ap_ProtocolIE_ID_id_cdma2000RATType: { S1ap_Cdma2000RATType_t *s1apCdma2000RATType_p = &s1ap_DownlinkS1cdma2000tunnelingIEs->cdma2000RATType; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cdma2000RATType, (void **)&s1apCdma2000RATType_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCdma2000RATType failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkS1cdma2000tunneling, s1ap_DownlinkS1cdma2000tunneling_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_cdma2000PDU: { S1ap_Cdma2000PDU_t *s1apCdma2000PDU_p = &s1ap_DownlinkS1cdma2000tunnelingIEs->cdma2000PDU; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cdma2000PDU, (void **)&s1apCdma2000PDU_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCdma2000PDU failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkS1cdma2000tunneling, s1ap_DownlinkS1cdma2000tunneling_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_downlinks1cdma2000tunnelingies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkS1cdma2000tunneling, s1ap_DownlinkS1cdma2000tunneling_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkS1cdma2000tunneling, s1ap_DownlinkS1cdma2000tunneling_p); return 0; } int s1ap_decode_s1ap_overloadstopies( S1ap_OverloadStopIEs_t *s1ap_OverloadStopIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_OverloadStop_t s1ap_OverloadStop; S1ap_OverloadStop_t *s1ap_OverloadStop_p = &s1ap_OverloadStop; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_OverloadStopIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_OverloadStopIEs\n"); memset(&s1ap_OverloadStop, 0, sizeof(S1ap_OverloadStop_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_OverloadStop, (void **)&s1ap_OverloadStop_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_OverloadStop failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_OverloadStop, s1ap_OverloadStop_p); return -1; } for (i = 0; i < s1ap_OverloadStop_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_OverloadStop_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { /* Optional field */ case S1ap_ProtocolIE_ID_id_GUMMEIList: { S1ap_GUMMEIList_t *s1apGUMMEIList_p = &s1ap_OverloadStopIEs->gummeiList; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_GUMMEIList, (void **)&s1apGUMMEIList_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apGUMMEIList failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_OverloadStop, s1ap_OverloadStop_p); return -1; } s1ap_OverloadStopIEs->presenceMask |= S1AP_OVERLOADSTOPIES_GUMMEILIST_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_overloadstopies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_OverloadStop, s1ap_OverloadStop_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_OverloadStop, s1ap_OverloadStop_p); return 0; } int s1ap_decode_s1ap_enbconfigurationupdateies( S1ap_ENBConfigurationUpdateIEs_t *s1ap_ENBConfigurationUpdateIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_ENBConfigurationUpdate_t s1ap_ENBConfigurationUpdate; S1ap_ENBConfigurationUpdate_t *s1ap_ENBConfigurationUpdate_p = &s1ap_ENBConfigurationUpdate; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_ENBConfigurationUpdateIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_ENBConfigurationUpdateIEs\n"); memset(&s1ap_ENBConfigurationUpdate, 0, sizeof(S1ap_ENBConfigurationUpdate_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENBConfigurationUpdate, (void **)&s1ap_ENBConfigurationUpdate_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_ENBConfigurationUpdate failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdate, s1ap_ENBConfigurationUpdate_p); return -1; } for (i = 0; i < s1ap_ENBConfigurationUpdate_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_ENBConfigurationUpdate_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { /* Optional field */ case S1ap_ProtocolIE_ID_id_eNBname: { S1ap_ENBname_t *s1apENBname_p = &s1ap_ENBConfigurationUpdateIEs->eNBname; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENBname, (void **)&s1apENBname_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBname failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdate, s1ap_ENBConfigurationUpdate_p); return -1; } s1ap_ENBConfigurationUpdateIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEIES_ENBNAME_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_SupportedTAs: { S1ap_SupportedTAs_t *s1apSupportedTAs_p = &s1ap_ENBConfigurationUpdateIEs->supportedTAs; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SupportedTAs, (void **)&s1apSupportedTAs_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSupportedTAs failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdate, s1ap_ENBConfigurationUpdate_p); return -1; } s1ap_ENBConfigurationUpdateIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEIES_SUPPORTEDTAS_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CSG_IdList: { S1ap_CSG_IdList_t *s1apCSGIdList_p = &s1ap_ENBConfigurationUpdateIEs->csG_IdList; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CSG_IdList, (void **)&s1apCSGIdList_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCSGIdList failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdate, s1ap_ENBConfigurationUpdate_p); return -1; } s1ap_ENBConfigurationUpdateIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEIES_CSG_IDLIST_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_DefaultPagingDRX: { S1ap_PagingDRX_t *s1apPagingDRX_p = &s1ap_ENBConfigurationUpdateIEs->defaultPagingDRX; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_PagingDRX, (void **)&s1apPagingDRX_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apPagingDRX failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdate, s1ap_ENBConfigurationUpdate_p); return -1; } s1ap_ENBConfigurationUpdateIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEIES_DEFAULTPAGINGDRX_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_enbconfigurationupdateies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdate, s1ap_ENBConfigurationUpdate_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationUpdate, s1ap_ENBConfigurationUpdate_p); return 0; } int s1ap_decode_s1ap_tracefailureindicationies( S1ap_TraceFailureIndicationIEs_t *s1ap_TraceFailureIndicationIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_TraceFailureIndication_t s1ap_TraceFailureIndication; S1ap_TraceFailureIndication_t *s1ap_TraceFailureIndication_p = &s1ap_TraceFailureIndication; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_TraceFailureIndicationIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_TraceFailureIndicationIEs\n"); memset(&s1ap_TraceFailureIndication, 0, sizeof(S1ap_TraceFailureIndication_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TraceFailureIndication, (void **)&s1ap_TraceFailureIndication_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_TraceFailureIndication failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TraceFailureIndication, s1ap_TraceFailureIndication_p); return -1; } for (i = 0; i < s1ap_TraceFailureIndication_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_TraceFailureIndication_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_TraceFailureIndicationIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TraceFailureIndication, s1ap_TraceFailureIndication_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_TraceFailureIndicationIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TraceFailureIndication, s1ap_TraceFailureIndication_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_E_UTRAN_Trace_ID: { S1ap_E_UTRAN_Trace_ID_t *s1apEUTRANTraceID_p = &s1ap_TraceFailureIndicationIEs->e_UTRAN_Trace_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_E_UTRAN_Trace_ID, (void **)&s1apEUTRANTraceID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apEUTRANTraceID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TraceFailureIndication, s1ap_TraceFailureIndication_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_TraceFailureIndicationIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TraceFailureIndication, s1ap_TraceFailureIndication_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_tracefailureindicationies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TraceFailureIndication, s1ap_TraceFailureIndication_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TraceFailureIndication, s1ap_TraceFailureIndication_p); return 0; } int s1ap_decode_s1ap_enbconfigurationtransferies( S1ap_ENBConfigurationTransferIEs_t *s1ap_ENBConfigurationTransferIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_ENBConfigurationTransfer_t s1ap_ENBConfigurationTransfer; S1ap_ENBConfigurationTransfer_t *s1ap_ENBConfigurationTransfer_p = &s1ap_ENBConfigurationTransfer; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_ENBConfigurationTransferIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_ENBConfigurationTransferIEs\n"); memset(&s1ap_ENBConfigurationTransfer, 0, sizeof(S1ap_ENBConfigurationTransfer_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENBConfigurationTransfer, (void **)&s1ap_ENBConfigurationTransfer_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_ENBConfigurationTransfer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationTransfer, s1ap_ENBConfigurationTransfer_p); return -1; } for (i = 0; i < s1ap_ENBConfigurationTransfer_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_ENBConfigurationTransfer_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { /* Optional field */ case S1ap_ProtocolIE_ID_id_SONConfigurationTransferECT: { S1ap_SONConfigurationTransfer_t *s1apSONConfigurationTransfer_p = &s1ap_ENBConfigurationTransferIEs->sonConfigurationTransferECT; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SONConfigurationTransfer, (void **)&s1apSONConfigurationTransfer_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSONConfigurationTransfer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationTransfer, s1ap_ENBConfigurationTransfer_p); return -1; } s1ap_ENBConfigurationTransferIEs->presenceMask |= S1AP_ENBCONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFERECT_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_enbconfigurationtransferies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationTransfer, s1ap_ENBConfigurationTransfer_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBConfigurationTransfer, s1ap_ENBConfigurationTransfer_p); return 0; } int s1ap_decode_s1ap_handoverfailureies( S1ap_HandoverFailureIEs_t *s1ap_HandoverFailureIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_HandoverFailure_t s1ap_HandoverFailure; S1ap_HandoverFailure_t *s1ap_HandoverFailure_p = &s1ap_HandoverFailure; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_HandoverFailureIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_HandoverFailureIEs\n"); memset(&s1ap_HandoverFailure, 0, sizeof(S1ap_HandoverFailure_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverFailure, (void **)&s1ap_HandoverFailure_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_HandoverFailure failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverFailure, s1ap_HandoverFailure_p); return -1; } for (i = 0; i < s1ap_HandoverFailure_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_HandoverFailure_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_HandoverFailureIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverFailure, s1ap_HandoverFailure_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_HandoverFailureIEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverFailure, s1ap_HandoverFailure_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_HandoverFailureIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverFailure, s1ap_HandoverFailure_p); return -1; } s1ap_HandoverFailureIEs->presenceMask |= S1AP_HANDOVERFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_handoverfailureies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverFailure, s1ap_HandoverFailure_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_HandoverFailure, s1ap_HandoverFailure_p); return 0; } int s1ap_decode_s1ap_e_rabsetupresponseies( S1ap_E_RABSetupResponseIEs_t *s1ap_E_RABSetupResponseIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_E_RABSetupResponse_t s1ap_E_RABSetupResponse; S1ap_E_RABSetupResponse_t *s1ap_E_RABSetupResponse_p = &s1ap_E_RABSetupResponse; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_E_RABSetupResponseIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_E_RABSetupResponseIEs\n"); memset(&s1ap_E_RABSetupResponse, 0, sizeof(S1ap_E_RABSetupResponse_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_E_RABSetupResponse, (void **)&s1ap_E_RABSetupResponse_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_E_RABSetupResponse failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupResponse, s1ap_E_RABSetupResponse_p); return -1; } for (i = 0; i < s1ap_E_RABSetupResponse_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_E_RABSetupResponse_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_E_RABSetupResponseIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupResponse, s1ap_E_RABSetupResponse_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_E_RABSetupResponseIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupResponse, s1ap_E_RABSetupResponse_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_E_RABSetupListBearerSURes: { S1ap_E_RABSetupListBearerSURes_t *s1apERABSetupListBearerSURes_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABSetupListBearerSURes, (void**)&s1apERABSetupListBearerSURes_p); if (s1ap_decode_s1ap_e_rabsetuplistbearersures(&s1ap_E_RABSetupResponseIEs->e_RABSetupListBearerSURes, s1apERABSetupListBearerSURes_p) < 0) { d_error("Decoding of encapsulated IE s1apERABSetupListBearerSURes failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSetupListBearerSURes, s1apERABSetupListBearerSURes_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupResponse, s1ap_E_RABSetupResponse_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSetupListBearerSURes, s1apERABSetupListBearerSURes_p); s1ap_E_RABSetupResponseIEs->presenceMask |= S1AP_E_RABSETUPRESPONSEIES_E_RABSETUPLISTBEARERSURES_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_E_RABFailedToSetupListBearerSURes: { S1ap_E_RABList_t *s1apERABList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); if (s1ap_decode_s1ap_e_rablist(&s1ap_E_RABSetupResponseIEs->e_RABFailedToSetupListBearerSURes, s1apERABList_p) < 0) { d_error("Decoding of encapsulated IE s1apERABList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupResponse, s1ap_E_RABSetupResponse_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); s1ap_E_RABSetupResponseIEs->presenceMask |= S1AP_E_RABSETUPRESPONSEIES_E_RABFAILEDTOSETUPLISTBEARERSURES_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_E_RABSetupResponseIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupResponse, s1ap_E_RABSetupResponse_p); return -1; } s1ap_E_RABSetupResponseIEs->presenceMask |= S1AP_E_RABSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_e_rabsetupresponseies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupResponse, s1ap_E_RABSetupResponse_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupResponse, s1ap_E_RABSetupResponse_p); return 0; } int s1ap_decode_s1ap_uecontextreleasecommand_ies( S1ap_UEContextReleaseCommand_IEs_t *s1ap_UEContextReleaseCommand_IEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_UEContextReleaseCommand_t s1ap_UEContextReleaseCommand; S1ap_UEContextReleaseCommand_t *s1ap_UEContextReleaseCommand_p = &s1ap_UEContextReleaseCommand; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_UEContextReleaseCommand_IEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_UEContextReleaseCommand_IEs\n"); memset(&s1ap_UEContextReleaseCommand, 0, sizeof(S1ap_UEContextReleaseCommand_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEContextReleaseCommand, (void **)&s1ap_UEContextReleaseCommand_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_UEContextReleaseCommand failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseCommand, s1ap_UEContextReleaseCommand_p); return -1; } for (i = 0; i < s1ap_UEContextReleaseCommand_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_UEContextReleaseCommand_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_UE_S1AP_IDs: { S1ap_UE_S1AP_IDs_t *s1apUES1APIDs_p = &s1ap_UEContextReleaseCommand_IEs->uE_S1AP_IDs; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UE_S1AP_IDs, (void **)&s1apUES1APIDs_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUES1APIDs failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseCommand, s1ap_UEContextReleaseCommand_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_UEContextReleaseCommand_IEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseCommand, s1ap_UEContextReleaseCommand_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uecontextreleasecommand_ies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseCommand, s1ap_UEContextReleaseCommand_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseCommand, s1ap_UEContextReleaseCommand_p); return 0; } int s1ap_decode_s1ap_pathswitchrequesties( S1ap_PathSwitchRequestIEs_t *s1ap_PathSwitchRequestIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_PathSwitchRequest_t s1ap_PathSwitchRequest; S1ap_PathSwitchRequest_t *s1ap_PathSwitchRequest_p = &s1ap_PathSwitchRequest; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_PathSwitchRequestIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_PathSwitchRequestIEs\n"); memset(&s1ap_PathSwitchRequest, 0, sizeof(S1ap_PathSwitchRequest_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_PathSwitchRequest, (void **)&s1ap_PathSwitchRequest_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_PathSwitchRequest failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequest, s1ap_PathSwitchRequest_p); return -1; } for (i = 0; i < s1ap_PathSwitchRequest_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_PathSwitchRequest_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_PathSwitchRequestIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequest, s1ap_PathSwitchRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_E_RABToBeSwitchedDLList: { S1ap_E_RABToBeSwitchedDLList_t *s1apERABToBeSwitchedDLList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSwitchedDLList, (void**)&s1apERABToBeSwitchedDLList_p); if (s1ap_decode_s1ap_e_rabtobeswitcheddllist(&s1ap_PathSwitchRequestIEs->e_RABToBeSwitchedDLList, s1apERABToBeSwitchedDLList_p) < 0) { d_error("Decoding of encapsulated IE s1apERABToBeSwitchedDLList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSwitchedDLList, s1apERABToBeSwitchedDLList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequest, s1ap_PathSwitchRequest_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSwitchedDLList, s1apERABToBeSwitchedDLList_p); } break; case S1ap_ProtocolIE_ID_id_SourceMME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_PathSwitchRequestIEs->sourceMME_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequest, s1ap_PathSwitchRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_EUTRAN_CGI: { S1ap_EUTRAN_CGI_t *s1apEUTRANCGI_p = &s1ap_PathSwitchRequestIEs->eutran_cgi; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_EUTRAN_CGI, (void **)&s1apEUTRANCGI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apEUTRANCGI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequest, s1ap_PathSwitchRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_TAI: { S1ap_TAI_t *s1apTAI_p = &s1ap_PathSwitchRequestIEs->tai; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TAI, (void **)&s1apTAI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTAI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequest, s1ap_PathSwitchRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_UESecurityCapabilities: { S1ap_UESecurityCapabilities_t *s1apUESecurityCapabilities_p = &s1ap_PathSwitchRequestIEs->ueSecurityCapabilities; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UESecurityCapabilities, (void **)&s1apUESecurityCapabilities_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUESecurityCapabilities failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequest, s1ap_PathSwitchRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CSG_Id: { S1ap_CSG_Id_t *s1apCSGId_p = &s1ap_PathSwitchRequestIEs->csG_Id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CSG_Id, (void **)&s1apCSGId_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCSGId failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequest, s1ap_PathSwitchRequest_p); return -1; } s1ap_PathSwitchRequestIEs->presenceMask |= S1AP_PATHSWITCHREQUESTIES_CSG_ID_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CellAccessMode: { S1ap_CellAccessMode_t *s1apCellAccessMode_p = &s1ap_PathSwitchRequestIEs->cellAccessMode; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CellAccessMode, (void **)&s1apCellAccessMode_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCellAccessMode failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequest, s1ap_PathSwitchRequest_p); return -1; } s1ap_PathSwitchRequestIEs->presenceMask |= S1AP_PATHSWITCHREQUESTIES_CELLACCESSMODE_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_SourceMME_GUMMEI: { S1ap_GUMMEI_t *s1apGUMMEI_p = &s1ap_PathSwitchRequestIEs->sourceMME_GUMMEI; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_GUMMEI, (void **)&s1apGUMMEI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apGUMMEI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequest, s1ap_PathSwitchRequest_p); return -1; } s1ap_PathSwitchRequestIEs->presenceMask |= S1AP_PATHSWITCHREQUESTIES_SOURCEMME_GUMMEI_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_pathswitchrequesties", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequest, s1ap_PathSwitchRequest_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PathSwitchRequest, s1ap_PathSwitchRequest_p); return 0; } int s1ap_decode_s1ap_downlinknastransport_ies( S1ap_DownlinkNASTransport_IEs_t *s1ap_DownlinkNASTransport_IEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_DownlinkNASTransport_t s1ap_DownlinkNASTransport; S1ap_DownlinkNASTransport_t *s1ap_DownlinkNASTransport_p = &s1ap_DownlinkNASTransport; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_DownlinkNASTransport_IEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_DownlinkNASTransport_IEs\n"); memset(&s1ap_DownlinkNASTransport, 0, sizeof(S1ap_DownlinkNASTransport_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_DownlinkNASTransport, (void **)&s1ap_DownlinkNASTransport_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_DownlinkNASTransport failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkNASTransport, s1ap_DownlinkNASTransport_p); return -1; } for (i = 0; i < s1ap_DownlinkNASTransport_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_DownlinkNASTransport_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_DownlinkNASTransport_IEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkNASTransport, s1ap_DownlinkNASTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_DownlinkNASTransport_IEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkNASTransport, s1ap_DownlinkNASTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_NAS_PDU: { S1ap_NAS_PDU_t *s1apNASPDU_p = &s1ap_DownlinkNASTransport_IEs->nas_pdu; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_NAS_PDU, (void **)&s1apNASPDU_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apNASPDU failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkNASTransport, s1ap_DownlinkNASTransport_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_HandoverRestrictionList: { S1ap_HandoverRestrictionList_t *s1apHandoverRestrictionList_p = &s1ap_DownlinkNASTransport_IEs->handoverRestrictionList; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_HandoverRestrictionList, (void **)&s1apHandoverRestrictionList_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apHandoverRestrictionList failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkNASTransport, s1ap_DownlinkNASTransport_p); return -1; } s1ap_DownlinkNASTransport_IEs->presenceMask |= S1AP_DOWNLINKNASTRANSPORT_IES_HANDOVERRESTRICTIONLIST_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_SubscriberProfileIDforRFP: { S1ap_SubscriberProfileIDforRFP_t *s1apSubscriberProfileIDforRFP_p = &s1ap_DownlinkNASTransport_IEs->subscriberProfileIDforRFP; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SubscriberProfileIDforRFP, (void **)&s1apSubscriberProfileIDforRFP_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSubscriberProfileIDforRFP failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkNASTransport, s1ap_DownlinkNASTransport_p); return -1; } s1ap_DownlinkNASTransport_IEs->presenceMask |= S1AP_DOWNLINKNASTRANSPORT_IES_SUBSCRIBERPROFILEIDFORRFP_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_downlinknastransport_ies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkNASTransport, s1ap_DownlinkNASTransport_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_DownlinkNASTransport, s1ap_DownlinkNASTransport_p); return 0; } int s1ap_decode_s1ap_e_rabreleaseindicationies( S1ap_E_RABReleaseIndicationIEs_t *s1ap_E_RABReleaseIndicationIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_E_RABReleaseIndication_t s1ap_E_RABReleaseIndication; S1ap_E_RABReleaseIndication_t *s1ap_E_RABReleaseIndication_p = &s1ap_E_RABReleaseIndication; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_E_RABReleaseIndicationIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_E_RABReleaseIndicationIEs\n"); memset(&s1ap_E_RABReleaseIndication, 0, sizeof(S1ap_E_RABReleaseIndication_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_E_RABReleaseIndication, (void **)&s1ap_E_RABReleaseIndication_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_E_RABReleaseIndication failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseIndication, s1ap_E_RABReleaseIndication_p); return -1; } for (i = 0; i < s1ap_E_RABReleaseIndication_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_E_RABReleaseIndication_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_E_RABReleaseIndicationIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseIndication, s1ap_E_RABReleaseIndication_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_E_RABReleaseIndicationIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseIndication, s1ap_E_RABReleaseIndication_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_E_RABReleasedList: { S1ap_E_RABList_t *s1apERABList_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); if (s1ap_decode_s1ap_e_rablist(&s1ap_E_RABReleaseIndicationIEs->e_RABReleasedList, s1apERABList_p) < 0) { d_error("Decoding of encapsulated IE s1apERABList failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseIndication, s1ap_E_RABReleaseIndication_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_e_rabreleaseindicationies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseIndication, s1ap_E_RABReleaseIndication_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABReleaseIndication, s1ap_E_RABReleaseIndication_p); return 0; } int s1ap_decode_s1ap_s1setuprequesties( S1ap_S1SetupRequestIEs_t *s1ap_S1SetupRequestIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_S1SetupRequest_t s1ap_S1SetupRequest; S1ap_S1SetupRequest_t *s1ap_S1SetupRequest_p = &s1ap_S1SetupRequest; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_S1SetupRequestIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_S1SetupRequestIEs\n"); memset(&s1ap_S1SetupRequest, 0, sizeof(S1ap_S1SetupRequest_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_S1SetupRequest, (void **)&s1ap_S1SetupRequest_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_S1SetupRequest failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupRequest, s1ap_S1SetupRequest_p); return -1; } for (i = 0; i < s1ap_S1SetupRequest_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_S1SetupRequest_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_Global_ENB_ID: { S1ap_Global_ENB_ID_t *s1apGlobalENBID_p = &s1ap_S1SetupRequestIEs->global_ENB_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Global_ENB_ID, (void **)&s1apGlobalENBID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apGlobalENBID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupRequest, s1ap_S1SetupRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_eNBname: { S1ap_ENBname_t *s1apENBname_p = &s1ap_S1SetupRequestIEs->eNBname; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENBname, (void **)&s1apENBname_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBname failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupRequest, s1ap_S1SetupRequest_p); return -1; } s1ap_S1SetupRequestIEs->presenceMask |= S1AP_S1SETUPREQUESTIES_ENBNAME_PRESENT; } break; case S1ap_ProtocolIE_ID_id_SupportedTAs: { S1ap_SupportedTAs_t *s1apSupportedTAs_p = &s1ap_S1SetupRequestIEs->supportedTAs; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_SupportedTAs, (void **)&s1apSupportedTAs_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apSupportedTAs failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupRequest, s1ap_S1SetupRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_DefaultPagingDRX: { S1ap_PagingDRX_t *s1apPagingDRX_p = &s1ap_S1SetupRequestIEs->defaultPagingDRX; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_PagingDRX, (void **)&s1apPagingDRX_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apPagingDRX failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupRequest, s1ap_S1SetupRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CSG_IdList: { S1ap_CSG_IdList_t *s1apCSGIdList_p = &s1ap_S1SetupRequestIEs->csG_IdList; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CSG_IdList, (void **)&s1apCSGIdList_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCSGIdList failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupRequest, s1ap_S1SetupRequest_p); return -1; } s1ap_S1SetupRequestIEs->presenceMask |= S1AP_S1SETUPREQUESTIES_CSG_IDLIST_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_s1setuprequesties", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupRequest, s1ap_S1SetupRequest_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S1SetupRequest, s1ap_S1SetupRequest_p); return 0; } int s1ap_decode_s1ap_nasnondeliveryindication_ies( S1ap_NASNonDeliveryIndication_IEs_t *s1ap_NASNonDeliveryIndication_IEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_NASNonDeliveryIndication_t s1ap_NASNonDeliveryIndication; S1ap_NASNonDeliveryIndication_t *s1ap_NASNonDeliveryIndication_p = &s1ap_NASNonDeliveryIndication; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_NASNonDeliveryIndication_IEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_NASNonDeliveryIndication_IEs\n"); memset(&s1ap_NASNonDeliveryIndication, 0, sizeof(S1ap_NASNonDeliveryIndication_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_NASNonDeliveryIndication, (void **)&s1ap_NASNonDeliveryIndication_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_NASNonDeliveryIndication failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_NASNonDeliveryIndication, s1ap_NASNonDeliveryIndication_p); return -1; } for (i = 0; i < s1ap_NASNonDeliveryIndication_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_NASNonDeliveryIndication_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_NASNonDeliveryIndication_IEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_NASNonDeliveryIndication, s1ap_NASNonDeliveryIndication_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_NASNonDeliveryIndication_IEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_NASNonDeliveryIndication, s1ap_NASNonDeliveryIndication_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_NAS_PDU: { S1ap_NAS_PDU_t *s1apNASPDU_p = &s1ap_NASNonDeliveryIndication_IEs->nas_pdu; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_NAS_PDU, (void **)&s1apNASPDU_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apNASPDU failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_NASNonDeliveryIndication, s1ap_NASNonDeliveryIndication_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Cause: { S1ap_Cause_t *s1apCause_p = &s1ap_NASNonDeliveryIndication_IEs->cause; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Cause, (void **)&s1apCause_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCause failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_NASNonDeliveryIndication, s1ap_NASNonDeliveryIndication_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_nasnondeliveryindication_ies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_NASNonDeliveryIndication, s1ap_NASNonDeliveryIndication_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_NASNonDeliveryIndication, s1ap_NASNonDeliveryIndication_p); return 0; } int s1ap_decode_s1ap_celltraffictraceies( S1ap_CellTrafficTraceIEs_t *s1ap_CellTrafficTraceIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_CellTrafficTrace_t s1ap_CellTrafficTrace; S1ap_CellTrafficTrace_t *s1ap_CellTrafficTrace_p = &s1ap_CellTrafficTrace; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_CellTrafficTraceIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_CellTrafficTraceIEs\n"); memset(&s1ap_CellTrafficTrace, 0, sizeof(S1ap_CellTrafficTrace_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CellTrafficTrace, (void **)&s1ap_CellTrafficTrace_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_CellTrafficTrace failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_CellTrafficTrace, s1ap_CellTrafficTrace_p); return -1; } for (i = 0; i < s1ap_CellTrafficTrace_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_CellTrafficTrace_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_CellTrafficTraceIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_CellTrafficTrace, s1ap_CellTrafficTrace_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_CellTrafficTraceIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_CellTrafficTrace, s1ap_CellTrafficTrace_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_E_UTRAN_Trace_ID: { S1ap_E_UTRAN_Trace_ID_t *s1apEUTRANTraceID_p = &s1ap_CellTrafficTraceIEs->e_UTRAN_Trace_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_E_UTRAN_Trace_ID, (void **)&s1apEUTRANTraceID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apEUTRANTraceID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_CellTrafficTrace, s1ap_CellTrafficTrace_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_EUTRAN_CGI: { S1ap_EUTRAN_CGI_t *s1apEUTRANCGI_p = &s1ap_CellTrafficTraceIEs->eutran_cgi; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_EUTRAN_CGI, (void **)&s1apEUTRANCGI_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apEUTRANCGI failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_CellTrafficTrace, s1ap_CellTrafficTrace_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_TraceCollectionEntityIPAddress: { S1ap_TransportLayerAddress_t *s1apTransportLayerAddress_p = &s1ap_CellTrafficTraceIEs->traceCollectionEntityIPAddress; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_TransportLayerAddress, (void **)&s1apTransportLayerAddress_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apTransportLayerAddress failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_CellTrafficTrace, s1ap_CellTrafficTrace_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_PrivacyIndicator: { S1ap_PrivacyIndicator_t *s1apPrivacyIndicator_p = &s1ap_CellTrafficTraceIEs->privacyIndicator; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_PrivacyIndicator, (void **)&s1apPrivacyIndicator_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apPrivacyIndicator failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_CellTrafficTrace, s1ap_CellTrafficTrace_p); return -1; } s1ap_CellTrafficTraceIEs->presenceMask |= S1AP_CELLTRAFFICTRACEIES_PRIVACYINDICATOR_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_celltraffictraceies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_CellTrafficTrace, s1ap_CellTrafficTrace_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_CellTrafficTrace, s1ap_CellTrafficTrace_p); return 0; } int s1ap_decode_s1ap_e_rabsetuprequesties( S1ap_E_RABSetupRequestIEs_t *s1ap_E_RABSetupRequestIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_E_RABSetupRequest_t s1ap_E_RABSetupRequest; S1ap_E_RABSetupRequest_t *s1ap_E_RABSetupRequest_p = &s1ap_E_RABSetupRequest; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_E_RABSetupRequestIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_E_RABSetupRequestIEs\n"); memset(&s1ap_E_RABSetupRequest, 0, sizeof(S1ap_E_RABSetupRequest_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_E_RABSetupRequest, (void **)&s1ap_E_RABSetupRequest_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_E_RABSetupRequest failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupRequest, s1ap_E_RABSetupRequest_p); return -1; } for (i = 0; i < s1ap_E_RABSetupRequest_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_E_RABSetupRequest_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_E_RABSetupRequestIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupRequest, s1ap_E_RABSetupRequest_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_E_RABSetupRequestIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupRequest, s1ap_E_RABSetupRequest_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: { S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = &s1ap_E_RABSetupRequestIEs->uEaggregateMaximumBitrate; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void **)&s1apUEAggregateMaximumBitrate_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apUEAggregateMaximumBitrate failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupRequest, s1ap_E_RABSetupRequest_p); return -1; } s1ap_E_RABSetupRequestIEs->presenceMask |= S1AP_E_RABSETUPREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT; } break; case S1ap_ProtocolIE_ID_id_E_RABToBeSetupListBearerSUReq: { S1ap_E_RABToBeSetupListBearerSUReq_t *s1apERABToBeSetupListBearerSUReq_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSetupListBearerSUReq, (void**)&s1apERABToBeSetupListBearerSUReq_p); if (s1ap_decode_s1ap_e_rabtobesetuplistbearersureq(&s1ap_E_RABSetupRequestIEs->e_RABToBeSetupListBearerSUReq, s1apERABToBeSetupListBearerSUReq_p) < 0) { d_error("Decoding of encapsulated IE s1apERABToBeSetupListBearerSUReq failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupListBearerSUReq, s1apERABToBeSetupListBearerSUReq_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupRequest, s1ap_E_RABSetupRequest_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupListBearerSUReq, s1apERABToBeSetupListBearerSUReq_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_e_rabsetuprequesties", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupRequest, s1ap_E_RABSetupRequest_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupRequest, s1ap_E_RABSetupRequest_p); return 0; } int s1ap_decode_s1ap_enbstatustransferies( S1ap_ENBStatusTransferIEs_t *s1ap_ENBStatusTransferIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_ENBStatusTransfer_t s1ap_ENBStatusTransfer; S1ap_ENBStatusTransfer_t *s1ap_ENBStatusTransfer_p = &s1ap_ENBStatusTransfer; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_ENBStatusTransferIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_ENBStatusTransferIEs\n"); memset(&s1ap_ENBStatusTransfer, 0, sizeof(S1ap_ENBStatusTransfer_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENBStatusTransfer, (void **)&s1ap_ENBStatusTransfer_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_ENBStatusTransfer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBStatusTransfer, s1ap_ENBStatusTransfer_p); return -1; } for (i = 0; i < s1ap_ENBStatusTransfer_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_ENBStatusTransfer_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_ENBStatusTransferIEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBStatusTransfer, s1ap_ENBStatusTransfer_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_ENBStatusTransferIEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBStatusTransfer, s1ap_ENBStatusTransfer_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_StatusTransfer_TransparentContainer: { S1ap_ENB_StatusTransfer_TransparentContainer_t *s1apENBStatusTransferTransparentContainer_p = &s1ap_ENBStatusTransferIEs->eNB_StatusTransfer_TransparentContainer; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_StatusTransfer_TransparentContainer, (void **)&s1apENBStatusTransferTransparentContainer_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBStatusTransferTransparentContainer failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBStatusTransfer, s1ap_ENBStatusTransfer_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_enbstatustransferies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBStatusTransfer, s1ap_ENBStatusTransfer_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBStatusTransfer, s1ap_ENBStatusTransfer_p); return 0; } int s1ap_decode_s1ap_resetacknowledgeies( S1ap_ResetAcknowledgeIEs_t *s1ap_ResetAcknowledgeIEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_ResetAcknowledge_t s1ap_ResetAcknowledge; S1ap_ResetAcknowledge_t *s1ap_ResetAcknowledge_p = &s1ap_ResetAcknowledge; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_ResetAcknowledgeIEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_ResetAcknowledgeIEs\n"); memset(&s1ap_ResetAcknowledge, 0, sizeof(S1ap_ResetAcknowledge_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ResetAcknowledge, (void **)&s1ap_ResetAcknowledge_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_ResetAcknowledge failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ResetAcknowledge, s1ap_ResetAcknowledge_p); return -1; } for (i = 0; i < s1ap_ResetAcknowledge_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_ResetAcknowledge_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { /* Optional field */ case S1ap_ProtocolIE_ID_id_UE_associatedLogicalS1_ConnectionListResAck: { S1ap_UE_associatedLogicalS1_ConnectionListResAck_t *s1apUEassociatedLogicalS1ConnectionListResAck_p = NULL; ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionListResAck, (void**)&s1apUEassociatedLogicalS1ConnectionListResAck_p); if (s1ap_decode_s1ap_ue_associatedlogicals1_connectionlistresack(&s1ap_ResetAcknowledgeIEs->uE_associatedLogicalS1_ConnectionListResAck, s1apUEassociatedLogicalS1ConnectionListResAck_p) < 0) { d_error("Decoding of encapsulated IE s1apUEassociatedLogicalS1ConnectionListResAck failed"); ASN_STRUCT_FREE(asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionListResAck, s1apUEassociatedLogicalS1ConnectionListResAck_p); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ResetAcknowledge, s1ap_ResetAcknowledge_p); return -1; } ASN_STRUCT_FREE(asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionListResAck, s1apUEassociatedLogicalS1ConnectionListResAck_p); s1ap_ResetAcknowledgeIEs->presenceMask |= S1AP_RESETACKNOWLEDGEIES_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRESACK_PRESENT; } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_ResetAcknowledgeIEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ResetAcknowledge, s1ap_ResetAcknowledge_p); return -1; } s1ap_ResetAcknowledgeIEs->presenceMask |= S1AP_RESETACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_resetacknowledgeies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ResetAcknowledge, s1ap_ResetAcknowledge_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ResetAcknowledge, s1ap_ResetAcknowledge_p); return 0; } int s1ap_decode_s1ap_uecontextreleasecomplete_ies( S1ap_UEContextReleaseComplete_IEs_t *s1ap_UEContextReleaseComplete_IEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_UEContextReleaseComplete_t s1ap_UEContextReleaseComplete; S1ap_UEContextReleaseComplete_t *s1ap_UEContextReleaseComplete_p = &s1ap_UEContextReleaseComplete; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_UEContextReleaseComplete_IEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_UEContextReleaseComplete_IEs\n"); memset(&s1ap_UEContextReleaseComplete, 0, sizeof(S1ap_UEContextReleaseComplete_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UEContextReleaseComplete, (void **)&s1ap_UEContextReleaseComplete_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_UEContextReleaseComplete failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseComplete, s1ap_UEContextReleaseComplete_p); return -1; } for (i = 0; i < s1ap_UEContextReleaseComplete_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_UEContextReleaseComplete_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_UEContextReleaseComplete_IEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseComplete, s1ap_UEContextReleaseComplete_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_UEContextReleaseComplete_IEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseComplete, s1ap_UEContextReleaseComplete_p); return -1; } } break; /* Optional field */ case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: { S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = &s1ap_UEContextReleaseComplete_IEs->criticalityDiagnostics; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_CriticalityDiagnostics, (void **)&s1apCriticalityDiagnostics_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apCriticalityDiagnostics failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseComplete, s1ap_UEContextReleaseComplete_p); return -1; } s1ap_UEContextReleaseComplete_IEs->presenceMask |= S1AP_UECONTEXTRELEASECOMPLETE_IES_CRITICALITYDIAGNOSTICS_PRESENT; } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uecontextreleasecomplete_ies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseComplete, s1ap_UEContextReleaseComplete_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UEContextReleaseComplete, s1ap_UEContextReleaseComplete_p); return 0; } int s1ap_decode_s1ap_uplinkueassociatedlppatransport_ies( S1ap_UplinkUEAssociatedLPPaTransport_IEs_t *s1ap_UplinkUEAssociatedLPPaTransport_IEs, ANY_t *any_p) { asn_dec_rval_t dec_ret = {0}; S1ap_UplinkUEAssociatedLPPaTransport_t s1ap_UplinkUEAssociatedLPPaTransport; S1ap_UplinkUEAssociatedLPPaTransport_t *s1ap_UplinkUEAssociatedLPPaTransport_p = &s1ap_UplinkUEAssociatedLPPaTransport; int i; d_assert(any_p, return -1, "Null param"); d_assert(s1ap_UplinkUEAssociatedLPPaTransport_IEs, return -1, "Null param"); d_trace(3, "[S1AP] Decode S1ap_UplinkUEAssociatedLPPaTransport_IEs\n"); memset(&s1ap_UplinkUEAssociatedLPPaTransport, 0, sizeof(S1ap_UplinkUEAssociatedLPPaTransport_t)); dec_ret = aper_decode(NULL, &asn_DEF_S1ap_UplinkUEAssociatedLPPaTransport, (void **)&s1ap_UplinkUEAssociatedLPPaTransport_p, any_p->buf, any_p->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1ap_UplinkUEAssociatedLPPaTransport failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkUEAssociatedLPPaTransport, s1ap_UplinkUEAssociatedLPPaTransport_p); return -1; } for (i = 0; i < s1ap_UplinkUEAssociatedLPPaTransport_p->protocolIEs.list.count; i++) { S1ap_IE_t *ie_p; ANY_t *st; ie_p = (S1ap_IE_t *)s1ap_UplinkUEAssociatedLPPaTransport_p->protocolIEs.list.array[i]; d_assert(ie_p, return -1, "Null param"); st = &ie_p->value; d_assert(st, return -1, "Null param"); switch(ie_p->id) { case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: { S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = &s1ap_UplinkUEAssociatedLPPaTransport_IEs->mme_ue_s1ap_id; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void **)&s1apMMEUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apMMEUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkUEAssociatedLPPaTransport, s1ap_UplinkUEAssociatedLPPaTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: { S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = &s1ap_UplinkUEAssociatedLPPaTransport_IEs->eNB_UE_S1AP_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void **)&s1apENBUES1APID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apENBUES1APID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkUEAssociatedLPPaTransport, s1ap_UplinkUEAssociatedLPPaTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_Routing_ID: { S1ap_Routing_ID_t *s1apRoutingID_p = &s1ap_UplinkUEAssociatedLPPaTransport_IEs->routing_ID; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_Routing_ID, (void **)&s1apRoutingID_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apRoutingID failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkUEAssociatedLPPaTransport, s1ap_UplinkUEAssociatedLPPaTransport_p); return -1; } } break; case S1ap_ProtocolIE_ID_id_LPPa_PDU: { S1ap_LPPa_PDU_t *s1apLPPaPDU_p = &s1ap_UplinkUEAssociatedLPPaTransport_IEs->lpPa_PDU; dec_ret = aper_decode(NULL, &asn_DEF_S1ap_LPPa_PDU, (void **)&s1apLPPaPDU_p, st->buf, st->size, 0, 0); if (dec_ret.code != RC_OK) { d_error("Decoding of IE s1apLPPaPDU failed"); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkUEAssociatedLPPaTransport, s1ap_UplinkUEAssociatedLPPaTransport_p); return -1; } } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkUEAssociatedLPPaTransport, s1ap_UplinkUEAssociatedLPPaTransport_p); return -1; } } ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_UplinkUEAssociatedLPPaTransport, s1ap_UplinkUEAssociatedLPPaTransport_p); return 0; } int s1ap_decode_s1ap_e_rabfailedtosetuplisthoreqack( S1ap_E_RABFailedtoSetupListHOReqAck_IEs_t *s1ap_E_RABFailedtoSetupListHOReqAckIEs, S1ap_E_RABFailedtoSetupListHOReqAck_t *s1ap_E_RABFailedtoSetupListHOReqAck) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABFailedtoSetupListHOReqAck, return -1, "Null param"); d_assert(s1ap_E_RABFailedtoSetupListHOReqAckIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABFailedtoSetupListHOReqAck->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABFailedtoSetupListHOReqAck->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABFailedtoSetupItemHOReqAck: { S1ap_E_RABFailedToSetupItemHOReqAck_t *s1apERABFailedToSetupItemHOReqAck_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABFailedToSetupItemHOReqAck, (void**)&s1apERABFailedToSetupItemHOReqAck_p); if (tempDecoded < 0 || s1apERABFailedToSetupItemHOReqAck_p == NULL) { d_error("Decoding of IE e_RABFailedtoSetupItemHOReqAck for message S1ap_E_RABFailedtoSetupListHOReqAck failed"); if (s1apERABFailedToSetupItemHOReqAck_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABFailedToSetupItemHOReqAck, s1apERABFailedToSetupItemHOReqAck_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABFailedtoSetupListHOReqAckIEs->s1ap_E_RABFailedtoSetupItemHOReqAck, s1apERABFailedToSetupItemHOReqAck_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rabreleaselistbearerrelcomp( S1ap_E_RABReleaseListBearerRelComp_IEs_t *s1ap_E_RABReleaseListBearerRelCompIEs, S1ap_E_RABReleaseListBearerRelComp_t *s1ap_E_RABReleaseListBearerRelComp) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABReleaseListBearerRelComp, return -1, "Null param"); d_assert(s1ap_E_RABReleaseListBearerRelCompIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABReleaseListBearerRelComp->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABReleaseListBearerRelComp->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABReleaseItemBearerRelComp: { S1ap_E_RABReleaseItemBearerRelComp_t *s1apERABReleaseItemBearerRelComp_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABReleaseItemBearerRelComp, (void**)&s1apERABReleaseItemBearerRelComp_p); if (tempDecoded < 0 || s1apERABReleaseItemBearerRelComp_p == NULL) { d_error("Decoding of IE e_RABReleaseItemBearerRelComp for message S1ap_E_RABReleaseListBearerRelComp failed"); if (s1apERABReleaseItemBearerRelComp_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABReleaseItemBearerRelComp, s1apERABReleaseItemBearerRelComp_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseListBearerRelCompIEs->s1ap_E_RABReleaseItemBearerRelComp, s1apERABReleaseItemBearerRelComp_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rabtobesetuplisthoreq( S1ap_E_RABToBeSetupListHOReq_IEs_t *s1ap_E_RABToBeSetupListHOReqIEs, S1ap_E_RABToBeSetupListHOReq_t *s1ap_E_RABToBeSetupListHOReq) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABToBeSetupListHOReq, return -1, "Null param"); d_assert(s1ap_E_RABToBeSetupListHOReqIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABToBeSetupListHOReq->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABToBeSetupListHOReq->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABToBeSetupItemHOReq: { S1ap_E_RABToBeSetupItemHOReq_t *s1apERABToBeSetupItemHOReq_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSetupItemHOReq, (void**)&s1apERABToBeSetupItemHOReq_p); if (tempDecoded < 0 || s1apERABToBeSetupItemHOReq_p == NULL) { d_error("Decoding of IE e_RABToBeSetupItemHOReq for message S1ap_E_RABToBeSetupListHOReq failed"); if (s1apERABToBeSetupItemHOReq_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupItemHOReq, s1apERABToBeSetupItemHOReq_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABToBeSetupListHOReqIEs->s1ap_E_RABToBeSetupItemHOReq, s1apERABToBeSetupItemHOReq_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rabtobemodifiedlistbearermodreq( S1ap_E_RABToBeModifiedListBearerModReq_IEs_t *s1ap_E_RABToBeModifiedListBearerModReqIEs, S1ap_E_RABToBeModifiedListBearerModReq_t *s1ap_E_RABToBeModifiedListBearerModReq) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABToBeModifiedListBearerModReq, return -1, "Null param"); d_assert(s1ap_E_RABToBeModifiedListBearerModReqIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABToBeModifiedListBearerModReq->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABToBeModifiedListBearerModReq->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABToBeModifiedItemBearerModReq: { S1ap_E_RABToBeModifiedItemBearerModReq_t *s1apERABToBeModifiedItemBearerModReq_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeModifiedItemBearerModReq, (void**)&s1apERABToBeModifiedItemBearerModReq_p); if (tempDecoded < 0 || s1apERABToBeModifiedItemBearerModReq_p == NULL) { d_error("Decoding of IE e_RABToBeModifiedItemBearerModReq for message S1ap_E_RABToBeModifiedListBearerModReq failed"); if (s1apERABToBeModifiedItemBearerModReq_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeModifiedItemBearerModReq, s1apERABToBeModifiedItemBearerModReq_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABToBeModifiedListBearerModReqIEs->s1ap_E_RABToBeModifiedItemBearerModReq, s1apERABToBeModifiedItemBearerModReq_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rabadmittedlist( S1ap_E_RABAdmittedList_IEs_t *s1ap_E_RABAdmittedListIEs, S1ap_E_RABAdmittedList_t *s1ap_E_RABAdmittedList) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABAdmittedList, return -1, "Null param"); d_assert(s1ap_E_RABAdmittedListIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABAdmittedList->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABAdmittedList->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABAdmittedItem: { S1ap_E_RABAdmittedItem_t *s1apERABAdmittedItem_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABAdmittedItem, (void**)&s1apERABAdmittedItem_p); if (tempDecoded < 0 || s1apERABAdmittedItem_p == NULL) { d_error("Decoding of IE e_RABAdmittedItem for message S1ap_E_RABAdmittedList failed"); if (s1apERABAdmittedItem_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABAdmittedItem, s1apERABAdmittedItem_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABAdmittedListIEs->s1ap_E_RABAdmittedItem, s1apERABAdmittedItem_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rabtobesetuplistbearersureq( S1ap_E_RABToBeSetupListBearerSUReq_IEs_t *s1ap_E_RABToBeSetupListBearerSUReqIEs, S1ap_E_RABToBeSetupListBearerSUReq_t *s1ap_E_RABToBeSetupListBearerSUReq) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABToBeSetupListBearerSUReq, return -1, "Null param"); d_assert(s1ap_E_RABToBeSetupListBearerSUReqIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABToBeSetupListBearerSUReq->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABToBeSetupListBearerSUReq->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABToBeSetupItemBearerSUReq: { S1ap_E_RABToBeSetupItemBearerSUReq_t *s1apERABToBeSetupItemBearerSUReq_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSetupItemBearerSUReq, (void**)&s1apERABToBeSetupItemBearerSUReq_p); if (tempDecoded < 0 || s1apERABToBeSetupItemBearerSUReq_p == NULL) { d_error("Decoding of IE e_RABToBeSetupItemBearerSUReq for message S1ap_E_RABToBeSetupListBearerSUReq failed"); if (s1apERABToBeSetupItemBearerSUReq_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupItemBearerSUReq, s1apERABToBeSetupItemBearerSUReq_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABToBeSetupListBearerSUReqIEs->s1ap_E_RABToBeSetupItemBearerSUReq, s1apERABToBeSetupItemBearerSUReq_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rabdataforwardinglist( S1ap_E_RABDataForwardingList_IEs_t *s1ap_E_RABDataForwardingListIEs, S1ap_E_RABDataForwardingList_t *s1ap_E_RABDataForwardingList) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABDataForwardingList, return -1, "Null param"); d_assert(s1ap_E_RABDataForwardingListIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABDataForwardingList->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABDataForwardingList->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABDataForwardingItem: { S1ap_E_RABDataForwardingItem_t *s1apERABDataForwardingItem_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABDataForwardingItem, (void**)&s1apERABDataForwardingItem_p); if (tempDecoded < 0 || s1apERABDataForwardingItem_p == NULL) { d_error("Decoding of IE e_RABDataForwardingItem for message S1ap_E_RABDataForwardingList failed"); if (s1apERABDataForwardingItem_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABDataForwardingItem, s1apERABDataForwardingItem_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABDataForwardingListIEs->s1ap_E_RABDataForwardingItem, s1apERABDataForwardingItem_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rabtobeswitcheddllist( S1ap_E_RABToBeSwitchedDLList_IEs_t *s1ap_E_RABToBeSwitchedDLListIEs, S1ap_E_RABToBeSwitchedDLList_t *s1ap_E_RABToBeSwitchedDLList) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABToBeSwitchedDLList, return -1, "Null param"); d_assert(s1ap_E_RABToBeSwitchedDLListIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABToBeSwitchedDLList->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABToBeSwitchedDLList->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABToBeSwitchedDLItem: { S1ap_E_RABToBeSwitchedDLItem_t *s1apERABToBeSwitchedDLItem_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSwitchedDLItem, (void**)&s1apERABToBeSwitchedDLItem_p); if (tempDecoded < 0 || s1apERABToBeSwitchedDLItem_p == NULL) { d_error("Decoding of IE e_RABToBeSwitchedDLItem for message S1ap_E_RABToBeSwitchedDLList failed"); if (s1apERABToBeSwitchedDLItem_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSwitchedDLItem, s1apERABToBeSwitchedDLItem_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABToBeSwitchedDLListIEs->s1ap_E_RABToBeSwitchedDLItem, s1apERABToBeSwitchedDLItem_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rabsetuplistctxtsures( S1ap_E_RABSetupListCtxtSURes_IEs_t *s1ap_E_RABSetupListCtxtSUResIEs, S1ap_E_RABSetupListCtxtSURes_t *s1ap_E_RABSetupListCtxtSURes) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABSetupListCtxtSURes, return -1, "Null param"); d_assert(s1ap_E_RABSetupListCtxtSUResIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABSetupListCtxtSURes->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABSetupListCtxtSURes->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABSetupItemCtxtSURes: { S1ap_E_RABSetupItemCtxtSURes_t *s1apERABSetupItemCtxtSURes_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABSetupItemCtxtSURes, (void**)&s1apERABSetupItemCtxtSURes_p); if (tempDecoded < 0 || s1apERABSetupItemCtxtSURes_p == NULL) { d_error("Decoding of IE e_RABSetupItemCtxtSURes for message S1ap_E_RABSetupListCtxtSURes failed"); if (s1apERABSetupItemCtxtSURes_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSetupItemCtxtSURes, s1apERABSetupItemCtxtSURes_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABSetupListCtxtSUResIEs->s1ap_E_RABSetupItemCtxtSURes, s1apERABSetupItemCtxtSURes_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rabtobeswitchedullist( S1ap_E_RABToBeSwitchedULList_IEs_t *s1ap_E_RABToBeSwitchedULListIEs, S1ap_E_RABToBeSwitchedULList_t *s1ap_E_RABToBeSwitchedULList) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABToBeSwitchedULList, return -1, "Null param"); d_assert(s1ap_E_RABToBeSwitchedULListIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABToBeSwitchedULList->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABToBeSwitchedULList->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABToBeSwitchedULItem: { S1ap_E_RABToBeSwitchedULItem_t *s1apERABToBeSwitchedULItem_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSwitchedULItem, (void**)&s1apERABToBeSwitchedULItem_p); if (tempDecoded < 0 || s1apERABToBeSwitchedULItem_p == NULL) { d_error("Decoding of IE e_RABToBeSwitchedULItem for message S1ap_E_RABToBeSwitchedULList failed"); if (s1apERABToBeSwitchedULItem_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSwitchedULItem, s1apERABToBeSwitchedULItem_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABToBeSwitchedULListIEs->s1ap_E_RABToBeSwitchedULItem, s1apERABToBeSwitchedULItem_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_bearers_subjecttostatustransfer_list( S1ap_Bearers_SubjectToStatusTransfer_List_IEs_t *s1ap_Bearers_SubjectToStatusTransfer_ListIEs, S1ap_Bearers_SubjectToStatusTransfer_List_t *s1ap_Bearers_SubjectToStatusTransfer_List) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_Bearers_SubjectToStatusTransfer_List, return -1, "Null param"); d_assert(s1ap_Bearers_SubjectToStatusTransfer_ListIEs, return -1, "Null param"); for (i = 0; i < s1ap_Bearers_SubjectToStatusTransfer_List->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_Bearers_SubjectToStatusTransfer_List->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_Bearers_SubjectToStatusTransfer_Item: { S1ap_Bearers_SubjectToStatusTransfer_Item_t *s1apBearersSubjectToStatusTransferItem_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Bearers_SubjectToStatusTransfer_Item, (void**)&s1apBearersSubjectToStatusTransferItem_p); if (tempDecoded < 0 || s1apBearersSubjectToStatusTransferItem_p == NULL) { d_error("Decoding of IE bearers_SubjectToStatusTransfer_Item for message S1ap_Bearers_SubjectToStatusTransfer_List failed"); if (s1apBearersSubjectToStatusTransferItem_p) ASN_STRUCT_FREE(asn_DEF_S1ap_Bearers_SubjectToStatusTransfer_Item, s1apBearersSubjectToStatusTransferItem_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_Bearers_SubjectToStatusTransfer_ListIEs->s1ap_Bearers_SubjectToStatusTransfer_Item, s1apBearersSubjectToStatusTransferItem_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rablist( S1ap_E_RABList_IEs_t *s1ap_E_RABListIEs, S1ap_E_RABList_t *s1ap_E_RABList) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABList, return -1, "Null param"); d_assert(s1ap_E_RABListIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABList->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABList->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABItem: { S1ap_E_RABItem_t *s1apERABItem_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABItem, (void**)&s1apERABItem_p); if (tempDecoded < 0 || s1apERABItem_p == NULL) { d_error("Decoding of IE e_RABItem for message S1ap_E_RABList failed"); if (s1apERABItem_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABItem, s1apERABItem_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABListIEs->s1ap_E_RABItem, s1apERABItem_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_tailist( S1ap_TAIList_IEs_t *s1ap_TAIListIEs, S1ap_TAIList_t *s1ap_TAIList) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_TAIList, return -1, "Null param"); d_assert(s1ap_TAIListIEs, return -1, "Null param"); for (i = 0; i < s1ap_TAIList->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_TAIList->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_TAIItem: { S1ap_TAIItem_t *s1apTAIItem_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TAIItem, (void**)&s1apTAIItem_p); if (tempDecoded < 0 || s1apTAIItem_p == NULL) { d_error("Decoding of IE taiItem for message S1ap_TAIList failed"); if (s1apTAIItem_p) ASN_STRUCT_FREE(asn_DEF_S1ap_TAIItem, s1apTAIItem_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_TAIListIEs->s1ap_TAIItem, s1apTAIItem_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_ue_associatedlogicals1_connectionlistres( S1ap_UE_associatedLogicalS1_ConnectionListRes_IEs_t *s1ap_UE_associatedLogicalS1_ConnectionListResIEs, S1ap_UE_associatedLogicalS1_ConnectionListRes_t *s1ap_UE_associatedLogicalS1_ConnectionListRes) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_UE_associatedLogicalS1_ConnectionListRes, return -1, "Null param"); d_assert(s1ap_UE_associatedLogicalS1_ConnectionListResIEs, return -1, "Null param"); for (i = 0; i < s1ap_UE_associatedLogicalS1_ConnectionListRes->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_UE_associatedLogicalS1_ConnectionListRes->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_UE_associatedLogicalS1_ConnectionItem: { S1ap_UE_associatedLogicalS1_ConnectionItem_t *s1apUEassociatedLogicalS1ConnectionItem_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, (void**)&s1apUEassociatedLogicalS1ConnectionItem_p); if (tempDecoded < 0 || s1apUEassociatedLogicalS1ConnectionItem_p == NULL) { d_error("Decoding of IE uE_associatedLogicalS1_ConnectionItem for message S1ap_UE_associatedLogicalS1_ConnectionListRes failed"); if (s1apUEassociatedLogicalS1ConnectionItem_p) ASN_STRUCT_FREE(asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, s1apUEassociatedLogicalS1ConnectionItem_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_UE_associatedLogicalS1_ConnectionListResIEs->s1ap_UE_associatedLogicalS1_ConnectionItemRes, s1apUEassociatedLogicalS1ConnectionItem_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rabsetuplistbearersures( S1ap_E_RABSetupListBearerSURes_IEs_t *s1ap_E_RABSetupListBearerSUResIEs, S1ap_E_RABSetupListBearerSURes_t *s1ap_E_RABSetupListBearerSURes) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABSetupListBearerSURes, return -1, "Null param"); d_assert(s1ap_E_RABSetupListBearerSUResIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABSetupListBearerSURes->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABSetupListBearerSURes->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABSetupItemBearerSURes: { S1ap_E_RABSetupItemBearerSURes_t *s1apERABSetupItemBearerSURes_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABSetupItemBearerSURes, (void**)&s1apERABSetupItemBearerSURes_p); if (tempDecoded < 0 || s1apERABSetupItemBearerSURes_p == NULL) { d_error("Decoding of IE e_RABSetupItemBearerSURes for message S1ap_E_RABSetupListBearerSURes failed"); if (s1apERABSetupItemBearerSURes_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSetupItemBearerSURes, s1apERABSetupItemBearerSURes_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABSetupListBearerSUResIEs->s1ap_E_RABSetupItemBearerSURes, s1apERABSetupItemBearerSURes_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rabmodifylistbearermodres( S1ap_E_RABModifyListBearerModRes_IEs_t *s1ap_E_RABModifyListBearerModResIEs, S1ap_E_RABModifyListBearerModRes_t *s1ap_E_RABModifyListBearerModRes) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABModifyListBearerModRes, return -1, "Null param"); d_assert(s1ap_E_RABModifyListBearerModResIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABModifyListBearerModRes->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABModifyListBearerModRes->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABModifyItemBearerModRes: { S1ap_E_RABModifyItemBearerModRes_t *s1apERABModifyItemBearerModRes_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABModifyItemBearerModRes, (void**)&s1apERABModifyItemBearerModRes_p); if (tempDecoded < 0 || s1apERABModifyItemBearerModRes_p == NULL) { d_error("Decoding of IE e_RABModifyItemBearerModRes for message S1ap_E_RABModifyListBearerModRes failed"); if (s1apERABModifyItemBearerModRes_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABModifyItemBearerModRes, s1apERABModifyItemBearerModRes_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABModifyListBearerModResIEs->s1ap_E_RABModifyItemBearerModRes, s1apERABModifyItemBearerModRes_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rabtobesetuplistctxtsureq( S1ap_E_RABToBeSetupListCtxtSUReq_IEs_t *s1ap_E_RABToBeSetupListCtxtSUReqIEs, S1ap_E_RABToBeSetupListCtxtSUReq_t *s1ap_E_RABToBeSetupListCtxtSUReq) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABToBeSetupListCtxtSUReq, return -1, "Null param"); d_assert(s1ap_E_RABToBeSetupListCtxtSUReqIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABToBeSetupListCtxtSUReq->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABToBeSetupListCtxtSUReq->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABToBeSetupItemCtxtSUReq: { S1ap_E_RABToBeSetupItemCtxtSUReq_t *s1apERABToBeSetupItemCtxtSUReq_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSetupItemCtxtSUReq, (void**)&s1apERABToBeSetupItemCtxtSUReq_p); if (tempDecoded < 0 || s1apERABToBeSetupItemCtxtSUReq_p == NULL) { d_error("Decoding of IE e_RABToBeSetupItemCtxtSUReq for message S1ap_E_RABToBeSetupListCtxtSUReq failed"); if (s1apERABToBeSetupItemCtxtSUReq_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupItemCtxtSUReq, s1apERABToBeSetupItemCtxtSUReq_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABToBeSetupListCtxtSUReqIEs->s1ap_E_RABToBeSetupItemCtxtSUReq, s1apERABToBeSetupItemCtxtSUReq_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_e_rabinformationlist( S1ap_E_RABInformationList_IEs_t *s1ap_E_RABInformationListIEs, S1ap_E_RABInformationList_t *s1ap_E_RABInformationList) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_E_RABInformationList, return -1, "Null param"); d_assert(s1ap_E_RABInformationListIEs, return -1, "Null param"); for (i = 0; i < s1ap_E_RABInformationList->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_E_RABInformationList->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_E_RABInformationListItem: { S1ap_E_RABInformationListItem_t *s1apERABInformationListItem_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABInformationListItem, (void**)&s1apERABInformationListItem_p); if (tempDecoded < 0 || s1apERABInformationListItem_p == NULL) { d_error("Decoding of IE e_RABInformationListItem for message S1ap_E_RABInformationList failed"); if (s1apERABInformationListItem_p) ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABInformationListItem, s1apERABInformationListItem_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_E_RABInformationListIEs->s1ap_E_RABInformationList, s1apERABInformationListItem_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; } int s1ap_decode_s1ap_ue_associatedlogicals1_connectionlistresack( S1ap_UE_associatedLogicalS1_ConnectionListResAck_IEs_t *s1ap_UE_associatedLogicalS1_ConnectionListResAckIEs, S1ap_UE_associatedLogicalS1_ConnectionListResAck_t *s1ap_UE_associatedLogicalS1_ConnectionListResAck) { int i, decoded = 0; int tempDecoded = 0; d_assert(s1ap_UE_associatedLogicalS1_ConnectionListResAck, return -1, "Null param"); d_assert(s1ap_UE_associatedLogicalS1_ConnectionListResAckIEs, return -1, "Null param"); for (i = 0; i < s1ap_UE_associatedLogicalS1_ConnectionListResAck->list.count; i++) { S1ap_IE_t *ie_p = (S1ap_IE_t *)s1ap_UE_associatedLogicalS1_ConnectionListResAck->list.array[i]; switch (ie_p->id) { case S1ap_ProtocolIE_ID_id_UE_associatedLogicalS1_ConnectionItem: { S1ap_UE_associatedLogicalS1_ConnectionItem_t *s1apUEassociatedLogicalS1ConnectionItem_p = NULL; tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, (void**)&s1apUEassociatedLogicalS1ConnectionItem_p); if (tempDecoded < 0 || s1apUEassociatedLogicalS1ConnectionItem_p == NULL) { d_error("Decoding of IE uE_associatedLogicalS1_ConnectionItem for message S1ap_UE_associatedLogicalS1_ConnectionListResAck failed"); if (s1apUEassociatedLogicalS1ConnectionItem_p) ASN_STRUCT_FREE(asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, s1apUEassociatedLogicalS1ConnectionItem_p); return -1; } decoded += tempDecoded; ASN_SEQUENCE_ADD(&s1ap_UE_associatedLogicalS1_ConnectionListResAckIEs->s1ap_UE_associatedLogicalS1_ConnectionItemResAck, s1apUEassociatedLogicalS1ConnectionItem_p); } break; default: d_error("Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies", (int)ie_p->id); return -1; } } return decoded; }