Pre-ci test passed git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4000 818b1a75-f10b-46b9-bf7c-635c3b92a50f
3721 lines
150 KiB
C
3721 lines
150 KiB
C
/*******************************************************************************
|
|
|
|
Eurecom OpenAirInterface
|
|
Copyright(c) 1999 - 2012 Eurecom
|
|
|
|
This program is free software; you can redistribute it and/or modify it
|
|
under the terms and conditions of the GNU General Public License,
|
|
version 2, as published by the Free Software Foundation.
|
|
|
|
This program is distributed in the hope it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
this program; if not, write to the Free Software Foundation, Inc.,
|
|
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
The full GNU General Public License is included in this distribution in
|
|
the file called "COPYING".
|
|
|
|
Contact Information
|
|
Openair Admin: openair_admin@eurecom.fr
|
|
Openair Tech : openair_tech@eurecom.fr
|
|
Forums : http://forums.eurecom.fr/openairinterface
|
|
Address : EURECOM, Campus SophiaTech, 450 Route des Chappes
|
|
06410 Biot FRANCE
|
|
|
|
*******************************************************************************/
|
|
|
|
/*******************************************************************************
|
|
* This file had been created by asn1tostruct.py script v0.3
|
|
* Please do not modify it directly.
|
|
* Created on: 2012-11-13 11:44:11.998347
|
|
* from /homes/roux/trunk-clean/openair2/S1AP/MESSAGES/ASN1/R9.8/S1AP-PDU-Contents.asn
|
|
******************************************************************************/
|
|
#include "s1ap_common.h"
|
|
#include "s1ap_ies_defs.h"
|
|
|
|
int s1ap_encode_mmeconfigurationupdateies(
|
|
MMEConfigurationUpdate_t *mmeConfigurationUpdate,
|
|
MMEConfigurationUpdateIEs_t *mmeConfigurationUpdateIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
/* Optional field */
|
|
if ((mmeConfigurationUpdateIEs->presenceMask & MMECONFIGURATIONUPDATEIES_MMENAME_PRESENT)
|
|
== MMECONFIGURATIONUPDATEIES_MMENAME_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MMEname,
|
|
Criticality_ignore,
|
|
&asn_DEF_MMEname,
|
|
&mmeConfigurationUpdateIEs->mmEname)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&mmeConfigurationUpdate->mmeConfigurationUpdate_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((mmeConfigurationUpdateIEs->presenceMask & MMECONFIGURATIONUPDATEIES_SERVEDGUMMEIS_PRESENT)
|
|
== MMECONFIGURATIONUPDATEIES_SERVEDGUMMEIS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_ServedGUMMEIs,
|
|
Criticality_reject,
|
|
&asn_DEF_ServedGUMMEIs,
|
|
&mmeConfigurationUpdateIEs->servedGUMMEIs)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&mmeConfigurationUpdate->mmeConfigurationUpdate_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((mmeConfigurationUpdateIEs->presenceMask & MMECONFIGURATIONUPDATEIES_RELATIVEMMECAPACITY_PRESENT)
|
|
== MMECONFIGURATIONUPDATEIES_RELATIVEMMECAPACITY_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_RelativeMMECapacity,
|
|
Criticality_reject,
|
|
&asn_DEF_RelativeMMECapacity,
|
|
&mmeConfigurationUpdateIEs->relativeMMECapacity)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&mmeConfigurationUpdate->mmeConfigurationUpdate_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_uecontextmodificationrequesties(
|
|
UEContextModificationRequest_t *ueContextModificationRequest,
|
|
UEContextModificationRequestIEs_t *ueContextModificationRequestIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&ueContextModificationRequestIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextModificationRequest->ueContextModificationRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&ueContextModificationRequestIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextModificationRequest->ueContextModificationRequest_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((ueContextModificationRequestIEs->presenceMask & UECONTEXTMODIFICATIONREQUESTIES_SECURITYKEY_PRESENT)
|
|
== UECONTEXTMODIFICATIONREQUESTIES_SECURITYKEY_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SecurityKey,
|
|
Criticality_reject,
|
|
&asn_DEF_SecurityKey,
|
|
&ueContextModificationRequestIEs->securityKey)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextModificationRequest->ueContextModificationRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((ueContextModificationRequestIEs->presenceMask & UECONTEXTMODIFICATIONREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT)
|
|
== UECONTEXTMODIFICATIONREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SubscriberProfileIDforRFP,
|
|
Criticality_ignore,
|
|
&asn_DEF_SubscriberProfileIDforRFP,
|
|
&ueContextModificationRequestIEs->subscriberProfileIDforRFP)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextModificationRequest->ueContextModificationRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((ueContextModificationRequestIEs->presenceMask & UECONTEXTMODIFICATIONREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT)
|
|
== UECONTEXTMODIFICATIONREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_uEaggregateMaximumBitrate,
|
|
Criticality_ignore,
|
|
&asn_DEF_UEAggregateMaximumBitrate,
|
|
&ueContextModificationRequestIEs->uEaggregateMaximumBitrate)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextModificationRequest->ueContextModificationRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((ueContextModificationRequestIEs->presenceMask & UECONTEXTMODIFICATIONREQUESTIES_CSFALLBACKINDICATOR_PRESENT)
|
|
== UECONTEXTMODIFICATIONREQUESTIES_CSFALLBACKINDICATOR_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CSFallbackIndicator,
|
|
Criticality_reject,
|
|
&asn_DEF_CSFallbackIndicator,
|
|
&ueContextModificationRequestIEs->csFallbackIndicator)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextModificationRequest->ueContextModificationRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((ueContextModificationRequestIEs->presenceMask & UECONTEXTMODIFICATIONREQUESTIES_UESECURITYCAPABILITIES_PRESENT)
|
|
== UECONTEXTMODIFICATIONREQUESTIES_UESECURITYCAPABILITIES_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_UESecurityCapabilities,
|
|
Criticality_reject,
|
|
&asn_DEF_UESecurityCapabilities,
|
|
&ueContextModificationRequestIEs->ueSecurityCapabilities)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextModificationRequest->ueContextModificationRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((ueContextModificationRequestIEs->presenceMask & UECONTEXTMODIFICATIONREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT)
|
|
== UECONTEXTMODIFICATIONREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CSGMembershipStatus,
|
|
Criticality_ignore,
|
|
&asn_DEF_CSGMembershipStatus,
|
|
&ueContextModificationRequestIEs->csgMembershipStatus)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextModificationRequest->ueContextModificationRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((ueContextModificationRequestIEs->presenceMask & UECONTEXTMODIFICATIONREQUESTIES_LAI_PRESENT)
|
|
== UECONTEXTMODIFICATIONREQUESTIES_LAI_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_RegisteredLAI,
|
|
Criticality_ignore,
|
|
&asn_DEF_LAI,
|
|
&ueContextModificationRequestIEs->registeredLAI)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextModificationRequest->ueContextModificationRequest_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_enbdirectinformationtransferies(
|
|
ENBDirectInformationTransfer_t *eNBDirectInformationTransfer,
|
|
ENBDirectInformationTransferIEs_t *enbDirectInformationTransferIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Inter_SystemInformationTransferTypeEDT,
|
|
Criticality_reject,
|
|
&asn_DEF_Inter_SystemInformationTransferType,
|
|
&enbDirectInformationTransferIEs->inter_SystemInformationTransferTypeEDT)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&eNBDirectInformationTransfer->eNBDirectInformationTransfer_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_resetacknowledgeies(
|
|
ResetAcknowledge_t *resetAcknowledge,
|
|
ResetAcknowledgeIEs_t *resetAcknowledgeIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
/* Optional field */
|
|
if ((resetAcknowledgeIEs->presenceMask & RESETACKNOWLEDGEIES_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRESACK_PRESENT)
|
|
== RESETACKNOWLEDGEIES_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRESACK_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_UE_associatedLogicalS1_ConnectionListResAck,
|
|
Criticality_ignore,
|
|
&asn_DEF_UE_associatedLogicalS1_ConnectionListResAck,
|
|
&resetAcknowledgeIEs->uE_associatedLogicalS1_ConnectionListResAck)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&resetAcknowledge->resetAcknowledge_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((resetAcknowledgeIEs->presenceMask & RESETACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== RESETACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&resetAcknowledgeIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&resetAcknowledge->resetAcknowledge_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_pagingies(
|
|
Paging_t *paging,
|
|
PagingIEs_t *pagingIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_UEIdentityIndexValue,
|
|
Criticality_ignore,
|
|
&asn_DEF_UEIdentityIndexValue,
|
|
&pagingIEs->ueIdentityIndexValue)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&paging->paging_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_UEPagingID,
|
|
Criticality_ignore,
|
|
&asn_DEF_UEPagingID,
|
|
&pagingIEs->uePagingID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&paging->paging_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((pagingIEs->presenceMask & PAGINGIES_PAGINGDRX_PRESENT)
|
|
== PAGINGIES_PAGINGDRX_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_pagingDRX,
|
|
Criticality_ignore,
|
|
&asn_DEF_PagingDRX,
|
|
&pagingIEs->pagingDRX)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&paging->paging_ies.list, ie);
|
|
}
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CNDomain,
|
|
Criticality_ignore,
|
|
&asn_DEF_CNDomain,
|
|
&pagingIEs->cnDomain)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&paging->paging_ies.list, ie);
|
|
|
|
TAIList_t taiList;
|
|
|
|
memset(&taiList, 0, sizeof(TAIList_t));
|
|
|
|
if (s1ap_encode_tailist(&taiList, &pagingIEs->taiList) < 0) return -1;
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TAIList,
|
|
Criticality_ignore,
|
|
&asn_DEF_TAIList,
|
|
&taiList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&paging->paging_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((pagingIEs->presenceMask & PAGINGIES_CSG_IDLIST_PRESENT)
|
|
== PAGINGIES_CSG_IDLIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CSG_IdList,
|
|
Criticality_ignore,
|
|
&asn_DEF_CSG_IdList,
|
|
&pagingIEs->csG_IdList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&paging->paging_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_pathswitchrequesties(
|
|
PathSwitchRequest_t *pathSwitchRequest,
|
|
PathSwitchRequestIEs_t *pathSwitchRequestIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&pathSwitchRequestIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequest->pathSwitchRequest_ies.list, ie);
|
|
|
|
E_RABToBeSwitchedDLList_t e_RABToBeSwitchedDLList;
|
|
|
|
memset(&e_RABToBeSwitchedDLList, 0, sizeof(E_RABToBeSwitchedDLList_t));
|
|
|
|
if (s1ap_encode_e_rabtobeswitcheddllist(&e_RABToBeSwitchedDLList, &pathSwitchRequestIEs->e_RABToBeSwitchedDLList) < 0) return -1;
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABToBeSwitchedDLList,
|
|
Criticality_reject,
|
|
&asn_DEF_E_RABToBeSwitchedDLList,
|
|
&e_RABToBeSwitchedDLList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequest->pathSwitchRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SourceMME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&pathSwitchRequestIEs->sourceMME_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequest->pathSwitchRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_EUTRAN_CGI,
|
|
Criticality_ignore,
|
|
&asn_DEF_EUTRAN_CGI,
|
|
&pathSwitchRequestIEs->eutran_cgi)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequest->pathSwitchRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TAI,
|
|
Criticality_ignore,
|
|
&asn_DEF_TAI,
|
|
&pathSwitchRequestIEs->tai)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequest->pathSwitchRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_UESecurityCapabilities,
|
|
Criticality_ignore,
|
|
&asn_DEF_UESecurityCapabilities,
|
|
&pathSwitchRequestIEs->ueSecurityCapabilities)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequest->pathSwitchRequest_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_deactivatetraceies(
|
|
DeactivateTrace_t *deactivateTrace,
|
|
DeactivateTraceIEs_t *deactivateTraceIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&deactivateTraceIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&deactivateTrace->deactivateTrace_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&deactivateTraceIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&deactivateTrace->deactivateTrace_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_UTRAN_Trace_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_UTRAN_Trace_ID,
|
|
&deactivateTraceIEs->e_UTRAN_Trace_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&deactivateTrace->deactivateTrace_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_locationreportingcontrolies(
|
|
LocationReportingControl_t *locationReportingControl,
|
|
LocationReportingControlIEs_t *locationReportingControlIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&locationReportingControlIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&locationReportingControl->locationReportingControl_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&locationReportingControlIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&locationReportingControl->locationReportingControl_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_RequestType,
|
|
Criticality_ignore,
|
|
&asn_DEF_RequestType,
|
|
&locationReportingControlIEs->requestType)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&locationReportingControl->locationReportingControl_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_enbconfigurationupdateacknowledgeies(
|
|
ENBConfigurationUpdateAcknowledge_t *eNBConfigurationUpdateAcknowledge,
|
|
ENBConfigurationUpdateAcknowledgeIEs_t *enbConfigurationUpdateAcknowledgeIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
/* Optional field */
|
|
if ((enbConfigurationUpdateAcknowledgeIEs->presenceMask & ENBCONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== ENBCONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&enbConfigurationUpdateAcknowledgeIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&eNBConfigurationUpdateAcknowledge->eNBConfigurationUpdateAcknowledge_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_handoverfailureies(
|
|
HandoverFailure_t *handoverFailure,
|
|
HandoverFailureIEs_t *handoverFailureIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&handoverFailureIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverFailure->handoverFailure_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&handoverFailureIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverFailure->handoverFailure_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((handoverFailureIEs->presenceMask & HANDOVERFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== HANDOVERFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&handoverFailureIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverFailure->handoverFailure_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_locationreportingfailureindicationies(
|
|
LocationReportingFailureIndication_t *locationReportingFailureIndication,
|
|
LocationReportingFailureIndicationIEs_t *locationReportingFailureIndicationIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&locationReportingFailureIndicationIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&locationReportingFailureIndication->locationReportingFailureIndication_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&locationReportingFailureIndicationIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&locationReportingFailureIndication->locationReportingFailureIndication_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&locationReportingFailureIndicationIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&locationReportingFailureIndication->locationReportingFailureIndication_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_downlinknastransporties(
|
|
DownlinkNASTransport_t *downlinkNASTransport,
|
|
DownlinkNASTransportIEs_t *downlinkNASTransportIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&downlinkNASTransportIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkNASTransport->downlinkNASTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&downlinkNASTransportIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkNASTransport->downlinkNASTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_NAS_PDU,
|
|
Criticality_reject,
|
|
&asn_DEF_NAS_PDU,
|
|
&downlinkNASTransportIEs->nas_pdu)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkNASTransport->downlinkNASTransport_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((downlinkNASTransportIEs->presenceMask & DOWNLINKNASTRANSPORTIES_HANDOVERRESTRICTIONLIST_PRESENT)
|
|
== DOWNLINKNASTRANSPORTIES_HANDOVERRESTRICTIONLIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_HandoverRestrictionList,
|
|
Criticality_ignore,
|
|
&asn_DEF_HandoverRestrictionList,
|
|
&downlinkNASTransportIEs->handoverRestrictionList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkNASTransport->downlinkNASTransport_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_mmeconfigurationupdatefailureies(
|
|
MMEConfigurationUpdateFailure_t *mmeConfigurationUpdateFailure,
|
|
MMEConfigurationUpdateFailureIEs_t *mmeConfigurationUpdateFailureIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&mmeConfigurationUpdateFailureIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&mmeConfigurationUpdateFailure->mmeConfigurationUpdateFailure_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((mmeConfigurationUpdateFailureIEs->presenceMask & MMECONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT)
|
|
== MMECONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TimeToWait,
|
|
Criticality_ignore,
|
|
&asn_DEF_TimeToWait,
|
|
&mmeConfigurationUpdateFailureIEs->timeToWait)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&mmeConfigurationUpdateFailure->mmeConfigurationUpdateFailure_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((mmeConfigurationUpdateFailureIEs->presenceMask & MMECONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== MMECONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&mmeConfigurationUpdateFailureIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&mmeConfigurationUpdateFailure->mmeConfigurationUpdateFailure_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_uecontextreleasecompleteies(
|
|
UEContextReleaseComplete_t *ueContextReleaseComplete,
|
|
UEContextReleaseCompleteIEs_t *ueContextReleaseCompleteIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&ueContextReleaseCompleteIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextReleaseComplete->ueContextReleaseComplete_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&ueContextReleaseCompleteIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextReleaseComplete->ueContextReleaseComplete_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((ueContextReleaseCompleteIEs->presenceMask & UECONTEXTRELEASECOMPLETEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== UECONTEXTRELEASECOMPLETEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&ueContextReleaseCompleteIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextReleaseComplete->ueContextReleaseComplete_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_s1setupresponseies(
|
|
S1SetupResponse_t *s1SetupResponse,
|
|
S1SetupResponseIEs_t *s1SetupResponseIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
/* Optional field */
|
|
if ((s1SetupResponseIEs->presenceMask & S1SETUPRESPONSEIES_MMENAME_PRESENT)
|
|
== S1SETUPRESPONSEIES_MMENAME_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MMEname,
|
|
Criticality_ignore,
|
|
&asn_DEF_MMEname,
|
|
&s1SetupResponseIEs->mmEname)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&s1SetupResponse->s1SetupResponse_ies.list, ie);
|
|
}
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_ServedGUMMEIs,
|
|
Criticality_reject,
|
|
&asn_DEF_ServedGUMMEIs,
|
|
&s1SetupResponseIEs->servedGUMMEIs)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&s1SetupResponse->s1SetupResponse_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_RelativeMMECapacity,
|
|
Criticality_ignore,
|
|
&asn_DEF_RelativeMMECapacity,
|
|
&s1SetupResponseIEs->relativeMMECapacity)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&s1SetupResponse->s1SetupResponse_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((s1SetupResponseIEs->presenceMask & S1SETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== S1SETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&s1SetupResponseIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&s1SetupResponse->s1SetupResponse_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_handoverpreparationfailureies(
|
|
HandoverPreparationFailure_t *handoverPreparationFailure,
|
|
HandoverPreparationFailureIEs_t *handoverPreparationFailureIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&handoverPreparationFailureIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverPreparationFailure->handoverPreparationFailure_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&handoverPreparationFailureIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverPreparationFailure->handoverPreparationFailure_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&handoverPreparationFailureIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverPreparationFailure->handoverPreparationFailure_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((handoverPreparationFailureIEs->presenceMask & HANDOVERPREPARATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== HANDOVERPREPARATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&handoverPreparationFailureIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverPreparationFailure->handoverPreparationFailure_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_killresponseies(
|
|
KillResponse_t *killResponse,
|
|
KillResponseIEs_t *killResponseIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MessageIdentifier,
|
|
Criticality_reject,
|
|
&asn_DEF_MessageIdentifier,
|
|
&killResponseIEs->messageIdentifier)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&killResponse->killResponse_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SerialNumber,
|
|
Criticality_reject,
|
|
&asn_DEF_SerialNumber,
|
|
&killResponseIEs->serialNumber)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&killResponse->killResponse_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((killResponseIEs->presenceMask & KILLRESPONSEIES_BROADCASTCANCELLEDAREALIST_PRESENT)
|
|
== KILLRESPONSEIES_BROADCASTCANCELLEDAREALIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_BroadcastCancelledAreaList,
|
|
Criticality_ignore,
|
|
&asn_DEF_BroadcastCancelledAreaList,
|
|
&killResponseIEs->broadcastCancelledAreaList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&killResponse->killResponse_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((killResponseIEs->presenceMask & KILLRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== KILLRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&killResponseIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&killResponse->killResponse_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_uplinkueassociatedlppatransporties(
|
|
UplinkUEAssociatedLPPaTransport_t *uplinkUEAssociatedLPPaTransport,
|
|
UplinkUEAssociatedLPPaTransportIEs_t *uplinkUEAssociatedLPPaTransportIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&uplinkUEAssociatedLPPaTransportIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkUEAssociatedLPPaTransport->uplinkUEAssociatedLPPaTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&uplinkUEAssociatedLPPaTransportIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkUEAssociatedLPPaTransport->uplinkUEAssociatedLPPaTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Routing_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_Routing_ID,
|
|
&uplinkUEAssociatedLPPaTransportIEs->routing_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkUEAssociatedLPPaTransport->uplinkUEAssociatedLPPaTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_LPPa_PDU,
|
|
Criticality_reject,
|
|
&asn_DEF_LPPa_PDU,
|
|
&uplinkUEAssociatedLPPaTransportIEs->lpPa_PDU)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkUEAssociatedLPPaTransport->uplinkUEAssociatedLPPaTransport_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_enbconfigurationupdateies(
|
|
ENBConfigurationUpdate_t *eNBConfigurationUpdate,
|
|
ENBConfigurationUpdateIEs_t *enbConfigurationUpdateIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
/* Optional field */
|
|
if ((enbConfigurationUpdateIEs->presenceMask & ENBCONFIGURATIONUPDATEIES_ENBNAME_PRESENT)
|
|
== ENBCONFIGURATIONUPDATEIES_ENBNAME_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNBname,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENBname,
|
|
&enbConfigurationUpdateIEs->eNBname)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&eNBConfigurationUpdate->eNBConfigurationUpdate_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((enbConfigurationUpdateIEs->presenceMask & ENBCONFIGURATIONUPDATEIES_SUPPORTEDTAS_PRESENT)
|
|
== ENBCONFIGURATIONUPDATEIES_SUPPORTEDTAS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SupportedTAs,
|
|
Criticality_reject,
|
|
&asn_DEF_SupportedTAs,
|
|
&enbConfigurationUpdateIEs->supportedTAs)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&eNBConfigurationUpdate->eNBConfigurationUpdate_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((enbConfigurationUpdateIEs->presenceMask & ENBCONFIGURATIONUPDATEIES_CSG_IDLIST_PRESENT)
|
|
== ENBCONFIGURATIONUPDATEIES_CSG_IDLIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CSG_IdList,
|
|
Criticality_reject,
|
|
&asn_DEF_CSG_IdList,
|
|
&enbConfigurationUpdateIEs->csG_IdList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&eNBConfigurationUpdate->eNBConfigurationUpdate_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((enbConfigurationUpdateIEs->presenceMask & ENBCONFIGURATIONUPDATEIES_PAGINGDRX_PRESENT)
|
|
== ENBCONFIGURATIONUPDATEIES_PAGINGDRX_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_DefaultPagingDRX,
|
|
Criticality_ignore,
|
|
&asn_DEF_PagingDRX,
|
|
&enbConfigurationUpdateIEs->defaultPagingDRX)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&eNBConfigurationUpdate->eNBConfigurationUpdate_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_initialcontextsetuprequesties(
|
|
InitialContextSetupRequest_t *initialContextSetupRequest,
|
|
InitialContextSetupRequestIEs_t *initialContextSetupRequestIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&initialContextSetupRequestIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&initialContextSetupRequestIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_uEaggregateMaximumBitrate,
|
|
Criticality_reject,
|
|
&asn_DEF_UEAggregateMaximumBitrate,
|
|
&initialContextSetupRequestIEs->uEaggregateMaximumBitrate)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
|
|
E_RABToBeSetupListCtxtSUReq_t e_RABToBeSetupListCtxtSUReq;
|
|
|
|
memset(&e_RABToBeSetupListCtxtSUReq, 0, sizeof(E_RABToBeSetupListCtxtSUReq_t));
|
|
|
|
if (s1ap_encode_e_rabtobesetuplistctxtsureq(&e_RABToBeSetupListCtxtSUReq, &initialContextSetupRequestIEs->e_RABToBeSetupListCtxtSUReq) < 0) return -1;
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABToBeSetupListCtxtSUReq,
|
|
Criticality_reject,
|
|
&asn_DEF_E_RABToBeSetupListCtxtSUReq,
|
|
&e_RABToBeSetupListCtxtSUReq)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_UESecurityCapabilities,
|
|
Criticality_reject,
|
|
&asn_DEF_UESecurityCapabilities,
|
|
&initialContextSetupRequestIEs->ueSecurityCapabilities)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SecurityKey,
|
|
Criticality_reject,
|
|
&asn_DEF_SecurityKey,
|
|
&initialContextSetupRequestIEs->securityKey)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((initialContextSetupRequestIEs->presenceMask & INITIALCONTEXTSETUPREQUESTIES_TRACEACTIVATION_PRESENT)
|
|
== INITIALCONTEXTSETUPREQUESTIES_TRACEACTIVATION_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TraceActivation,
|
|
Criticality_ignore,
|
|
&asn_DEF_TraceActivation,
|
|
&initialContextSetupRequestIEs->traceActivation)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((initialContextSetupRequestIEs->presenceMask & INITIALCONTEXTSETUPREQUESTIES_HANDOVERRESTRICTIONLIST_PRESENT)
|
|
== INITIALCONTEXTSETUPREQUESTIES_HANDOVERRESTRICTIONLIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_HandoverRestrictionList,
|
|
Criticality_ignore,
|
|
&asn_DEF_HandoverRestrictionList,
|
|
&initialContextSetupRequestIEs->handoverRestrictionList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((initialContextSetupRequestIEs->presenceMask & INITIALCONTEXTSETUPREQUESTIES_UERADIOCAPABILITY_PRESENT)
|
|
== INITIALCONTEXTSETUPREQUESTIES_UERADIOCAPABILITY_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_UERadioCapability,
|
|
Criticality_ignore,
|
|
&asn_DEF_UERadioCapability,
|
|
&initialContextSetupRequestIEs->ueRadioCapability)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((initialContextSetupRequestIEs->presenceMask & INITIALCONTEXTSETUPREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT)
|
|
== INITIALCONTEXTSETUPREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SubscriberProfileIDforRFP,
|
|
Criticality_ignore,
|
|
&asn_DEF_SubscriberProfileIDforRFP,
|
|
&initialContextSetupRequestIEs->subscriberProfileIDforRFP)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((initialContextSetupRequestIEs->presenceMask & INITIALCONTEXTSETUPREQUESTIES_CSFALLBACKINDICATOR_PRESENT)
|
|
== INITIALCONTEXTSETUPREQUESTIES_CSFALLBACKINDICATOR_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CSFallbackIndicator,
|
|
Criticality_reject,
|
|
&asn_DEF_CSFallbackIndicator,
|
|
&initialContextSetupRequestIEs->csFallbackIndicator)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((initialContextSetupRequestIEs->presenceMask & INITIALCONTEXTSETUPREQUESTIES_SRVCCOPERATIONPOSSIBLE_PRESENT)
|
|
== INITIALCONTEXTSETUPREQUESTIES_SRVCCOPERATIONPOSSIBLE_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SRVCCOperationPossible,
|
|
Criticality_ignore,
|
|
&asn_DEF_SRVCCOperationPossible,
|
|
&initialContextSetupRequestIEs->srvccOperationPossible)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((initialContextSetupRequestIEs->presenceMask & INITIALCONTEXTSETUPREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT)
|
|
== INITIALCONTEXTSETUPREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CSGMembershipStatus,
|
|
Criticality_ignore,
|
|
&asn_DEF_CSGMembershipStatus,
|
|
&initialContextSetupRequestIEs->csgMembershipStatus)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((initialContextSetupRequestIEs->presenceMask & INITIALCONTEXTSETUPREQUESTIES_LAI_PRESENT)
|
|
== INITIALCONTEXTSETUPREQUESTIES_LAI_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_RegisteredLAI,
|
|
Criticality_ignore,
|
|
&asn_DEF_LAI,
|
|
&initialContextSetupRequestIEs->registeredLAI)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupRequest->initialContextSetupRequest_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_mmedirectinformationtransferies(
|
|
MMEDirectInformationTransfer_t *mmeDirectInformationTransfer,
|
|
MMEDirectInformationTransferIEs_t *mmeDirectInformationTransferIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Inter_SystemInformationTransferTypeMDT,
|
|
Criticality_reject,
|
|
&asn_DEF_Inter_SystemInformationTransferType,
|
|
&mmeDirectInformationTransferIEs->inter_SystemInformationTransferTypeMDT)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&mmeDirectInformationTransfer->mmeDirectInformationTransfer_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_uplinknonueassociatedlppatransporties(
|
|
UplinkNonUEAssociatedLPPaTransport_t *uplinkNonUEAssociatedLPPaTransport,
|
|
UplinkNonUEAssociatedLPPaTransportIEs_t *uplinkNonUEAssociatedLPPaTransportIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Routing_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_Routing_ID,
|
|
&uplinkNonUEAssociatedLPPaTransportIEs->routing_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkNonUEAssociatedLPPaTransport->uplinkNonUEAssociatedLPPaTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_LPPa_PDU,
|
|
Criticality_reject,
|
|
&asn_DEF_LPPa_PDU,
|
|
&uplinkNonUEAssociatedLPPaTransportIEs->lpPa_PDU)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkNonUEAssociatedLPPaTransport->uplinkNonUEAssociatedLPPaTransport_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_reseties(
|
|
Reset_t *reset,
|
|
ResetIEs_t *resetIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&resetIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&reset->reset_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_ResetType,
|
|
Criticality_reject,
|
|
&asn_DEF_ResetType,
|
|
&resetIEs->resetType)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&reset->reset_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_uecontextreleasecommandies(
|
|
UEContextReleaseCommand_t *ueContextReleaseCommand,
|
|
UEContextReleaseCommandIEs_t *ueContextReleaseCommandIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_UE_S1AP_IDs,
|
|
Criticality_reject,
|
|
&asn_DEF_UE_S1AP_IDs,
|
|
&ueContextReleaseCommandIEs->uE_S1AP_IDs)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextReleaseCommand->ueContextReleaseCommand_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&ueContextReleaseCommandIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextReleaseCommand->ueContextReleaseCommand_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_uecapabilityinfoindicationies(
|
|
UECapabilityInfoIndication_t *ueCapabilityInfoIndication,
|
|
UECapabilityInfoIndicationIEs_t *ueCapabilityInfoIndicationIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&ueCapabilityInfoIndicationIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueCapabilityInfoIndication->ueCapabilityInfoIndication_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&ueCapabilityInfoIndicationIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueCapabilityInfoIndication->ueCapabilityInfoIndication_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_UERadioCapability,
|
|
Criticality_ignore,
|
|
&asn_DEF_UERadioCapability,
|
|
&ueCapabilityInfoIndicationIEs->ueRadioCapability)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueCapabilityInfoIndication->ueCapabilityInfoIndication_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_uplinks1cdma2000tunnelingies(
|
|
UplinkS1cdma2000tunneling_t *uplinkS1cdma2000tunneling,
|
|
UplinkS1cdma2000tunnelingIEs_t *uplinkS1cdma2000tunnelingIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&uplinkS1cdma2000tunnelingIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkS1cdma2000tunneling->uplinkS1cdma2000tunneling_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&uplinkS1cdma2000tunnelingIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkS1cdma2000tunneling->uplinkS1cdma2000tunneling_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_cdma2000RATType,
|
|
Criticality_reject,
|
|
&asn_DEF_Cdma2000RATType,
|
|
&uplinkS1cdma2000tunnelingIEs->cdma2000RATType)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkS1cdma2000tunneling->uplinkS1cdma2000tunneling_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_cdma2000SectorID,
|
|
Criticality_reject,
|
|
&asn_DEF_Cdma2000SectorID,
|
|
&uplinkS1cdma2000tunnelingIEs->cdma2000SectorID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkS1cdma2000tunneling->uplinkS1cdma2000tunneling_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((uplinkS1cdma2000tunnelingIEs->presenceMask & UPLINKS1CDMA2000TUNNELINGIES_CDMA2000HOREQUIREDINDICATION_PRESENT)
|
|
== UPLINKS1CDMA2000TUNNELINGIES_CDMA2000HOREQUIREDINDICATION_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_cdma2000HORequiredIndication,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cdma2000HORequiredIndication,
|
|
&uplinkS1cdma2000tunnelingIEs->cdma2000HORequiredIndication)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkS1cdma2000tunneling->uplinkS1cdma2000tunneling_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((uplinkS1cdma2000tunnelingIEs->presenceMask & UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXSRVCCINFO_PRESENT)
|
|
== UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXSRVCCINFO_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_cdma2000OneXSRVCCInfo,
|
|
Criticality_reject,
|
|
&asn_DEF_Cdma2000OneXSRVCCInfo,
|
|
&uplinkS1cdma2000tunnelingIEs->cdma2000OneXSRVCCInfo)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkS1cdma2000tunneling->uplinkS1cdma2000tunneling_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((uplinkS1cdma2000tunnelingIEs->presenceMask & UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXRAND_PRESENT)
|
|
== UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXRAND_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_cdma2000OneXRAND,
|
|
Criticality_reject,
|
|
&asn_DEF_Cdma2000OneXRAND,
|
|
&uplinkS1cdma2000tunnelingIEs->cdma2000OneXRAND)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkS1cdma2000tunneling->uplinkS1cdma2000tunneling_ies.list, ie);
|
|
}
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_cdma2000PDU,
|
|
Criticality_reject,
|
|
&asn_DEF_Cdma2000PDU,
|
|
&uplinkS1cdma2000tunnelingIEs->cdma2000PDU)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkS1cdma2000tunneling->uplinkS1cdma2000tunneling_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((uplinkS1cdma2000tunnelingIEs->presenceMask & UPLINKS1CDMA2000TUNNELINGIES_EUTRANROUNDTRIPDELAYESTIMATIONINFO_PRESENT)
|
|
== UPLINKS1CDMA2000TUNNELINGIES_EUTRANROUNDTRIPDELAYESTIMATIONINFO_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_EUTRANRoundTripDelayEstimationInfo,
|
|
Criticality_ignore,
|
|
&asn_DEF_EUTRANRoundTripDelayEstimationInfo,
|
|
&uplinkS1cdma2000tunnelingIEs->eutranRoundTripDelayEstimationInfo)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkS1cdma2000tunneling->uplinkS1cdma2000tunneling_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_writereplacewarningresponseies(
|
|
WriteReplaceWarningResponse_t *writeReplaceWarningResponse,
|
|
WriteReplaceWarningResponseIEs_t *writeReplaceWarningResponseIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MessageIdentifier,
|
|
Criticality_reject,
|
|
&asn_DEF_MessageIdentifier,
|
|
&writeReplaceWarningResponseIEs->messageIdentifier)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningResponse->writeReplaceWarningResponse_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SerialNumber,
|
|
Criticality_reject,
|
|
&asn_DEF_SerialNumber,
|
|
&writeReplaceWarningResponseIEs->serialNumber)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningResponse->writeReplaceWarningResponse_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((writeReplaceWarningResponseIEs->presenceMask & WRITEREPLACEWARNINGRESPONSEIES_BROADCASTCOMPLETEDAREALIST_PRESENT)
|
|
== WRITEREPLACEWARNINGRESPONSEIES_BROADCASTCOMPLETEDAREALIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_BroadcastCompletedAreaList,
|
|
Criticality_ignore,
|
|
&asn_DEF_BroadcastCompletedAreaList,
|
|
&writeReplaceWarningResponseIEs->broadcastCompletedAreaList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningResponse->writeReplaceWarningResponse_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((writeReplaceWarningResponseIEs->presenceMask & WRITEREPLACEWARNINGRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== WRITEREPLACEWARNINGRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&writeReplaceWarningResponseIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningResponse->writeReplaceWarningResponse_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabreleasecommandies(
|
|
E_RABReleaseCommand_t *e_RABReleaseCommand,
|
|
E_RABReleaseCommandIEs_t *e_RABReleaseCommandIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&e_RABReleaseCommandIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseCommand->e_RABReleaseCommand_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&e_RABReleaseCommandIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseCommand->e_RABReleaseCommand_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((e_RABReleaseCommandIEs->presenceMask & E_RABRELEASECOMMANDIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT)
|
|
== E_RABRELEASECOMMANDIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_uEaggregateMaximumBitrate,
|
|
Criticality_reject,
|
|
&asn_DEF_UEAggregateMaximumBitrate,
|
|
&e_RABReleaseCommandIEs->uEaggregateMaximumBitrate)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseCommand->e_RABReleaseCommand_ies.list, ie);
|
|
}
|
|
|
|
E_RABList_t e_RABToBeReleasedList;
|
|
|
|
memset(&e_RABToBeReleasedList, 0, sizeof(E_RABList_t));
|
|
|
|
if (s1ap_encode_e_rablist(&e_RABToBeReleasedList, &e_RABReleaseCommandIEs->e_RABToBeReleasedList) < 0) return -1;
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABToBeReleasedList,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABList,
|
|
&e_RABToBeReleasedList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseCommand->e_RABReleaseCommand_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((e_RABReleaseCommandIEs->presenceMask & E_RABRELEASECOMMANDIES_NAS_PDU_PRESENT)
|
|
== E_RABRELEASECOMMANDIES_NAS_PDU_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_NAS_PDU,
|
|
Criticality_ignore,
|
|
&asn_DEF_NAS_PDU,
|
|
&e_RABReleaseCommandIEs->nas_pdu)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseCommand->e_RABReleaseCommand_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_celltraffictraceies(
|
|
CellTrafficTrace_t *cellTrafficTrace,
|
|
CellTrafficTraceIEs_t *cellTrafficTraceIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&cellTrafficTraceIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&cellTrafficTrace->cellTrafficTrace_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&cellTrafficTraceIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&cellTrafficTrace->cellTrafficTrace_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_UTRAN_Trace_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_UTRAN_Trace_ID,
|
|
&cellTrafficTraceIEs->e_UTRAN_Trace_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&cellTrafficTrace->cellTrafficTrace_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_EUTRAN_CGI,
|
|
Criticality_ignore,
|
|
&asn_DEF_EUTRAN_CGI,
|
|
&cellTrafficTraceIEs->eutran_cgi)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&cellTrafficTrace->cellTrafficTrace_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TraceCollectionEntityIPAddress,
|
|
Criticality_ignore,
|
|
&asn_DEF_TransportLayerAddress,
|
|
&cellTrafficTraceIEs->traceCollectionEntityIPAddress)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&cellTrafficTrace->cellTrafficTrace_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_pathswitchrequestfailureies(
|
|
PathSwitchRequestFailure_t *pathSwitchRequestFailure,
|
|
PathSwitchRequestFailureIEs_t *pathSwitchRequestFailureIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&pathSwitchRequestFailureIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequestFailure->pathSwitchRequestFailure_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&pathSwitchRequestFailureIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequestFailure->pathSwitchRequestFailure_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&pathSwitchRequestFailureIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequestFailure->pathSwitchRequestFailure_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((pathSwitchRequestFailureIEs->presenceMask & PATHSWITCHREQUESTFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== PATHSWITCHREQUESTFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&pathSwitchRequestFailureIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequestFailure->pathSwitchRequestFailure_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_initialcontextsetupresponseies(
|
|
InitialContextSetupResponse_t *initialContextSetupResponse,
|
|
InitialContextSetupResponseIEs_t *initialContextSetupResponseIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&initialContextSetupResponseIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupResponse->initialContextSetupResponse_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&initialContextSetupResponseIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupResponse->initialContextSetupResponse_ies.list, ie);
|
|
|
|
E_RABSetupListCtxtSURes_t e_RABSetupListCtxtSURes;
|
|
|
|
memset(&e_RABSetupListCtxtSURes, 0, sizeof(E_RABSetupListCtxtSURes_t));
|
|
|
|
if (s1ap_encode_e_rabsetuplistctxtsures(&e_RABSetupListCtxtSURes, &initialContextSetupResponseIEs->e_RABSetupListCtxtSURes) < 0) return -1;
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABSetupListCtxtSURes,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABSetupListCtxtSURes,
|
|
&e_RABSetupListCtxtSURes)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupResponse->initialContextSetupResponse_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((initialContextSetupResponseIEs->presenceMask & INITIALCONTEXTSETUPRESPONSEIES_E_RABLIST_PRESENT)
|
|
== INITIALCONTEXTSETUPRESPONSEIES_E_RABLIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABFailedToSetupListCtxtSURes,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABList,
|
|
&initialContextSetupResponseIEs->e_RABFailedToSetupListCtxtSURes)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupResponse->initialContextSetupResponse_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((initialContextSetupResponseIEs->presenceMask & INITIALCONTEXTSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== INITIALCONTEXTSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&initialContextSetupResponseIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupResponse->initialContextSetupResponse_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_mmestatustransferies(
|
|
MMEStatusTransfer_t *mmeStatusTransfer,
|
|
MMEStatusTransferIEs_t *mmeStatusTransferIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&mmeStatusTransferIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&mmeStatusTransfer->mmeStatusTransfer_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&mmeStatusTransferIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&mmeStatusTransfer->mmeStatusTransfer_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_StatusTransfer_TransparentContainer,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_StatusTransfer_TransparentContainer,
|
|
&mmeStatusTransferIEs->eNB_StatusTransfer_TransparentContainer)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&mmeStatusTransfer->mmeStatusTransfer_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_s1setuprequesties(
|
|
S1SetupRequest_t *s1SetupRequest,
|
|
S1SetupRequestIEs_t *s1SetupRequestIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Global_ENB_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_Global_ENB_ID,
|
|
&s1SetupRequestIEs->global_ENB_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&s1SetupRequest->s1SetupRequest_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((s1SetupRequestIEs->presenceMask & S1SETUPREQUESTIES_ENBNAME_PRESENT)
|
|
== S1SETUPREQUESTIES_ENBNAME_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNBname,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENBname,
|
|
&s1SetupRequestIEs->eNBname)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&s1SetupRequest->s1SetupRequest_ies.list, ie);
|
|
}
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SupportedTAs,
|
|
Criticality_reject,
|
|
&asn_DEF_SupportedTAs,
|
|
&s1SetupRequestIEs->supportedTAs)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&s1SetupRequest->s1SetupRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_DefaultPagingDRX,
|
|
Criticality_ignore,
|
|
&asn_DEF_PagingDRX,
|
|
&s1SetupRequestIEs->defaultPagingDRX)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&s1SetupRequest->s1SetupRequest_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((s1SetupRequestIEs->presenceMask & S1SETUPREQUESTIES_CSG_IDLIST_PRESENT)
|
|
== S1SETUPREQUESTIES_CSG_IDLIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CSG_IdList,
|
|
Criticality_reject,
|
|
&asn_DEF_CSG_IdList,
|
|
&s1SetupRequestIEs->csG_IdList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&s1SetupRequest->s1SetupRequest_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_handoverrequiredies(
|
|
HandoverRequired_t *handoverRequired,
|
|
HandoverRequiredIEs_t *handoverRequiredIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&handoverRequiredIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&handoverRequiredIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_HandoverType,
|
|
Criticality_reject,
|
|
&asn_DEF_HandoverType,
|
|
&handoverRequiredIEs->handoverType)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&handoverRequiredIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TargetID,
|
|
Criticality_reject,
|
|
&asn_DEF_TargetID,
|
|
&handoverRequiredIEs->targetID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((handoverRequiredIEs->presenceMask & HANDOVERREQUIREDIES_DIRECT_FORWARDING_PATH_AVAILABILITY_PRESENT)
|
|
== HANDOVERREQUIREDIES_DIRECT_FORWARDING_PATH_AVAILABILITY_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Direct_Forwarding_Path_Availability,
|
|
Criticality_ignore,
|
|
&asn_DEF_Direct_Forwarding_Path_Availability,
|
|
&handoverRequiredIEs->direct_Forwarding_Path_Availability)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((handoverRequiredIEs->presenceMask & HANDOVERREQUIREDIES_SRVCCHOINDICATION_PRESENT)
|
|
== HANDOVERREQUIREDIES_SRVCCHOINDICATION_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SRVCCHOIndication,
|
|
Criticality_reject,
|
|
&asn_DEF_SRVCCHOIndication,
|
|
&handoverRequiredIEs->srvcchoIndication)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
}
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Source_ToTarget_TransparentContainer,
|
|
Criticality_reject,
|
|
&asn_DEF_Source_ToTarget_TransparentContainer,
|
|
&handoverRequiredIEs->source_ToTarget_TransparentContainer)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((handoverRequiredIEs->presenceMask & HANDOVERREQUIREDIES_SOURCE_TOTARGET_TRANSPARENTCONTAINER_PRESENT)
|
|
== HANDOVERREQUIREDIES_SOURCE_TOTARGET_TRANSPARENTCONTAINER_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Source_ToTarget_TransparentContainer_Secondary,
|
|
Criticality_reject,
|
|
&asn_DEF_Source_ToTarget_TransparentContainer,
|
|
&handoverRequiredIEs->source_ToTarget_TransparentContainer_Secondary)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
}
|
|
|
|
/* Conditional field */
|
|
if ((handoverRequiredIEs->presenceMask & HANDOVERREQUIREDIES_MSCLASSMARK2_PRESENT)
|
|
== HANDOVERREQUIREDIES_MSCLASSMARK2_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MSClassmark2,
|
|
Criticality_reject,
|
|
&asn_DEF_MSClassmark2,
|
|
&handoverRequiredIEs->msClassmark2)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
}
|
|
|
|
/* Conditional field */
|
|
if ((handoverRequiredIEs->presenceMask & HANDOVERREQUIREDIES_MSCLASSMARK3_PRESENT)
|
|
== HANDOVERREQUIREDIES_MSCLASSMARK3_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MSClassmark3,
|
|
Criticality_ignore,
|
|
&asn_DEF_MSClassmark3,
|
|
&handoverRequiredIEs->msClassmark3)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((handoverRequiredIEs->presenceMask & HANDOVERREQUIREDIES_CSG_ID_PRESENT)
|
|
== HANDOVERREQUIREDIES_CSG_ID_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CSG_Id,
|
|
Criticality_reject,
|
|
&asn_DEF_CSG_Id,
|
|
&handoverRequiredIEs->csG_Id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((handoverRequiredIEs->presenceMask & HANDOVERREQUIREDIES_CELLACCESSMODE_PRESENT)
|
|
== HANDOVERREQUIREDIES_CELLACCESSMODE_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CellAccessMode,
|
|
Criticality_reject,
|
|
&asn_DEF_CellAccessMode,
|
|
&handoverRequiredIEs->cellAccessMode)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((handoverRequiredIEs->presenceMask & HANDOVERREQUIREDIES_PS_SERVICENOTAVAILABLE_PRESENT)
|
|
== HANDOVERREQUIREDIES_PS_SERVICENOTAVAILABLE_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_PS_ServiceNotAvailable,
|
|
Criticality_ignore,
|
|
&asn_DEF_PS_ServiceNotAvailable,
|
|
&handoverRequiredIEs->pS_ServiceNotAvailable)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequired->handoverRequired_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_uplinknastransporties(
|
|
UplinkNASTransport_t *uplinkNASTransport,
|
|
UplinkNASTransportIEs_t *uplinkNASTransportIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&uplinkNASTransportIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkNASTransport->uplinkNASTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&uplinkNASTransportIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkNASTransport->uplinkNASTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_NAS_PDU,
|
|
Criticality_reject,
|
|
&asn_DEF_NAS_PDU,
|
|
&uplinkNASTransportIEs->nas_pdu)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkNASTransport->uplinkNASTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_EUTRAN_CGI,
|
|
Criticality_ignore,
|
|
&asn_DEF_EUTRAN_CGI,
|
|
&uplinkNASTransportIEs->eutran_cgi)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkNASTransport->uplinkNASTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TAI,
|
|
Criticality_ignore,
|
|
&asn_DEF_TAI,
|
|
&uplinkNASTransportIEs->tai)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uplinkNASTransport->uplinkNASTransport_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_locationreporties(
|
|
LocationReport_t *locationReport,
|
|
LocationReportIEs_t *locationReportIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&locationReportIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&locationReport->locationReport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&locationReportIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&locationReport->locationReport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_EUTRAN_CGI,
|
|
Criticality_ignore,
|
|
&asn_DEF_EUTRAN_CGI,
|
|
&locationReportIEs->eutran_cgi)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&locationReport->locationReport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TAI,
|
|
Criticality_ignore,
|
|
&asn_DEF_TAI,
|
|
&locationReportIEs->tai)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&locationReport->locationReport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_RequestType,
|
|
Criticality_ignore,
|
|
&asn_DEF_RequestType,
|
|
&locationReportIEs->requestType)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&locationReport->locationReport_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_uecontextmodificationfailureies(
|
|
UEContextModificationFailure_t *ueContextModificationFailure,
|
|
UEContextModificationFailureIEs_t *ueContextModificationFailureIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&ueContextModificationFailureIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextModificationFailure->ueContextModificationFailure_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&ueContextModificationFailureIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextModificationFailure->ueContextModificationFailure_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&ueContextModificationFailureIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextModificationFailure->ueContextModificationFailure_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((ueContextModificationFailureIEs->presenceMask & UECONTEXTMODIFICATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== UECONTEXTMODIFICATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&ueContextModificationFailureIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextModificationFailure->ueContextModificationFailure_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_enbconfigurationtransferies(
|
|
ENBConfigurationTransfer_t *eNBConfigurationTransfer,
|
|
ENBConfigurationTransferIEs_t *enbConfigurationTransferIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
/* Optional field */
|
|
if ((enbConfigurationTransferIEs->presenceMask & ENBCONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFER_PRESENT)
|
|
== ENBCONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFER_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SONConfigurationTransferECT,
|
|
Criticality_ignore,
|
|
&asn_DEF_SONConfigurationTransfer,
|
|
&enbConfigurationTransferIEs->sonConfigurationTransferECT)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&eNBConfigurationTransfer->eNBConfigurationTransfer_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_downlinknonueassociatedlppatransporties(
|
|
DownlinkNonUEAssociatedLPPaTransport_t *downlinkNonUEAssociatedLPPaTransport,
|
|
DownlinkNonUEAssociatedLPPaTransportIEs_t *downlinkNonUEAssociatedLPPaTransportIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Routing_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_Routing_ID,
|
|
&downlinkNonUEAssociatedLPPaTransportIEs->routing_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkNonUEAssociatedLPPaTransport->downlinkNonUEAssociatedLPPaTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_LPPa_PDU,
|
|
Criticality_reject,
|
|
&asn_DEF_LPPa_PDU,
|
|
&downlinkNonUEAssociatedLPPaTransportIEs->lpPa_PDU)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkNonUEAssociatedLPPaTransport->downlinkNonUEAssociatedLPPaTransport_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_initialuemessageies(
|
|
InitialUEMessage_t *initialUEMessage,
|
|
InitialUEMessageIEs_t *initialUEMessageIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&initialUEMessageIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialUEMessage->initialUEMessage_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_NAS_PDU,
|
|
Criticality_reject,
|
|
&asn_DEF_NAS_PDU,
|
|
&initialUEMessageIEs->nas_pdu)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialUEMessage->initialUEMessage_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TAI,
|
|
Criticality_reject,
|
|
&asn_DEF_TAI,
|
|
&initialUEMessageIEs->tai)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialUEMessage->initialUEMessage_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_EUTRAN_CGI,
|
|
Criticality_ignore,
|
|
&asn_DEF_EUTRAN_CGI,
|
|
&initialUEMessageIEs->eutran_cgi)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialUEMessage->initialUEMessage_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_RRC_Establishment_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_RRC_Establishment_Cause,
|
|
&initialUEMessageIEs->rrC_Establishment_Cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialUEMessage->initialUEMessage_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((initialUEMessageIEs->presenceMask & INITIALUEMESSAGEIES_S_TMSI_PRESENT)
|
|
== INITIALUEMESSAGEIES_S_TMSI_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_S_TMSI,
|
|
Criticality_reject,
|
|
&asn_DEF_S_TMSI,
|
|
&initialUEMessageIEs->s_tmsi)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialUEMessage->initialUEMessage_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((initialUEMessageIEs->presenceMask & INITIALUEMESSAGEIES_CSG_ID_PRESENT)
|
|
== INITIALUEMESSAGEIES_CSG_ID_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CSG_Id,
|
|
Criticality_reject,
|
|
&asn_DEF_CSG_Id,
|
|
&initialUEMessageIEs->csG_Id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialUEMessage->initialUEMessage_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((initialUEMessageIEs->presenceMask & INITIALUEMESSAGEIES_GUMMEI_PRESENT)
|
|
== INITIALUEMESSAGEIES_GUMMEI_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_GUMMEI_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_GUMMEI,
|
|
&initialUEMessageIEs->gummei_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialUEMessage->initialUEMessage_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((initialUEMessageIEs->presenceMask & INITIALUEMESSAGEIES_CELLACCESSMODE_PRESENT)
|
|
== INITIALUEMESSAGEIES_CELLACCESSMODE_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CellAccessMode,
|
|
Criticality_reject,
|
|
&asn_DEF_CellAccessMode,
|
|
&initialUEMessageIEs->cellAccessMode)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialUEMessage->initialUEMessage_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabsetupresponseies(
|
|
E_RABSetupResponse_t *e_RABSetupResponse,
|
|
E_RABSetupResponseIEs_t *e_RABSetupResponseIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&e_RABSetupResponseIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABSetupResponse->e_RABSetupResponse_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&e_RABSetupResponseIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABSetupResponse->e_RABSetupResponse_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((e_RABSetupResponseIEs->presenceMask & E_RABSETUPRESPONSEIES_E_RABSETUPLISTBEARERSURES_PRESENT)
|
|
== E_RABSETUPRESPONSEIES_E_RABSETUPLISTBEARERSURES_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABSetupListBearerSURes,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABSetupListBearerSURes,
|
|
&e_RABSetupResponseIEs->e_RABSetupListBearerSURes)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABSetupResponse->e_RABSetupResponse_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((e_RABSetupResponseIEs->presenceMask & E_RABSETUPRESPONSEIES_E_RABLIST_PRESENT)
|
|
== E_RABSETUPRESPONSEIES_E_RABLIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABFailedToSetupListBearerSURes,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABList,
|
|
&e_RABSetupResponseIEs->e_RABFailedToSetupListBearerSURes)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABSetupResponse->e_RABSetupResponse_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((e_RABSetupResponseIEs->presenceMask & E_RABSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== E_RABSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&e_RABSetupResponseIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABSetupResponse->e_RABSetupResponse_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_pathswitchrequestacknowledgeies(
|
|
PathSwitchRequestAcknowledge_t *pathSwitchRequestAcknowledge,
|
|
PathSwitchRequestAcknowledgeIEs_t *pathSwitchRequestAcknowledgeIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&pathSwitchRequestAcknowledgeIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequestAcknowledge->pathSwitchRequestAcknowledge_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&pathSwitchRequestAcknowledgeIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequestAcknowledge->pathSwitchRequestAcknowledge_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((pathSwitchRequestAcknowledgeIEs->presenceMask & PATHSWITCHREQUESTACKNOWLEDGEIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT)
|
|
== PATHSWITCHREQUESTACKNOWLEDGEIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_uEaggregateMaximumBitrate,
|
|
Criticality_ignore,
|
|
&asn_DEF_UEAggregateMaximumBitrate,
|
|
&pathSwitchRequestAcknowledgeIEs->uEaggregateMaximumBitrate)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequestAcknowledge->pathSwitchRequestAcknowledge_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((pathSwitchRequestAcknowledgeIEs->presenceMask & PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABTOBESWITCHEDULLIST_PRESENT)
|
|
== PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABTOBESWITCHEDULLIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABToBeSwitchedULList,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABToBeSwitchedULList,
|
|
&pathSwitchRequestAcknowledgeIEs->e_RABToBeSwitchedULList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequestAcknowledge->pathSwitchRequestAcknowledge_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((pathSwitchRequestAcknowledgeIEs->presenceMask & PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABLIST_PRESENT)
|
|
== PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABLIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABToBeReleasedList,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABList,
|
|
&pathSwitchRequestAcknowledgeIEs->e_RABToBeReleasedList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequestAcknowledge->pathSwitchRequestAcknowledge_ies.list, ie);
|
|
}
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SecurityContext,
|
|
Criticality_reject,
|
|
&asn_DEF_SecurityContext,
|
|
&pathSwitchRequestAcknowledgeIEs->securityContext)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequestAcknowledge->pathSwitchRequestAcknowledge_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((pathSwitchRequestAcknowledgeIEs->presenceMask & PATHSWITCHREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== PATHSWITCHREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&pathSwitchRequestAcknowledgeIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&pathSwitchRequestAcknowledge->pathSwitchRequestAcknowledge_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_overloadstarties(
|
|
OverloadStart_t *overloadStart,
|
|
OverloadStartIEs_t *overloadStartIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_OverloadResponse,
|
|
Criticality_reject,
|
|
&asn_DEF_OverloadResponse,
|
|
&overloadStartIEs->overloadResponse)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&overloadStart->overloadStart_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_nasnondeliveryindicationies(
|
|
NASNonDeliveryIndication_t *nasNonDeliveryIndication,
|
|
NASNonDeliveryIndicationIEs_t *nasNonDeliveryIndicationIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&nasNonDeliveryIndicationIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&nasNonDeliveryIndication->nasNonDeliveryIndication_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&nasNonDeliveryIndicationIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&nasNonDeliveryIndication->nasNonDeliveryIndication_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_NAS_PDU,
|
|
Criticality_ignore,
|
|
&asn_DEF_NAS_PDU,
|
|
&nasNonDeliveryIndicationIEs->nas_pdu)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&nasNonDeliveryIndication->nasNonDeliveryIndication_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&nasNonDeliveryIndicationIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&nasNonDeliveryIndication->nasNonDeliveryIndication_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_handovercancelacknowledgeies(
|
|
HandoverCancelAcknowledge_t *handoverCancelAcknowledge,
|
|
HandoverCancelAcknowledgeIEs_t *handoverCancelAcknowledgeIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&handoverCancelAcknowledgeIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverCancelAcknowledge->handoverCancelAcknowledge_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&handoverCancelAcknowledgeIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverCancelAcknowledge->handoverCancelAcknowledge_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((handoverCancelAcknowledgeIEs->presenceMask & HANDOVERCANCELACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== HANDOVERCANCELACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&handoverCancelAcknowledgeIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverCancelAcknowledge->handoverCancelAcknowledge_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_enbstatustransferies(
|
|
ENBStatusTransfer_t *eNBStatusTransfer,
|
|
ENBStatusTransferIEs_t *enbStatusTransferIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&enbStatusTransferIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&eNBStatusTransfer->eNBStatusTransfer_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&enbStatusTransferIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&eNBStatusTransfer->eNBStatusTransfer_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_StatusTransfer_TransparentContainer,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_StatusTransfer_TransparentContainer,
|
|
&enbStatusTransferIEs->eNB_StatusTransfer_TransparentContainer)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&eNBStatusTransfer->eNBStatusTransfer_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_handovercancelies(
|
|
HandoverCancel_t *handoverCancel,
|
|
HandoverCancelIEs_t *handoverCancelIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&handoverCancelIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverCancel->handoverCancel_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&handoverCancelIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverCancel->handoverCancel_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&handoverCancelIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverCancel->handoverCancel_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabreleaseresponseies(
|
|
E_RABReleaseResponse_t *e_RABReleaseResponse,
|
|
E_RABReleaseResponseIEs_t *e_RABReleaseResponseIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&e_RABReleaseResponseIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseResponse->e_RABReleaseResponse_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&e_RABReleaseResponseIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseResponse->e_RABReleaseResponse_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((e_RABReleaseResponseIEs->presenceMask & E_RABRELEASERESPONSEIES_E_RABRELEASELISTBEARERRELCOMP_PRESENT)
|
|
== E_RABRELEASERESPONSEIES_E_RABRELEASELISTBEARERRELCOMP_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABReleaseListBearerRelComp,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABReleaseListBearerRelComp,
|
|
&e_RABReleaseResponseIEs->e_RABReleaseListBearerRelComp)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseResponse->e_RABReleaseResponse_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((e_RABReleaseResponseIEs->presenceMask & E_RABRELEASERESPONSEIES_E_RABLIST_PRESENT)
|
|
== E_RABRELEASERESPONSEIES_E_RABLIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABFailedToReleaseList,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABList,
|
|
&e_RABReleaseResponseIEs->e_RABFailedToReleaseList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseResponse->e_RABReleaseResponse_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((e_RABReleaseResponseIEs->presenceMask & E_RABRELEASERESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== E_RABRELEASERESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&e_RABReleaseResponseIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseResponse->e_RABReleaseResponse_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_uecontextreleaserequesties(
|
|
UEContextReleaseRequest_t *ueContextReleaseRequest,
|
|
UEContextReleaseRequestIEs_t *ueContextReleaseRequestIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&ueContextReleaseRequestIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextReleaseRequest->ueContextReleaseRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&ueContextReleaseRequestIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextReleaseRequest->ueContextReleaseRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&ueContextReleaseRequestIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&ueContextReleaseRequest->ueContextReleaseRequest_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_tracestarties(
|
|
TraceStart_t *traceStart,
|
|
TraceStartIEs_t *traceStartIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&traceStartIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&traceStart->traceStart_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&traceStartIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&traceStart->traceStart_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TraceActivation,
|
|
Criticality_ignore,
|
|
&asn_DEF_TraceActivation,
|
|
&traceStartIEs->traceActivation)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&traceStart->traceStart_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_mmeconfigurationtransferies(
|
|
MMEConfigurationTransfer_t *mmeConfigurationTransfer,
|
|
MMEConfigurationTransferIEs_t *mmeConfigurationTransferIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
/* Optional field */
|
|
if ((mmeConfigurationTransferIEs->presenceMask & MMECONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFER_PRESENT)
|
|
== MMECONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFER_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SONConfigurationTransferMCT,
|
|
Criticality_ignore,
|
|
&asn_DEF_SONConfigurationTransfer,
|
|
&mmeConfigurationTransferIEs->sonConfigurationTransferMCT)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&mmeConfigurationTransfer->mmeConfigurationTransfer_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_tracefailureindicationies(
|
|
TraceFailureIndication_t *traceFailureIndication,
|
|
TraceFailureIndicationIEs_t *traceFailureIndicationIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&traceFailureIndicationIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&traceFailureIndication->traceFailureIndication_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&traceFailureIndicationIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&traceFailureIndication->traceFailureIndication_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_UTRAN_Trace_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_UTRAN_Trace_ID,
|
|
&traceFailureIndicationIEs->e_UTRAN_Trace_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&traceFailureIndication->traceFailureIndication_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&traceFailureIndicationIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&traceFailureIndication->traceFailureIndication_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_initialcontextsetupfailureies(
|
|
InitialContextSetupFailure_t *initialContextSetupFailure,
|
|
InitialContextSetupFailureIEs_t *initialContextSetupFailureIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&initialContextSetupFailureIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupFailure->initialContextSetupFailure_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&initialContextSetupFailureIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupFailure->initialContextSetupFailure_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&initialContextSetupFailureIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupFailure->initialContextSetupFailure_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((initialContextSetupFailureIEs->presenceMask & INITIALCONTEXTSETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== INITIALCONTEXTSETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&initialContextSetupFailureIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&initialContextSetupFailure->initialContextSetupFailure_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_errorindicationies(
|
|
ErrorIndication_t *errorIndication,
|
|
ErrorIndicationIEs_t *errorIndicationIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
/* Optional field */
|
|
if ((errorIndicationIEs->presenceMask & ERRORINDICATIONIES_MME_UE_S1AP_ID_PRESENT)
|
|
== ERRORINDICATIONIES_MME_UE_S1AP_ID_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&errorIndicationIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&errorIndication->errorIndication_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((errorIndicationIEs->presenceMask & ERRORINDICATIONIES_ENB_UE_S1AP_ID_PRESENT)
|
|
== ERRORINDICATIONIES_ENB_UE_S1AP_ID_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&errorIndicationIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&errorIndication->errorIndication_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((errorIndicationIEs->presenceMask & ERRORINDICATIONIES_CAUSE_PRESENT)
|
|
== ERRORINDICATIONIES_CAUSE_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&errorIndicationIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&errorIndication->errorIndication_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((errorIndicationIEs->presenceMask & ERRORINDICATIONIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== ERRORINDICATIONIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&errorIndicationIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&errorIndication->errorIndication_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_handovernotifyies(
|
|
HandoverNotify_t *handoverNotify,
|
|
HandoverNotifyIEs_t *handoverNotifyIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&handoverNotifyIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverNotify->handoverNotify_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&handoverNotifyIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverNotify->handoverNotify_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_EUTRAN_CGI,
|
|
Criticality_ignore,
|
|
&asn_DEF_EUTRAN_CGI,
|
|
&handoverNotifyIEs->eutran_cgi)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverNotify->handoverNotify_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TAI,
|
|
Criticality_ignore,
|
|
&asn_DEF_TAI,
|
|
&handoverNotifyIEs->tai)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverNotify->handoverNotify_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_downlinks1cdma2000tunnelingies(
|
|
DownlinkS1cdma2000tunneling_t *downlinkS1cdma2000tunneling,
|
|
DownlinkS1cdma2000tunnelingIEs_t *downlinkS1cdma2000tunnelingIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&downlinkS1cdma2000tunnelingIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkS1cdma2000tunneling->downlinkS1cdma2000tunneling_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&downlinkS1cdma2000tunnelingIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkS1cdma2000tunneling->downlinkS1cdma2000tunneling_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((downlinkS1cdma2000tunnelingIEs->presenceMask & DOWNLINKS1CDMA2000TUNNELINGIES_E_RABDATAFORWARDINGLIST_PRESENT)
|
|
== DOWNLINKS1CDMA2000TUNNELINGIES_E_RABDATAFORWARDINGLIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABSubjecttoDataForwardingList,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABDataForwardingList,
|
|
&downlinkS1cdma2000tunnelingIEs->e_RABSubjecttoDataForwardingList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkS1cdma2000tunneling->downlinkS1cdma2000tunneling_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((downlinkS1cdma2000tunnelingIEs->presenceMask & DOWNLINKS1CDMA2000TUNNELINGIES_CDMA2000HOSTATUS_PRESENT)
|
|
== DOWNLINKS1CDMA2000TUNNELINGIES_CDMA2000HOSTATUS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_cdma2000HOStatus,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cdma2000HOStatus,
|
|
&downlinkS1cdma2000tunnelingIEs->cdma2000HOStatus)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkS1cdma2000tunneling->downlinkS1cdma2000tunneling_ies.list, ie);
|
|
}
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_cdma2000RATType,
|
|
Criticality_reject,
|
|
&asn_DEF_Cdma2000RATType,
|
|
&downlinkS1cdma2000tunnelingIEs->cdma2000RATType)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkS1cdma2000tunneling->downlinkS1cdma2000tunneling_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_cdma2000PDU,
|
|
Criticality_reject,
|
|
&asn_DEF_Cdma2000PDU,
|
|
&downlinkS1cdma2000tunnelingIEs->cdma2000PDU)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkS1cdma2000tunneling->downlinkS1cdma2000tunneling_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_mmeconfigurationupdateacknowledgeies(
|
|
MMEConfigurationUpdateAcknowledge_t *mmeConfigurationUpdateAcknowledge,
|
|
MMEConfigurationUpdateAcknowledgeIEs_t *mmeConfigurationUpdateAcknowledgeIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
/* Optional field */
|
|
if ((mmeConfigurationUpdateAcknowledgeIEs->presenceMask & MMECONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== MMECONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&mmeConfigurationUpdateAcknowledgeIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&mmeConfigurationUpdateAcknowledge->mmeConfigurationUpdateAcknowledge_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_handoverrequestacknowledgeies(
|
|
HandoverRequestAcknowledge_t *handoverRequestAcknowledge,
|
|
HandoverRequestAcknowledgeIEs_t *handoverRequestAcknowledgeIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&handoverRequestAcknowledgeIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequestAcknowledge->handoverRequestAcknowledge_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&handoverRequestAcknowledgeIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequestAcknowledge->handoverRequestAcknowledge_ies.list, ie);
|
|
|
|
E_RABAdmittedList_t e_RABAdmittedList;
|
|
|
|
memset(&e_RABAdmittedList, 0, sizeof(E_RABAdmittedList_t));
|
|
|
|
if (s1ap_encode_e_rabadmittedlist(&e_RABAdmittedList, &handoverRequestAcknowledgeIEs->e_RABAdmittedList) < 0) return -1;
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABAdmittedList,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABAdmittedList,
|
|
&e_RABAdmittedList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequestAcknowledge->handoverRequestAcknowledge_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((handoverRequestAcknowledgeIEs->presenceMask & HANDOVERREQUESTACKNOWLEDGEIES_E_RABFAILEDTOSETUPLISTHOREQACK_PRESENT)
|
|
== HANDOVERREQUESTACKNOWLEDGEIES_E_RABFAILEDTOSETUPLISTHOREQACK_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABFailedToSetupListHOReqAck,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABFailedtoSetupListHOReqAck,
|
|
&handoverRequestAcknowledgeIEs->e_RABFailedToSetupListHOReqAck)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequestAcknowledge->handoverRequestAcknowledge_ies.list, ie);
|
|
}
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Target_ToSource_TransparentContainer,
|
|
Criticality_reject,
|
|
&asn_DEF_Target_ToSource_TransparentContainer,
|
|
&handoverRequestAcknowledgeIEs->target_ToSource_TransparentContainer)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequestAcknowledge->handoverRequestAcknowledge_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((handoverRequestAcknowledgeIEs->presenceMask & HANDOVERREQUESTACKNOWLEDGEIES_CSG_ID_PRESENT)
|
|
== HANDOVERREQUESTACKNOWLEDGEIES_CSG_ID_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CSG_Id,
|
|
Criticality_ignore,
|
|
&asn_DEF_CSG_Id,
|
|
&handoverRequestAcknowledgeIEs->csG_Id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequestAcknowledge->handoverRequestAcknowledge_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((handoverRequestAcknowledgeIEs->presenceMask & HANDOVERREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== HANDOVERREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&handoverRequestAcknowledgeIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&handoverRequestAcknowledge->handoverRequestAcknowledge_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabsetuprequesties(
|
|
E_RABSetupRequest_t *e_RABSetupRequest,
|
|
E_RABSetupRequestIEs_t *e_RABSetupRequestIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&e_RABSetupRequestIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABSetupRequest->e_RABSetupRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&e_RABSetupRequestIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABSetupRequest->e_RABSetupRequest_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((e_RABSetupRequestIEs->presenceMask & E_RABSETUPREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT)
|
|
== E_RABSETUPREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_uEaggregateMaximumBitrate,
|
|
Criticality_reject,
|
|
&asn_DEF_UEAggregateMaximumBitrate,
|
|
&e_RABSetupRequestIEs->uEaggregateMaximumBitrate)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABSetupRequest->e_RABSetupRequest_ies.list, ie);
|
|
}
|
|
|
|
E_RABToBeSetupListBearerSUReq_t e_RABToBeSetupListBearerSUReq;
|
|
|
|
memset(&e_RABToBeSetupListBearerSUReq, 0, sizeof(E_RABToBeSetupListBearerSUReq_t));
|
|
|
|
if (s1ap_encode_e_rabtobesetuplistbearersureq(&e_RABToBeSetupListBearerSUReq, &e_RABSetupRequestIEs->e_RABToBeSetupListBearerSUReq) < 0) return -1;
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABToBeSetupListBearerSUReq,
|
|
Criticality_reject,
|
|
&asn_DEF_E_RABToBeSetupListBearerSUReq,
|
|
&e_RABToBeSetupListBearerSUReq)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABSetupRequest->e_RABSetupRequest_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_downlinkueassociatedlppatransporties(
|
|
DownlinkUEAssociatedLPPaTransport_t *downlinkUEAssociatedLPPaTransport,
|
|
DownlinkUEAssociatedLPPaTransportIEs_t *downlinkUEAssociatedLPPaTransportIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&downlinkUEAssociatedLPPaTransportIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkUEAssociatedLPPaTransport->downlinkUEAssociatedLPPaTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&downlinkUEAssociatedLPPaTransportIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkUEAssociatedLPPaTransport->downlinkUEAssociatedLPPaTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Routing_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_Routing_ID,
|
|
&downlinkUEAssociatedLPPaTransportIEs->routing_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkUEAssociatedLPPaTransport->downlinkUEAssociatedLPPaTransport_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_LPPa_PDU,
|
|
Criticality_reject,
|
|
&asn_DEF_LPPa_PDU,
|
|
&downlinkUEAssociatedLPPaTransportIEs->lpPa_PDU)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&downlinkUEAssociatedLPPaTransport->downlinkUEAssociatedLPPaTransport_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_killrequesties(
|
|
KillRequest_t *killRequest,
|
|
KillRequestIEs_t *killRequestIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MessageIdentifier,
|
|
Criticality_reject,
|
|
&asn_DEF_MessageIdentifier,
|
|
&killRequestIEs->messageIdentifier)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&killRequest->killRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SerialNumber,
|
|
Criticality_reject,
|
|
&asn_DEF_SerialNumber,
|
|
&killRequestIEs->serialNumber)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&killRequest->killRequest_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((killRequestIEs->presenceMask & KILLREQUESTIES_WARNINGAREALIST_PRESENT)
|
|
== KILLREQUESTIES_WARNINGAREALIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_WarningAreaList,
|
|
Criticality_ignore,
|
|
&asn_DEF_WarningAreaList,
|
|
&killRequestIEs->warningAreaList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&killRequest->killRequest_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabmodifyresponseies(
|
|
E_RABModifyResponse_t *e_RABModifyResponse,
|
|
E_RABModifyResponseIEs_t *e_RABModifyResponseIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&e_RABModifyResponseIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABModifyResponse->e_RABModifyResponse_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_ignore,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&e_RABModifyResponseIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABModifyResponse->e_RABModifyResponse_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((e_RABModifyResponseIEs->presenceMask & E_RABMODIFYRESPONSEIES_E_RABMODIFYLISTBEARERMODRES_PRESENT)
|
|
== E_RABMODIFYRESPONSEIES_E_RABMODIFYLISTBEARERMODRES_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABModifyListBearerModRes,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABModifyListBearerModRes,
|
|
&e_RABModifyResponseIEs->e_RABModifyListBearerModRes)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABModifyResponse->e_RABModifyResponse_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((e_RABModifyResponseIEs->presenceMask & E_RABMODIFYRESPONSEIES_E_RABLIST_PRESENT)
|
|
== E_RABMODIFYRESPONSEIES_E_RABLIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABFailedToModifyList,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABList,
|
|
&e_RABModifyResponseIEs->e_RABFailedToModifyList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABModifyResponse->e_RABModifyResponse_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((e_RABModifyResponseIEs->presenceMask & E_RABMODIFYRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== E_RABMODIFYRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&e_RABModifyResponseIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABModifyResponse->e_RABModifyResponse_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabreleaseindicationies(
|
|
E_RABReleaseIndication_t *e_RABReleaseIndication,
|
|
E_RABReleaseIndicationIEs_t *e_RABReleaseIndicationIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&e_RABReleaseIndicationIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseIndication->e_RABReleaseIndication_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&e_RABReleaseIndicationIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseIndication->e_RABReleaseIndication_ies.list, ie);
|
|
|
|
E_RABList_t e_RABReleasedList;
|
|
|
|
memset(&e_RABReleasedList, 0, sizeof(E_RABList_t));
|
|
|
|
if (s1ap_encode_e_rablist(&e_RABReleasedList, &e_RABReleaseIndicationIEs->e_RABReleasedList) < 0) return -1;
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABReleasedList,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABList,
|
|
&e_RABReleasedList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseIndication->e_RABReleaseIndication_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_enbconfigurationupdatefailureies(
|
|
ENBConfigurationUpdateFailure_t *eNBConfigurationUpdateFailure,
|
|
ENBConfigurationUpdateFailureIEs_t *enbConfigurationUpdateFailureIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&enbConfigurationUpdateFailureIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&eNBConfigurationUpdateFailure->eNBConfigurationUpdateFailure_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((enbConfigurationUpdateFailureIEs->presenceMask & ENBCONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT)
|
|
== ENBCONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TimeToWait,
|
|
Criticality_ignore,
|
|
&asn_DEF_TimeToWait,
|
|
&enbConfigurationUpdateFailureIEs->timeToWait)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&eNBConfigurationUpdateFailure->eNBConfigurationUpdateFailure_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((enbConfigurationUpdateFailureIEs->presenceMask & ENBCONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== ENBCONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&enbConfigurationUpdateFailureIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&eNBConfigurationUpdateFailure->eNBConfigurationUpdateFailure_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_writereplacewarningrequesties(
|
|
WriteReplaceWarningRequest_t *writeReplaceWarningRequest,
|
|
WriteReplaceWarningRequestIEs_t *writeReplaceWarningRequestIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MessageIdentifier,
|
|
Criticality_reject,
|
|
&asn_DEF_MessageIdentifier,
|
|
&writeReplaceWarningRequestIEs->messageIdentifier)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningRequest->writeReplaceWarningRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_SerialNumber,
|
|
Criticality_reject,
|
|
&asn_DEF_SerialNumber,
|
|
&writeReplaceWarningRequestIEs->serialNumber)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningRequest->writeReplaceWarningRequest_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((writeReplaceWarningRequestIEs->presenceMask & WRITEREPLACEWARNINGREQUESTIES_WARNINGAREALIST_PRESENT)
|
|
== WRITEREPLACEWARNINGREQUESTIES_WARNINGAREALIST_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_WarningAreaList,
|
|
Criticality_ignore,
|
|
&asn_DEF_WarningAreaList,
|
|
&writeReplaceWarningRequestIEs->warningAreaList)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningRequest->writeReplaceWarningRequest_ies.list, ie);
|
|
}
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_RepetitionPeriod,
|
|
Criticality_reject,
|
|
&asn_DEF_RepetitionPeriod,
|
|
&writeReplaceWarningRequestIEs->repetitionPeriod)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningRequest->writeReplaceWarningRequest_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((writeReplaceWarningRequestIEs->presenceMask & WRITEREPLACEWARNINGREQUESTIES_EXTENDEDREPETITIONPERIOD_PRESENT)
|
|
== WRITEREPLACEWARNINGREQUESTIES_EXTENDEDREPETITIONPERIOD_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_ExtendedRepetitionPeriod,
|
|
Criticality_reject,
|
|
&asn_DEF_ExtendedRepetitionPeriod,
|
|
&writeReplaceWarningRequestIEs->extendedRepetitionPeriod)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningRequest->writeReplaceWarningRequest_ies.list, ie);
|
|
}
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_NumberofBroadcastRequest,
|
|
Criticality_reject,
|
|
&asn_DEF_NumberofBroadcastRequest,
|
|
&writeReplaceWarningRequestIEs->numberofBroadcastRequest)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningRequest->writeReplaceWarningRequest_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((writeReplaceWarningRequestIEs->presenceMask & WRITEREPLACEWARNINGREQUESTIES_WARNINGTYPE_PRESENT)
|
|
== WRITEREPLACEWARNINGREQUESTIES_WARNINGTYPE_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_WarningType,
|
|
Criticality_ignore,
|
|
&asn_DEF_WarningType,
|
|
&writeReplaceWarningRequestIEs->warningType)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningRequest->writeReplaceWarningRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((writeReplaceWarningRequestIEs->presenceMask & WRITEREPLACEWARNINGREQUESTIES_WARNINGSECURITYINFO_PRESENT)
|
|
== WRITEREPLACEWARNINGREQUESTIES_WARNINGSECURITYINFO_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_WarningSecurityInfo,
|
|
Criticality_ignore,
|
|
&asn_DEF_WarningSecurityInfo,
|
|
&writeReplaceWarningRequestIEs->warningSecurityInfo)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningRequest->writeReplaceWarningRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((writeReplaceWarningRequestIEs->presenceMask & WRITEREPLACEWARNINGREQUESTIES_DATACODINGSCHEME_PRESENT)
|
|
== WRITEREPLACEWARNINGREQUESTIES_DATACODINGSCHEME_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_DataCodingScheme,
|
|
Criticality_ignore,
|
|
&asn_DEF_DataCodingScheme,
|
|
&writeReplaceWarningRequestIEs->dataCodingScheme)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningRequest->writeReplaceWarningRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((writeReplaceWarningRequestIEs->presenceMask & WRITEREPLACEWARNINGREQUESTIES_WARNINGMESSAGECONTENTS_PRESENT)
|
|
== WRITEREPLACEWARNINGREQUESTIES_WARNINGMESSAGECONTENTS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_WarningMessageContents,
|
|
Criticality_ignore,
|
|
&asn_DEF_WarningMessageContents,
|
|
&writeReplaceWarningRequestIEs->warningMessageContents)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningRequest->writeReplaceWarningRequest_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((writeReplaceWarningRequestIEs->presenceMask & WRITEREPLACEWARNINGREQUESTIES_CONCURRENTWARNINGMESSAGEINDICATOR_PRESENT)
|
|
== WRITEREPLACEWARNINGREQUESTIES_CONCURRENTWARNINGMESSAGEINDICATOR_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_ConcurrentWarningMessageIndicator,
|
|
Criticality_reject,
|
|
&asn_DEF_ConcurrentWarningMessageIndicator,
|
|
&writeReplaceWarningRequestIEs->concurrentWarningMessageIndicator)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&writeReplaceWarningRequest->writeReplaceWarningRequest_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_s1setupfailureies(
|
|
S1SetupFailure_t *s1SetupFailure,
|
|
S1SetupFailureIEs_t *s1SetupFailureIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Cause,
|
|
Criticality_ignore,
|
|
&asn_DEF_Cause,
|
|
&s1SetupFailureIEs->cause)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&s1SetupFailure->s1SetupFailure_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((s1SetupFailureIEs->presenceMask & S1SETUPFAILUREIES_TIMETOWAIT_PRESENT)
|
|
== S1SETUPFAILUREIES_TIMETOWAIT_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TimeToWait,
|
|
Criticality_ignore,
|
|
&asn_DEF_TimeToWait,
|
|
&s1SetupFailureIEs->timeToWait)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&s1SetupFailure->s1SetupFailure_ies.list, ie);
|
|
}
|
|
|
|
/* Optional field */
|
|
if ((s1SetupFailureIEs->presenceMask & S1SETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT)
|
|
== S1SETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
|
|
Criticality_ignore,
|
|
&asn_DEF_CriticalityDiagnostics,
|
|
&s1SetupFailureIEs->criticalityDiagnostics)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&s1SetupFailure->s1SetupFailure_ies.list, ie);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabmodifyrequesties(
|
|
E_RABModifyRequest_t *e_RABModifyRequest,
|
|
E_RABModifyRequestIEs_t *e_RABModifyRequestIEs) {
|
|
|
|
IE_t *ie;
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_MME_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_MME_UE_S1AP_ID,
|
|
&e_RABModifyRequestIEs->mme_ue_s1ap_id)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABModifyRequest->e_RABModifyRequest_ies.list, ie);
|
|
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_eNB_UE_S1AP_ID,
|
|
Criticality_reject,
|
|
&asn_DEF_ENB_UE_S1AP_ID,
|
|
&e_RABModifyRequestIEs->eNB_UE_S1AP_ID)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABModifyRequest->e_RABModifyRequest_ies.list, ie);
|
|
|
|
/* Optional field */
|
|
if ((e_RABModifyRequestIEs->presenceMask & E_RABMODIFYREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT)
|
|
== E_RABMODIFYREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_uEaggregateMaximumBitrate,
|
|
Criticality_reject,
|
|
&asn_DEF_UEAggregateMaximumBitrate,
|
|
&e_RABModifyRequestIEs->uEaggregateMaximumBitrate)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABModifyRequest->e_RABModifyRequest_ies.list, ie);
|
|
}
|
|
|
|
E_RABToBeModifiedListBearerModReq_t e_RABToBeModifiedListBearerModReq;
|
|
|
|
memset(&e_RABToBeModifiedListBearerModReq, 0, sizeof(E_RABToBeModifiedListBearerModReq_t));
|
|
|
|
if (s1ap_encode_e_rabtobemodifiedlistbearermodreq(&e_RABToBeModifiedListBearerModReq, &e_RABModifyRequestIEs->e_RABToBeModifiedListBearerModReq) < 0) return -1;
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABToBeModifiedListBearerModReq,
|
|
Criticality_reject,
|
|
&asn_DEF_E_RABToBeModifiedListBearerModReq,
|
|
&e_RABToBeModifiedListBearerModReq)) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABModifyRequest->e_RABModifyRequest_ies.list, ie);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabtobesetuplistbearersureq(
|
|
E_RABToBeSetupListBearerSUReq_t *e_RABToBeSetupListBearerSUReq,
|
|
E_RABToBeSetupListBearerSUReqIEs_t *e_RABToBeSetupListBearerSUReqIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABToBeSetupListBearerSUReqIEs->e_RABToBeSetupItemBearerSUReq.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABToBeSetupItemBearerSUReq,
|
|
Criticality_reject,
|
|
&asn_DEF_E_RABToBeSetupItemBearerSUReq,
|
|
e_RABToBeSetupListBearerSUReqIEs->e_RABToBeSetupItemBearerSUReq.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABToBeSetupListBearerSUReq->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_ue_associatedlogicals1_connectionlistresack(
|
|
UE_associatedLogicalS1_ConnectionListResAck_t *uE_associatedLogicalS1_ConnectionListResAck,
|
|
UE_associatedLogicalS1_ConnectionListResAckIEs_t *uE_associatedLogicalS1_ConnectionListResAckIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < uE_associatedLogicalS1_ConnectionListResAckIEs->uE_associatedLogicalS1_ConnectionItemResAck.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_UE_associatedLogicalS1_ConnectionItem,
|
|
Criticality_ignore,
|
|
&asn_DEF_UE_associatedLogicalS1_ConnectionItem,
|
|
uE_associatedLogicalS1_ConnectionListResAckIEs->uE_associatedLogicalS1_ConnectionItemResAck.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uE_associatedLogicalS1_ConnectionListResAck->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_tailist(
|
|
TAIList_t *taiList,
|
|
TAIListIEs_t *taiListIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < taiListIEs->taiItem.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_TAIItem,
|
|
Criticality_ignore,
|
|
&asn_DEF_TAIItem,
|
|
taiListIEs->taiItem.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&taiList->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabadmittedlist(
|
|
E_RABAdmittedList_t *e_RABAdmittedList,
|
|
E_RABAdmittedListIEs_t *e_RABAdmittedListIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABAdmittedListIEs->e_RABAdmittedItem.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABAdmittedItem,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABAdmittedItem,
|
|
e_RABAdmittedListIEs->e_RABAdmittedItem.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABAdmittedList->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rablist(
|
|
E_RABList_t *e_RABList,
|
|
E_RABListIEs_t *e_RABListIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABListIEs->e_RABItem.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABItem,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABItem,
|
|
e_RABListIEs->e_RABItem.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABList->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabtobesetuplisthoreq(
|
|
E_RABToBeSetupListHOReq_t *e_RABToBeSetupListHOReq,
|
|
E_RABToBeSetupListHOReqIEs_t *e_RABToBeSetupListHOReqIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABToBeSetupListHOReqIEs->e_RABToBeSetupItemHOReq.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABToBeSetupItemHOReq,
|
|
Criticality_reject,
|
|
&asn_DEF_E_RABToBeSetupItemHOReq,
|
|
e_RABToBeSetupListHOReqIEs->e_RABToBeSetupItemHOReq.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABToBeSetupListHOReq->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabsetuplistbearersures(
|
|
E_RABSetupListBearerSURes_t *e_RABSetupListBearerSURes,
|
|
E_RABSetupListBearerSUResIEs_t *e_RABSetupListBearerSUResIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABSetupListBearerSUResIEs->e_RABSetupItemBearerSURes.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABSetupItemBearerSURes,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABSetupItemBearerSURes,
|
|
e_RABSetupListBearerSUResIEs->e_RABSetupItemBearerSURes.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABSetupListBearerSURes->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabtobesetuplistctxtsureq(
|
|
E_RABToBeSetupListCtxtSUReq_t *e_RABToBeSetupListCtxtSUReq,
|
|
E_RABToBeSetupListCtxtSUReqIEs_t *e_RABToBeSetupListCtxtSUReqIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABToBeSetupListCtxtSUReqIEs->e_RABToBeSetupItemCtxtSUReq.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABToBeSetupItemCtxtSUReq,
|
|
Criticality_reject,
|
|
&asn_DEF_E_RABToBeSetupItemCtxtSUReq,
|
|
e_RABToBeSetupListCtxtSUReqIEs->e_RABToBeSetupItemCtxtSUReq.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABToBeSetupListCtxtSUReq->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabsetuplistctxtsures(
|
|
E_RABSetupListCtxtSURes_t *e_RABSetupListCtxtSURes,
|
|
E_RABSetupListCtxtSUResIEs_t *e_RABSetupListCtxtSUResIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABSetupListCtxtSUResIEs->e_RABSetupItemCtxtSURes.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABSetupItemCtxtSURes,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABSetupItemCtxtSURes,
|
|
e_RABSetupListCtxtSUResIEs->e_RABSetupItemCtxtSURes.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABSetupListCtxtSURes->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabinformationlist(
|
|
E_RABInformationList_t *e_RABInformationList,
|
|
E_RABInformationListIEs_t *e_RABInformationListIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABInformationListIEs->e_RABInformationItem.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABInformationListItem,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABInformationListItem,
|
|
e_RABInformationListIEs->e_RABInformationItem.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABInformationList->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabreleaselistbearerrelcomp(
|
|
E_RABReleaseListBearerRelComp_t *e_RABReleaseListBearerRelComp,
|
|
E_RABReleaseListBearerRelCompIEs_t *e_RABReleaseListBearerRelCompIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABReleaseListBearerRelCompIEs->e_RABReleaseItemBearerRelComp.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABReleaseItemBearerRelComp,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABReleaseItemBearerRelComp,
|
|
e_RABReleaseListBearerRelCompIEs->e_RABReleaseItemBearerRelComp.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABReleaseListBearerRelComp->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabtobemodifiedlistbearermodreq(
|
|
E_RABToBeModifiedListBearerModReq_t *e_RABToBeModifiedListBearerModReq,
|
|
E_RABToBeModifiedListBearerModReqIEs_t *e_RABToBeModifiedListBearerModReqIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABToBeModifiedListBearerModReqIEs->e_RABToBeModifiedItemBearerModReq.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABToBeModifiedItemBearerModReq,
|
|
Criticality_reject,
|
|
&asn_DEF_E_RABToBeModifiedItemBearerModReq,
|
|
e_RABToBeModifiedListBearerModReqIEs->e_RABToBeModifiedItemBearerModReq.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABToBeModifiedListBearerModReq->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabtobeswitcheddllist(
|
|
E_RABToBeSwitchedDLList_t *e_RABToBeSwitchedDLList,
|
|
E_RABToBeSwitchedDLListIEs_t *e_RABToBeSwitchedDLListIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABToBeSwitchedDLListIEs->e_RABToBeSwitchedDLItem.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABToBeSwitchedDLItem,
|
|
Criticality_reject,
|
|
&asn_DEF_E_RABToBeSwitchedDLItem,
|
|
e_RABToBeSwitchedDLListIEs->e_RABToBeSwitchedDLItem.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABToBeSwitchedDLList->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_bearers_subjecttostatustransfer_list(
|
|
Bearers_SubjectToStatusTransfer_List_t *bearers_SubjectToStatusTransfer_List,
|
|
Bearers_SubjectToStatusTransfer_ListIEs_t *bearers_SubjectToStatusTransfer_ListIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < bearers_SubjectToStatusTransfer_ListIEs->bearers_SubjectToStatusTransfer_Item.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_Bearers_SubjectToStatusTransfer_Item,
|
|
Criticality_ignore,
|
|
&asn_DEF_Bearers_SubjectToStatusTransfer_Item,
|
|
bearers_SubjectToStatusTransfer_ListIEs->bearers_SubjectToStatusTransfer_Item.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&bearers_SubjectToStatusTransfer_List->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabtobeswitchedullist(
|
|
E_RABToBeSwitchedULList_t *e_RABToBeSwitchedULList,
|
|
E_RABToBeSwitchedULListIEs_t *e_RABToBeSwitchedULListIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABToBeSwitchedULListIEs->e_RABToBeSwitchedULItem.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABToBeSwitchedULItem,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABToBeSwitchedULItem,
|
|
e_RABToBeSwitchedULListIEs->e_RABToBeSwitchedULItem.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABToBeSwitchedULList->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabdataforwardinglist(
|
|
E_RABDataForwardingList_t *e_RABDataForwardingList,
|
|
E_RABDataForwardingListIEs_t *e_RABDataForwardingListIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABDataForwardingListIEs->e_RABDataForwardingItem.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABDataForwardingItem,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABDataForwardingItem,
|
|
e_RABDataForwardingListIEs->e_RABDataForwardingItem.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABDataForwardingList->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabmodifylistbearermodres(
|
|
E_RABModifyListBearerModRes_t *e_RABModifyListBearerModRes,
|
|
E_RABModifyListBearerModResIEs_t *e_RABModifyListBearerModResIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABModifyListBearerModResIEs->e_RABModifyItemBearerModRes.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABModifyItemBearerModRes,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABModifyItemBearerModRes,
|
|
e_RABModifyListBearerModResIEs->e_RABModifyItemBearerModRes.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABModifyListBearerModRes->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_ue_associatedlogicals1_connectionlistres(
|
|
UE_associatedLogicalS1_ConnectionListRes_t *uE_associatedLogicalS1_ConnectionListRes,
|
|
UE_associatedLogicalS1_ConnectionListResIEs_t *uE_associatedLogicalS1_ConnectionListResIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < uE_associatedLogicalS1_ConnectionListResIEs->uE_associatedLogicalS1_ConnectionItemRes.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_UE_associatedLogicalS1_ConnectionItem,
|
|
Criticality_reject,
|
|
&asn_DEF_UE_associatedLogicalS1_ConnectionItem,
|
|
uE_associatedLogicalS1_ConnectionListResIEs->uE_associatedLogicalS1_ConnectionItemRes.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&uE_associatedLogicalS1_ConnectionListRes->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int s1ap_encode_e_rabfailedtosetuplisthoreqack(
|
|
E_RABFailedtoSetupListHOReqAck_t *e_RABFailedtoSetupListHOReqAck,
|
|
E_RABFailedtoSetupListHOReqAckIEs_t *e_RABFailedtoSetupListHOReqAckIEs) {
|
|
|
|
int i;
|
|
IE_t *ie;
|
|
|
|
for (i = 0; i < e_RABFailedtoSetupListHOReqAckIEs->e_RABFailedtoSetupItemHOReqAck.count; i++) {
|
|
if ((ie = s1ap_new_ie(ProtocolIE_ID_id_E_RABFailedtoSetupItemHOReqAck,
|
|
Criticality_ignore,
|
|
&asn_DEF_E_RABFailedToSetupItemHOReqAck,
|
|
e_RABFailedtoSetupListHOReqAckIEs->e_RABFailedtoSetupItemHOReqAck.array[i])) == NULL) {
|
|
return -1;
|
|
}
|
|
ASN_SEQUENCE_ADD(&e_RABFailedtoSetupListHOReqAck->list, ie);
|
|
}
|
|
return 0;
|
|
}
|
|
|